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クラスターのプロビジョニング

前提条件

  1. gl-distribution-oc GitHub アカウントに追加された個人用 SSH キー (${HOME}/.ssh/gldoc_github にローカルコピーがある場合、以下を参照)
  2. 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 $@
    
  3. olm-bundle.sh 前提条件
    1. task
    2. operator-sdk
    3. yq
    4. 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

リポジトリの設定

リポジトリのフォーク

認証オペレータとマーケットプレイスオペレータのフォークがすでに作成されています:

note
以下のoperator_certification.sh ラッパースクリプトの使用は任意です。
  1. フォークをローカルにクローンします:

    pushd ${HOME}
    operator_certification.sh git clone git@github.com:gl-distribution-oc/certified-operators.git
    
  2. フォークのmain ブランチを最新の状態にします:

    git remote add upstream git@github.com:redhat-openshift-ecosystem/certified-operators.git
    git rebase -i upstream/main
    operator_certification.sh git push
    
  3. リリース用に新しいブランチを作成します:

    git checkout -b gitlab-operator-kubernetes-${VERSION}
    CATALOG_REPO_CLONE=${HOME}/certified-operators
    
  4. 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_USERNAMEGIT_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ポータルで投稿が開始されます。