- 사전 요구 사항
- OpenShift 클러스터 프로비저닝
- 리포지토리 포크
- 환경 설정
- OpenShift 클러스터 설정
- 저장소 설정
- RedHat Connect 포털에서 프로젝트 설정
- 파이프라인 설정
- 번들 생성
- 제출용 번들 주석 달기
- 변경 사항 복사 및 푸시
- 인증 파이프라인 실행
- 정리
RedHat Operator Bundle 인증 프로세스
이 문서는 RedHat Marketplace를 위한 OLM 번들 제출을 위한 인증 프로세스를 개요합니다. 이는 Red Hat Software Certification Workflow Guide를 기반으로 합니다.
아래 프로세스는 전체 설정에 대해 인증합니다.
사전 요구 사항
- GitHub 계정이 필요합니다.
- 개인 계정을 사용할 수 있습니다.
- 서비스 계정(예:
gl-distribution-oc
)을 사용할 수 있습니다.- 적절한 작업을 위해 SSH 키 페어가 필요합니다.
-
편리를 위해
operator_certification.sh
를 사용할 수 있습니다 (gldoc_github
를 자신의 키 이름으로 바꿉니다):#!/bin/sh OC_SSH_KEYFILE=${OC_SSH_KEYFILE:-"${HOME}/.ssh/gldoc_github"} export GIT_SSH_COMMAND="ssh -i ${OC_SSH_KEYFILE} -o IdentitiesOnly=yes" exec $@
-
olm-bundle.sh
사전 요구 사항:task
operator-sdk
yq
opm
OpenShift 클러스터 프로비저닝
기존 클러스터를 확인하십시오. 이미 설정된 클러스터가 있을 수 있습니다.
기존 OpenShift 클러스터가 필요합니다. 이미 프로비저닝된 OpenShift 클러스터를 사용하는 경우 단계를 조정하세요. 클러스터에 설치해야 할 필수 구성 요소:
-
cert-manager
(Operator 필수 사항) - OpenShift Pipelines (인증 파이프라인 요구사항)
- (옵션)
external-dns
(CI에서 필수입니다)
OpenShift 프로비저닝 파이프라인
새로운 OpenShift 클러스터를 프로비저닝하는 한 가지 방법은 OpenShift 프로비저닝 파이프라인을 사용하는 것입니다.
파이프라인은 클러스터에 대한 인증 정보와 모든 필요한 이진 파일을 포함하는 편리한 artifact를 생성합니다. deploy_cluster
작업에서 생성된 artifact의 Zip 파일을 다운로드하여 편리한 위치(${HOME}/mycluster
)에 압축 해제합니다.
BASEDIR=${HOME}/mycluster
OC=${BASEDIR}/bin/oc-x.y.z
TKN=${BASEDIR}/bin/tkn
KUBECONFIG=${BASEDIR}/x.y.z/auth/kubeconfig
export OC TKN KUBECONFIG
수동 프로비저닝
새 클러스터를 프로비저닝하려면 OpenShift 설치 문서를 따르세요. 다음 사항을 추출하고 보전하세요:
- OCP 릴리스에 해당하는
oc
바이너리- RedHat 파일 미러 참조
- 릴리스와 호환되는
tkn
바이너리 다운로드- 예: 4.9 릴리스에 대한 릴리스 노트 참조
- Chapter 21. Running the certification test suite locally - Pre-requisites의 사전 요구 사항 참조
- Tekton CD requirements 참조
- 설치 루트 디렉토리 아래의
auth
디렉토리의 내용
OC=/path/to/oc
TKN=/path/to/tkn
KUBECONFIG=/path/to/kubeconfig
export OC TKN KUBECONFIG
리포지토리 포크
다음 중 하나를 포크해야 합니다:
현재의 GitHub 사용자를 위해 사용하세요.
배포 키 생성
빈 암호구문으로 SSH 키 페어를 생성하세요:
ssh-keygen -f certified-operators-key
포크한 리포지토리를 위해 Deploy Keys
를 생성하세요 (Settings
/Deploy keys
/Add new
을 클릭하여 해당 리포지토리에 추가하세요) 그리고 certified-operators-key.pub
를 추가하세요.
환경 설정
위의 설정과 나중에 필요한 설정을 사용하여 쉘 설정을 위해 my.env
파일을 생성하는 것이 유용할 수 있습니다:
VERSION="0.11.0"
# 파이프라인
export KUBECONFIG=/path/to/secure/location/kubeconfig
CLUSTER_DIR=/path/to/clusters/clusterX
export OC=${CLUSTER_DIR}/bin/oc-x.y.z
export TKN=${CLUSTER_DIR}/bin/tkn
# RH Connect 포털에서 Pyxis API 키를 생성하거나 1Password(operator-secrets.yaml)에서 찾으세요
export PYXIS_API_KEY_FILE=pyxis-key-operator-bundle.txt
# 포크된 리포지토리에 대한 배포 키(위의 "리포지토리 포크" 섹션 참조)
# 대안으로 'gl-distribution-oc'를 사용하는 경우 1Password(GitHub Operator Certification deploy key)에서 얻으세요
export SSH_KEY_FILE=gl-distribution-oc/gl-distribution-oc-deploy
# 포크된 리포지토리에 대한 GitHub API 키(위의 "리포지토리 포크" 섹션 참조)
# 대안으로 'gl-distribution-oc'를 사용하는 경우 1Password(GitHub Operator Certification API token)에서 얻으세요
export GITHUB_TOKEN_FILE=gl-distribution-oc/gh-token.txt
# 아래 섹션은 'gl-distribution-oc' GitHub 사용자를 기준으로 작성되었습니다
# 다른 GitHub 계정을 사용하는 경우에는 해당 설정을 조정하세요
export GIT_USERNAME="gl-distribution-oc"
export GIT_EMAIL="dmakovey+operator-certification@gitlab.com"
export GIT_FORK_REPO_URL="git@github.com:gl-distribution-oc/certified-operators.git"
export GIT_BRANCH="gitlab-operator-kubernetes-${VERSION}"
# 상위 스트림 리포지토리 내의 오퍼레이터 번들 경로
export OPERATOR_BUNDLE_PATH="operators/gitlab-operator-kubernetes/${VERSION}"
참고 여기에서는 기본적으로 gl-distribution-oc
사용자를 사용합니다. 다른 사용자로 설정하려면 위의 설정을 조정하세요.
다음 명령을 실행하기 전에 반드시 my.env
파일을 소스로 지정합니다:
source my.env
OpenShift 클러스터 설정
redhat/operator-certification/scripts/operator_certification_pipeline.sh \
create_cluster_infra
redhat/operator-certification/scripts/install_oco.sh create_manifest \
apply_manifest
저장소 설정
API 토큰 (PAT) 생성
GitHub에서 프로필 설정으로 이동하여 Developer settings
/Personal access tokens
로 이동하고 repo
범위로 새로운(“클래식”) 토큰을 생성합니다. 이를 안전한 위치의 로컬 파일(${HOME}/secure/github_api_token.txt
)에 저장합니다.
참고 이 시점에서 이 토큰은 GitHub 사용자의 모든 저장소에 액세스할 수 있습니다.
저장소 복제
REPO_HOME=${HOME}
pushd ${REPO_HOME}
git clone git@github.com:<YOUR-GITHUB-ACCOUNT>/certified-operators.git
git checkout -b gitlab-operator-kubernetes-${VERSION}
popd
향후 참조를 위해 환경변수 CATALOG_REPO_CLONE
을 추가합니다:
export CATALOG_REPO_CLONE=${REPO_HOME}/certified-operators
RedHat Connect 포털에서 프로젝트 설정
Gitlab Operator Bundle
로 이동한 후 설정
탭을 엽니다.
GitHub 사용자를 Authorized GitHub user accounts
에 추가합니다.
파이프라인 설정
사전 요구 사항
-
프로비저닝된 OpenShift 클러스터가 있어야 합니다:
- 연결된
kubeconfig
파일($KUBECONFIG
) - 연결된
tkn
이진 파일($TKN
) - 연결된
oc
이진 파일($OC
)
- 연결된
- GitHub PAT(
$GITHUB_TOKEN_FILE
)- 1Password: GitHub API 토큰 참조
- RedHat에서 얻은 Pyxis API 토큰(
$PYXIS_API_KEY_FILE
)- 1Password:
operator-secrets.yaml
에서 추출해야 함
- 1Password:
- SSH 키 쌍(
$SSH_KEY_FILE
- 개인 키 파일)- fork된 프로젝트에 “배포 키”로 추가되어 있어야 함
- 1Password: GitHub 배포 키 참조
참고 $GITHUB_TOKEN_FILE
및 $PYXIS_API_KEY_FILE
파일이 줄 바꿈 문자(0x0a
)를 포함하지 않도록 합니다:
hexdump -C $GITHUB_TOKEN_FILE
hexdump -C $PYXIS_API_KEY_FILE
그런 다음 시크릿을 생성하고 파이프라인을 설치합니다:
GITHUB_TOKEN_FILE=/path/to/github_token.txt \
PYXIS_API_KEY_FILE=/path/to/pyxis_api_key.txt \
SSH_KEY_FILE=/path/to/certified-operators-key \
KUBECONFIG="${BASEDIR}/auth/kubeconfig" \
redhat/operator-certification/scripts/operator_certification_pipeline.sh create_secrets install_pipeline_automated create_workspace_template
번들 생성
OSDK_BASE_DIR=".build/cert" \
DOCKER="podman" \
OLM_PACKAGE_VERSION=${VERSION} \
OPERATOR_TAG=${VERSION} \
scripts/olm_bundle.sh build_manifests generate_bundle patch_bundle
제출용 번들 주석 달기
BUNDLE_DIR=.build/cert/bundle \
redhat/operator-certification/scripts/configure_bundle.sh adjust_annotations adjust_csv
변경 사항 복사 및 푸시
이 시점에서 번들을 새 위치로 복사해야 합니다 (CATALOG_REPO_CLONE
값을 fork된 저장소에서 필요합니다):
cp -r .build/cert/bundle ${CATALOG_REPO_CLONE}/operators/gitlab-operator-kubernetes/${VERSION}
( cd ${CATALOG_REPO_CLONE} && git add operators/gitlab-operator-kubernetes/${VERSION} \
&& git commit -am "Add gitlab-operator-${VERSION}" \
&& git push origin gitlab-operator-kubernetes-${VERSION})
인증 파이프라인 실행
이 단계에서는 GitHub 사용자 이름 및 이메일을 얻어야 하며 각각 GIT_USERNAME
및 GIT_EMAIL
에 사용해야 합니다.
redhat/operator-certification/scripts/operator_certification_pipeline.sh \
run_certification_pipeline_automated
이렇게 하면 upstream PR이 생성되고 RH 포털에서 제출이 열립니다.
참고 출력에 아래 내용이 표시되면
ValueError: Invalid header value b'Bearer XXXXXXXXXXXXXXXXXXXXXXX\n'
- 어느 시크릿에 원치 않는 줄바꿈이 포함되어 있는 것으로 보입니다:
pyxis-api-secret
또는github-api-token
. 오류 내용을 통해 어떤 것인지 확인할 수 있습니다.
정리
파이프라인이 완료된 후에는 개인 중심의 시크릿을 삭제하는 것이 좋습니다:
redhat/operator-certification/scripts/operator_certification_pipeline.sh cleanup_secrets