RedHat Operator Bundle 認証プロセス
このドキュメントでは、RedHat Marketplace への OLM バンドルの提出に関する認証プロセスの概要を説明します。これは、Red Hat Software Certification Workflow Guideに基づいています。
scripts/tools/publish.sh
publish.sh ${VERSION} redhat-marketplace
を使用してこのプロセスを実行できます。詳細はスクリプトのドキュメントを参照してください。
このドキュメントでは、共通のクラスター基盤および共通の GitHub アカウント (gl-distribution-oc
) を使用しています。カスタムクラスタ/GitHubアカウントを使用する場合は、適宜調整してください。
OpenShiftクラスターのプロビジョニング
前提条件
-
gl-distribution-oc
GitHub アカウントに追加された個人用 SSH キー (${HOME}/.ssh/gldoc_github
にローカルコピーがある場合、以下を参照) -
Git オペレーションでは
gl-distribution-oc
リポジトリにアクセスするために別の SSH キーが必要になるため、(1) のキーを使ったサンプルのラッパースクリプト (operator_certification.sh
) が役立つでしょう:#!/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
環境構築
クラスターはデプロイパイプラインを使用してデプロイします。対応するクラスターのパイプラインdeploy_cluster
ジョブからアーティファクトを取得します。
VERSION="0.11.0"
# CLUSTER_DIR: directory where artifacts from "deploy_cluster" job are located
CLUSTER_DIR=${HOME}/clusters/redhat-certification-ocp49
export TKN=${CLUSTER_DIR}/bin/tkn
# Use provisioned cluster's "admin"-level kubeconfig
export KUBECONFIG=${CLUSTER_DIR}/auth/kubeconfig
export GIT_USERNAME="gl-distribution-oc"
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# Below email is our temporary workaround so use as-is until
# https://gitlab.com/gitlab-org/distribution/team-tasks/-/issues/1097
# and
# https://gitlab.com/gitlab-org/distribution/team-tasks/-/issues/1082
# are resolved
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}"
上記のShellコードを環境ファイル(my.env
など)として保存し、必要な場所でソースとして利用すると便利です:source /path/to/my.env
。
リポジトリの設定
リポジトリのフォーク
認証オペレータとマーケットプレイスオペレータのフォークがすでに作成されています:
operator_certification.sh
ラッパースクリプトの使用は任意です。-
フォークをローカルにクローンします:
pushd ${HOME} operator_certification.sh git clone git@github.com:gl-distribution-oc/certified-operators.git
-
フォークの
main
ブランチを最新の状態にします:git remote add upstream git@github.com:redhat-openshift-ecosystem/certified-operators.git git rebase -i upstream/main operator_certification.sh git push
-
リリース用に新しいブランチを作成します:
git checkout -b gitlab-operator-kubernetes-${VERSION} CATALOG_REPO_CLONE=${HOME}/certified-operators
-
gitlab-operator
ローカルディレクトリに戻ります:popd
バンドルの生成
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
の値を取得します):
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}" \
&& operator_certification.sh git push origin gitlab-operator-kubernetes-${VERSION})
認証パイプラインの実行
GitHub ユーザー名とメールアドレスはこのステップのために取得し、GIT_USERNAME
とGIT_EMAIL
で使用する必要があります。
OCPの適切なプロジェクトに切り替えます:
redhat/operator-certification/scripts/operator_certification_pipeline.sh \
set_project
職場テンプレートを作成します:
redhat/operator-certification/scripts/operator_certification_pipeline.sh \
create_workspace_template
次にパイプラインを実行します:
redhat/operator-certification/scripts/operator_certification_pipeline.sh \
run_certification_pipeline_automated
アップストリームPRが作成され、RedHatポータルで投稿が開始されます。