- 前提条件
- 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
(オペレーション要件) - OpenShiftパイプライン(認証パイプライン要件)
- (オプション)
external-dns
(CIでは必須)
OpenShift-プロビジョニングパイプライン
新しいOpenShiftクラスターをプロビジョニングする1つの方法は、OpenShift-provisioningパイプラインを使用することです。
パイプラインは、クラスターの認証情報と必要なバイナリを含む便利なアーティファクトを作成します。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 インストールドキュメントに従って、新しいクラスターをプロビジョニングします。必ず展開して保存してください:
-
oc
OCPリリースに対応するバイナリのセットアップ - リリースと互換性のある
tkn
バイナリをダウンロードします。- リリースのドキュメント、例えば4.9 のリリースノート
- 第21章の前提条件のセクション。認証テスト・スイートのローカルでの実行
- Teknton CDの要件
- インストール・ルート・ディレクトリの下にある
auth
ディレクトリの内部。
OC=/path/to/oc
TKN=/path/to/tkn
KUBECONFIG=/path/to/kubeconfig
export OC TKN KUBECONFIG
フォークレポ
のいずれかをフォークする必要があります:
を指定します。
GitHub UI を使ってフォークを作成します。
デプロイキーの作成
空のパスフレーズでSSHキーペアを作成します:
ssh-keygen -f certified-operators-key
for forked repo createDeploy Keys
(Settings
/Deploy keys
/Add new
for the repo)
を追加しcertified-operators-key.pub
環境設定
上記のいくつかの設定と後で必要になる設定を使って、Shellセットアップ用のmy.env
ファイルを作成すると便利です:
VERSION="0.11.0"
# Pipeline
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
# Generate Pyxis API key in RH Connect portal, or locate one in
# 1Password (operator-secrets.yaml)
export PYXIS_API_KEY_FILE=pyxis-key-operator-bundle.txt
# Deployment key for the forked repo (see "Fork repo" section)
# alternatively, is using 'gl-distribution-oc' - obtain from
# 1Password (GitHub Operator Certification deploy key)
export SSH_KEY_FILE=gl-distribution-oc/gl-distribution-oc-deploy
# GitHub API key for the forked repo (see "Fork repo" section)
# alternatively, is using 'gl-distribution-oc' - obtain from
# 1Pasword (GitHub Operator Certification API token)
export GITHUB_TOKEN_FILE=gl-distribution-oc/gh-token.txt
# Below section is written assuming 'gl-distribution-oc' GitHub user
# if using different GitHub account - adjust accordingly
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}"
# Path within upstream repo to operator bundle
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
に移動し、Settings
タブを開きます。
に 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
- 秘密鍵ファイル)- フォークしたプロジェクトに「デプロイ鍵」として追加
- 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
の値が必要です):
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