This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.19.6. GCP ワークロード ID で手動モードを使用する
Google Cloud Platform (GCP) では、GCP ワークロード ID を使用した手動モードがサポートされています。
このクレデンシャルストラテジーは、新しい OpenShift Container Platform クラスターでのみサポートされており、インストール中に設定する必要があります。この機能を使用するために、既存のクラスターが別のクレデンシャルストラテジーを使用するように再設定することはできません。
19.6.1. GCP Workload ID の手動モードについて リンクのコピーリンクがクリップボードにコピーされました!
GCP ワークロード ID を使用する手動モードでは、個々の OpenShift Container Platform クラスターコンポーネントは、短期間の限定された特権のクレデンシャルを使用して IAM サービスアカウントを偽装できます。
新しい認証情報と更新された認証情報の要求は、適切に設定された OpenID Connect (OIDC) ID プロバイダーと IAM サービスアカウントを組み合わせて使用することで自動化されます。GCP によって信頼されているサービスアカウントトークンは、OpenShift Container Platform によって署名されており、Pod に展開して認証に使用できます。トークンは 1 時間後に更新されます。
図19.3 Workload ID の認証フロー
GCP Workload Identity で手動モードを使用すると、個々の OpenShift Container Platform コンポーネントに提供される GCP クレデンシャルのコンテンツが変更されます。
GCP シークレットフォーマット
長期間有効なクレデンシャルを使用した Base64 でエンコードされた service_account.json
ファイルのコンテンツ
GCP Workload Identity を使用した Base64 でエンコードされた service_account.json
ファイルのコンテンツ
19.6.2. GCP Workload Identity ID を使用して手動モード用に設定された OpenShift Container Platform クラスターのインストール リンクのコピーリンクがクリップボードにコピーされました!
Cloud Credential Operator (CCO) を手動モードで GCP Workload Identity を使用して使用するように設定されたクラスターをインストールするには、次の手順を実行します。
GCP Workload Identity を使用している場合、クラスターは手動モードで動作しているため、必要な権限を持つコンポーネントの新しい認証情報を作成できません。OpenShift Container Platform の別のマイナーバージョンにアップグレードする際に、GCP パーミッションの要件が加わることがよくあります。GCP Workload Identity を使用しているクラスターをアップグレードする前に、クラスター管理者は、GCP 権限が既存のコンポーネントに対して十分であり、新しいコンポーネントで利用できることを手動で確認する必要があります。
19.6.2.1. Cloud Credential Operator ユーティリティーの設定 リンクのコピーリンクがクリップボードにコピーされました!
Cloud Credential Operator (CCO) が手動モードで動作しているときにクラスターの外部からクラウドクレデンシャルを作成および管理するには、CCO ユーティリティー (ccoctl
) バイナリーを抽出して準備します。
ccoctl
ユーティリティーは、Linux 環境で実行する必要がある Linux バイナリーです。
前提条件
- クラスター管理者のアクセスを持つ OpenShift Container Platform アカウントを使用できる。
-
OpenShift CLI (
oc
) がインストールされている。
手順
以下のコマンドを実行して、OpenShift Container Platform リリースイメージを取得します。
RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
$ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、OpenShift Container Platform リリースイメージから CCO コンテナーイメージを取得します。
CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret)
$ CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記$RELEASE_IMAGE
のアーキテクチャーが、ccoctl
ツールを使用する環境のアーキテクチャーと一致していることを確認してください。以下のコマンドを実行して、OpenShift Container Platform リリースイメージ内の CCO コンテナーイメージから
ccoctl
バイナリーを抽出します。oc image extract $CCO_IMAGE --file="/usr/bin/ccoctl" -a ~/.pull-secret
$ oc image extract $CCO_IMAGE --file="/usr/bin/ccoctl" -a ~/.pull-secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、権限を変更して
ccoctl
を実行可能にします。chmod 775 ccoctl
$ chmod 775 ccoctl
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
ccoctl
を使用する準備ができていることを確認するには、次のコマンドを実行してヘルプファイルを表示します。ccoctl --help
$ ccoctl --help
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ccoctl --help
の出力Copy to Clipboard Copied! Toggle word wrap Toggle overflow
19.6.2.2. Cloud Credential Operator ユーティリティーを使用した GCP リソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
ccoctl gcp create-all
コマンドを使用して、GCP リソースの作成を自動化できます。
デフォルトで、ccoctl
はコマンドが実行されるディレクトリーにオブジェクトを作成します。オブジェクトを別のディレクトリーに作成するには、--output-dir
フラグを使用します。この手順では、<path_to_ccoctl_output_dir>
を使用してこの場所を参照します。
前提条件
以下が必要になります。
-
ccoctl
バイナリーを抽出して準備している。
手順
以下のコマンドを実行して、OpenShift Container Platform リリースイメージから
CredentialsRequest
オブジェクトのリストを抽出します。oc adm release extract \ --credentials-requests \ --cloud=gcp \ --to=<path_to_directory_with_list_of_credentials_requests>/credrequests \ quay.io/<path_to>/ocp-release:<version>
$ oc adm release extract \ --credentials-requests \ --cloud=gcp \ --to=<path_to_directory_with_list_of_credentials_requests>/credrequests \
1 quay.io/<path_to>/ocp-release:<version>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
credrequests
は、CredentialsRequest
オブジェクトのリストが格納されるディレクトリーです。ディレクトリーが存在しない場合、このコマンドはディレクトリーを作成します。
注記このコマンドの実行には少し時間がかかる場合があります。
クラスターでクラスター機能を使用して 1 つ以上のオプションコンポーネントを無効にする場合は、無効なコンポーネントの
CredentialsRequest
カスタムリソースを削除します。GPC 上の OpenShift Container Platform 4.12 の
credrequests
ディレクトリーの内容の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow ccoctl
ツールを使用して、credrequests
ディレクトリーですべてのCredentialsRequest
オブジェクトを処理します。ccoctl gcp create-all \ --name=<name> \ --region=<gcp_region> \ --project=<gcp_project_id> \ --credentials-requests-dir=<path_to_directory_with_list_of_credentials_requests>/credrequests
$ ccoctl gcp create-all \ --name=<name> \ --region=<gcp_region> \ --project=<gcp_project_id> \ --credentials-requests-dir=<path_to_directory_with_list_of_credentials_requests>/credrequests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
-
<name>
は、トラッキングに使用される、作成されたすべての GCP リソースのユーザー定義名です。 -
<gcp_region>
は、クラウドリソースが作成される GCP リージョンです。 -
<gcp_project_id>
は、クラウドリソースが作成される GCP プロジェクト ID です。 -
<path_to_directory_with_list_of_credentials_requests>/credrequests
は、GCP サービスアカウントを作成するためのCredentials Request
マニフェストのファイルを含むディレクトリーです。
注記クラスターで
TechPreviewNoUpgrade
機能セットによって有効化されたテクノロジープレビュー機能を使用している場合は、--enable-tech-preview
パラメーターを含める必要があります。-
検証
OpenShift Container Platform シークレットが作成されることを確認するには、
<path_to_ccoctl_output_dir>/manifests
ディレクトリーのファイルを一覧表示します。ls <path_to_ccoctl_output_dir>/manifests
$ ls <path_to_ccoctl_output_dir>/manifests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
GCP にクエリーを実行すると、IAM サービスアカウントが作成されていることを確認できます。詳細については、IAM サービスアカウントのリスト表示に関する GCP のドキュメントを参照してください。
19.6.2.3. インストーラーの実行 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- クラスターをホストするクラウドプラットフォームでアカウントを設定します。
- OpenShift Container Platform リリースイメージを取得します。
手順
インストールプログラムが含まれるディレクトリーに切り替え、
install-config.yaml
ファイルを作成します。openshift-install create install-config --dir <installation_directory>
$ openshift-install create install-config --dir <installation_directory>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
<installation_directory>
は、インストールプログラムがファイルを作成するディレクトリーに置き換えます。install-config.yaml
設定ファイルを編集し、credentialsMode
パラメーターがManual
に設定されるようにします。サンプル
install-config.yaml
設定ファイルCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- この行は、
credentialsMode
パラメーターをManual
に設定するために追加されます。
必要な OpenShift Container Platform インストールマニフェストを作成します。
openshift-install create manifests
$ openshift-install create manifests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ccoctl
によって生成されたマニフェストを、インストールプログラムが作成した manifests ディレクトリーにコピーします。cp /<path_to_ccoctl_output_dir>/manifests/* ./manifests/
$ cp /<path_to_ccoctl_output_dir>/manifests/* ./manifests/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ccoctl
がtls
ディレクトリーに生成したプライベートキーをインストールディレクトリーにコピーします。cp -a /<path_to_ccoctl_output_dir>/tls .
$ cp -a /<path_to_ccoctl_output_dir>/tls .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform インストーラーを実行します。
./openshift-install create cluster
$ ./openshift-install create cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
19.6.2.4. インストールの検証 リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift Container Platform クラスターに接続します。
クラスターに
root
認証情報がないことを確認します。oc get secrets -n kube-system gcp-credentials
$ oc get secrets -n kube-system gcp-credentials
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力は以下のようになります。
Error from server (NotFound): secrets "gcp-credentials" not found
Error from server (NotFound): secrets "gcp-credentials" not found
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンポーネントが、CCO によって作成される認証情報を使用するのではなく、シークレットマニフェストで指定されたサービスアカウントを持つことを確認します。
Image Registry Operator を使用したコマンドの例
oc get secrets -n openshift-image-registry installer-cloud-credentials -o json | jq -r '.data."service_account.json"' | base64 -d
$ oc get secrets -n openshift-image-registry installer-cloud-credentials -o json | jq -r '.data."service_account.json"' | base64 -d
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力には、コンポーネントによって使用されるロールおよび Web アイデンティティートークンが表示され、以下のように表示されるはずです。
Image Registry Operator を使用した出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow