21.3. OpenShift Operator パイプラインのインストール
前提条件
OpenShift クラスターの管理者権限。
手順
OpenShift Operator パイプラインは、次の 2 つの方法でインストールできます。
- 自動化されたプロセス (Red Hat 推奨プロセス)
- 手動プロセス
21.3.1. 自動化されたプロセス リンクのコピーリンクがクリップボードにコピーされました!
Red Hat は、OpenShift Operator Pipeline のインストールに自動プロセスを使用することを推奨しています。自動化されたプロセスにより、CI パイプラインを実行する前にクラスターが適切に設定されていることが保証されます。このプロセスは、Operator をクラスターにインストールします。これにより、手動による介入を必要とせずに、すべての CI パイプラインタスクを自動的に更新できます。このプロセスは、同じクラスター内で多くの Operator を繰り返しテストできるマルチテナントシナリオもサポートします。
以下のステップに従って、Operator を介して OpenShift Operator パイプラインをインストールします。
Operator パイプラインをインストールする前に、Operator バンドルのソースファイルを準備しておいてください。
21.3.1.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Operator パイプラインをインストールする前に、ターミナルウィンドウで以下のコマンドを実行して、すべての前提条件を設定します。
Operator はすべての名前空間を監視します。したがって、secrets/configs/etc がすでに別の名前空間に存在する場合は、既存の名前空間を使用して Operator Pipeline をインストールできます。
新規の namespace を作成します。
oc new-project ocokubeconfig環境変数を設定します。export KUBECONFIG=/path/to/your/cluster/kubeconfig注記この
kubeconfig変数は、テスト対象の Operator をデプロイし、認定チェックを実行するために使用されます。oc create secret generic kubeconfig --from-file=kubeconfig=$KUBECONFIG認定結果を送信するには、次のコマンドを実行します。
プルリクエストが作成されるリポジトリーに github API トークンを追加します。
oc create secret generic github-api-token --from-literal GITHUB_TOKEN=<github token>RedHat Container API アクセスキーを追加します。
oc create secret generic pyxis-api-secret --from-literal pyxis_api_key=< API KEY >この API アクセスキーは、Red Hat Partner Connect ポータルの一意のパートナーアカウントに特に関連しています。
ベアメタルで OpenShift クラスターを実行するための前提条件:
ベアメタルで OpenShift クラスターを実行している場合、Operator パイプラインを実行するには 5Gi 永続ボリュームが必要です。次の yaml テンプレートは、ローカルストレージを使用して 5Gi 永続ボリュームを作成するのに役立ちます。
以下に例を示します。
apiVersion: v1 kind: PersistentVolume metadata: name: my-local-pv spec: capacity: storage: 5Gi volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVoumeReclaimPolicy: Delete local: path: /dev/vda4 ← use a path from your cluster nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - crc-8k6jw-master-0 ← use the name of one of your cluster’s nodeCI パイプラインは、テストと検証のために、Operator バンドルイメージとバンドルイメージインデックスを自動的に構築します。デフォルトでは、パイプラインはクラスター上の OpenShift Container Registry にイメージを作成します。
ベアメタルでこのレジストリーを使用するには、パイプラインを実行する前に内部イメージレジストリーを設定します。内部イメージレジストリーの設定の詳細な手順は、イメージレジストリーストレージの設定 を参照してください。
外部のプライベートレジストリーを使用する場合は、シークレットを追加して、アクセス資格情報をクラスターに提供します。詳細な手順については、プライベートコンテナーレジストリーの使用 を参照してください。
21.3.1.2. Operator を介したパイプラインのインストール リンクのコピーリンクがクリップボードにコピーされました!
次の手順に従って、Operator をクラスターに追加します。
Operator Certification Operator をインストールします。
- OpenShift クラスターコンソールにログインします。
-
メインメニューから、Operators
OperatorHubに移動します。 - All Items - Filter by keyword フィルター/検索ボックスでフィルターに Operator Certification Operator と入力します。
- 表示されたら、Operator Certification Operator タイルを選択します。Operator Certification Operator ページが表示されます。
- Install をクリックします。Install Operator Web ページが表示されます。
- 下にスクロールして、インストール をクリックします。
- 演算子の表示 をクリックして、インストールを確認します。
新しくインストールされた Operator パイプラインにカスタムリソースを適用します。
- OpenShift Cluster Console にログインします。
- プロジェクト ドロップダウンメニューから、カスタムリソースを適用するプロジェクトを選択します。
Operator Pipeline を展開し、Create instance をクリックします。
Operator パイプラインの作成 画面には、デフォルト値が自動的に入力されます。
注記前提条件 に従って、すべてのリソース名を作成した場合は、デフォルト値を変更する必要はありません。
- Create をクリックします。
カスタムリソースが作成され、Operator が調整を開始します。
検証手順
カスタムリソースの条件を確認してください。
- OpenShift クラスターコンソールにログインします。
- Operator パイプラインカスタムリソースを新しく作成したプロジェクトに移動し、カスタムリソースをクリックします。
- 条件 セクションまで下にスクロールして、すべての ステータス 値が True に設定されているかどうかを確認します。
リソースが調整に失敗した場合は、メッセージ セクションを確認して、エラーを修正するための次の手順を特定してください。
Operator ログを確認してください。
ターミナルウィンドウで、次のコマンドを実行します。
oc get pods -n openshift-marketplacecertification-operator-controller-managerpod の完全な podman 名を記録し、次のコマンドを実行します。oc get logs -f -n openshift-marketplace <pod name> manager- Operator の調整が行われたかどうかを確認します。
21.3.1.3. パイプラインの実行 リンクのコピーリンクがクリップボードにコピーされました!
パイプラインを実行するには、tkn コマンドを実行するディレクトリーのテンプレートフォルダーに workspace-template.yml ファイルがあることを確認します。
workspace-template.yml ファイルを作成するには、ターミナルウィンドウで次のコマンドを実行します。
cat <<EOF> workspace-template.yml
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
EOF
パイプラインはさまざまな 方法 で実行できます。
21.3.2. 手動プロセス リンクのコピーリンクがクリップボードにコピーされました!
以下のステップに従って、OpenShift Operator パイプラインを手動でインストールします。
21.3.2.1. OpenShift Pipeline Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift クラスターコンソールにログインします。
- メインメニューから、Operators > OperatorHub に移動します。
- すべてのアイテム - キーワードでフィルター フィルター/検索ボックスでフィルターに OpenShift Pipelines と入力します。
- 表示されたら、Red Hat OpenShift Pipelines タイルを選択します。Red Hat パイプラインページが表示されます。
- Install をクリックします。Install Operator Web ページが表示されます。
- 下にスクロールして、インストール をクリックします。
21.3.2.2. OpenShift (oc) CLI ツールの設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスターへのアクセスを設定するために使用されるファイルは、kubeconfig ファイルと呼ばれます。これは、設定ファイルを参照する一般的な方法です。kubeconfig ファイルを使用して、クラスター、ユーザー、名前空間、および認証メカニズムに関する情報を整理します。
kubectl コマンドラインツールは、kubeconfig ファイルを使用して、クラスターを選択し、クラスターの API サーバーと通信するために必要な情報を検索します。
- ターミナルウィンドウで、KUBECONFIG 環境変数を設定します。
export KUBECONFIG=/path/to/your/cluster/kubeconfig
kubeconfig ファイルは、テスト対象の Operator をデプロイし、認定チェックを実行します。
21.3.2.3. OpenShift プロジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
新しい名前空間を作成して、パイプラインでの作業を開始します。
名前空間を作成するには、ターミナルウィンドウで次のコマンドを実行します。
oc adm new-project <my-project-name> # create the project
oc project <my-project-name> # switch into the project
デフォルトのプロジェクトまたは名前空間でパイプラインを実行しないでください。Red Hat は、パイプライン用の新しいプロジェクトを作成することをお勧めします。
21.3.2.4. kubeconfig シークレットの追加 リンクのコピーリンクがクリップボードにコピーされました!
認定パイプラインを実行しているクラスターへの認定用に、kubeconfig を含む kubernetes シークレットを作成します。認定パイプラインでは、OpenShift クラスターで Operator のテストデプロイメントを実行するために kubeconfig が必要です。
kubeconfig シークレットを追加するには、ターミナルウィンドウで次のコマンドを実行します。
oc create secret generic kubeconfig --from-file=kubeconfig=$KUBECONFIG
21.3.2.5. Red Hat カタログからの Operator のインポート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat カタログ から演算子をインポートします。
ターミナルウィンドウで、次のコマンドを実行します。
oc import-image certified-operator-index \
--from=registry.redhat.io/redhat/certified-operator-index \
--reference-policy local \
--scheduled \
--confirm \
--all
oc import-image redhat-marketplace-index \
--from=registry.redhat.io/redhat/redhat-marketplace-index \
--reference-policy local \
--scheduled \
--confirm \
--all
IBM Power cluster for ppc64le アーキテクチャーで OpenShift を使用している場合は、許可の問題を回避するために以下のコマンドを実行してください。
oc adm policy add-scc-to-user anyuid -z pipeline
このコマンドは、デフォルトのパイプラインサービスアカウントに anyuid Security Context Constraints (SCC) を付与します。
21.3.2.6. 認定パイプラインの依存関係のインストール リンクのコピーリンクがクリップボードにコピーされました!
ターミナルウィンドウで、次のコマンドを使用して、クラスターに認定パイプラインの依存関係をインストールします。
$git clone https://github.com/redhat-openshift-ecosystem/operator-pipelines
$cd operator-pipelines
$oc apply -R -f ansible/roles/operator-pipeline/templates/openshift/pipelines
$oc apply -R -f ansible/roles/operator-pipeline/templates/openshift/tasks
21.3.2.7. 認定結果を送信するためのリポジトリーの設定 リンクのコピーリンクがクリップボードにコピーされました!
ターミナルウィンドウで、次のコマンドを実行して、認定結果を送信するためのリポジトリーを設定します。
21.3.2.7.1. GitHub API トークンの追加 リンクのコピーリンクがクリップボードにコピーされました!
すべての設定を実行した後、パイプラインは自動的にプルリクエストを開いて Operator を Red Hat に送信できます。
これを機能的に有効にするには、GitHub API トークンを追加し、パイプラインの実行時に --param submit=true を使用します。
oc create secret generic github-api-token --from-literal GITHUB_TOKEN=<github token>
21.3.2.7.2. Red Hat Container API アクセスキーの追加 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat から受け取る特定のコンテナー API アクセスキーを追加します。
oc create secret generic pyxis-api-secret --from-literal pyxis_api_key=< API KEY >
21.3.2.7.3. ダイジェストの固定を有効にする リンクのコピーリンクがクリップボードにコピーされました!
このステップは、認定結果を Red Hat に送信するために必須です。
OpenShift Operator パイプラインは、バンドル内のすべてのイメージタグをイメージダイジェスト SHAs に自動的に置き換えることができます。これにより、パイプラインは、すべてのイメージの固定バージョンを使用しているかどうかを確認できます。パイプラインは、固定されたバージョンのバンドルを新しいブランチとして GitHub リポジトリーにコミットします。
この機能を有効にするには、GitHub にアクセスできる秘密鍵を秘密としてクラスターに追加します。
Base64 を使用して、バンドルを含む GitHub リポジトリーにアクセスできる秘密鍵をエンコードします。
base64 /path/to/private/keybase64 でエンコードされた秘密鍵を含むシークレットを作成します。
cat << EOF > ssh-secret.yml kind: Secret apiVersion: v1 metadata: name: github-ssh-credentials data: id_rsa: | <base64 encoded private key> EOFシークレットをクラスターに追加します。
oc create -f ssh-secret.yml
21.3.2.7.4. プライベートコンテナーレジストリーの使用 リンクのコピーリンクがクリップボードにコピーされました!
パイプラインは、テストと検証のために、Operator バンドルイメージとバンドルイメージインデックスを自動的に構築します。デフォルトでは、パイプラインはクラスター上の OpenShift Container Registry にイメージを作成します。外部プライベートレジストリーを使用する場合は、クラスターにシークレットを追加して資格情報を提供する必要があります。
oc create secret docker-registry registry-dockerconfig-secret \
--docker-server=quay.io \
--docker-username=<registry username> \
--docker-password=<registry password> \
--docker-email=<registry email>