- 사전 요구 사항
- 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 Requirement) - OpenShift Pipelines (Certification pipeline requirement)
- (옵션)
external-dns
(CI에서 필수)
OpenShift 프로비저닝 파이프라인
새 OpenShift 클러스터를 프로비저닝하는 한 가지 방법은 OpenShift-provisioning pipeline을 사용하는 것입니다.
파이프라인은 클러스터에 대한 인증 정보와 모든 필수 바이너리가 포함된 편리한 아티팩트를 생성합니다. deploy_cluster
작업에서 생성된 아티팩트의 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 릴리스 노트
- 21장. 인증 테스트 스위트를 로컬에서 실행하기 위한 사전 요구 사항의 사전 요구 사항 섹션
- Tekton CD 요구 사항
- 설치 루트 디렉터리 아래의
auth
디렉터리 내용
OC=/path/to/oc
TKN=/path/to/tkn
KUBECONFIG=/path/to/kubeconfig
export OC TKN KUBECONFIG
리포지토리 포크
다음 중 하나를 포크해야 합니다:
현재 GitHub 사용자에 대해.
GitHub UI를 사용하여 포크 생성
배포 키 생성
빈 암호구문으로 SSH 키 쌍 생성:
ssh-keygen -f certified-operators-key
포크된 리포지토리에 대해 Deploy Keys
(Settings
/Deploy keys
/Add new
for the repo)를 생성하고 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
# 포크된 리포지토리에 대한 배포 키 ( "Fork repo" 섹션 참조)
# 또는 'gl-distribution-oc' 사용 -
# 1Password( GitHub Operator Certification deploy key)에서 얻기
export SSH_KEY_FILE=gl-distribution-oc/gl-distribution-oc-deploy
# 포크된 리포지토리에 대한 GitHub API 키
# ( "Fork repo" 섹션 참조)
# 또는 '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에서 프로필 설정으로 이동하여 개발자 설정
/개인 액세스 토큰
에서 범위 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 사용자 계정
에 GitHub 사용자를 추가합니다.
파이프라인 설정
사전 요건
-
프로비저닝된 OpenShift 클러스터를 보유하고 있어야 하며:
- 관련된
kubeconfig
파일 ($KUBECONFIG
) - 관련된
tkn
바이너리 ($TKN
) - 관련된
oc
바이너리 ($OC
)
- 관련된
- GitHub PAT (
$GITHUB_TOKEN_FILE
)- 1Password: GitHub API 토큰을 찾으세요
- RedHat에서 얻은 Pyxis API Token (
$PYXIS_API_KEY_FILE
)- 1Password:
operator-secrets.yaml
에서 추출해야 합니다
- 1Password:
- SSH 키 쌍 (
$SSH_KEY_FILE
- 개인 키 파일)- 포크된 프로젝트에 “배포 키”로 추가됨
- 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 PREVIOUS_OPERATOR_VERSION="x.y.z" \
redhat/operator-certification/scripts/configure_bundle.sh adjust_annotations adjust_csv
포크된 리포지토리에 변경 사항 복사 및 푸시
이 단계에서는 번들을 새 위치로 복사해야 합니다 (CATALOG_REPO_CLONE
의 값을 포크 리포지토리에서 가져와야 함):
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
이 명령은 업스트림 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