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 を使用して使用するように設定されたクラスターをインストールするには、次の手順を実行します。
- Cloud Credential Operator ユーティリティーを設定します。
- 必要な GCP リソースを作成します。
- OpenShift Container Platform インストーラーを実行します。
- クラスターが有効期限の短い認証情報を使用していることを確認します。
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-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、権限を変更して
ccoctlを実行可能にします。chmod 775 ccoctl
$ chmod 775 ccoctlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
ccoctlが使用できることを確認するには、help ファイルを表示します。コマンドを実行するときは、相対ファイル名を使用します。以下に例を示します。./ccoctl.rhel9
$ ./ccoctl.rhel9Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
19.6.2.2. Cloud Credential Operator ユーティリティーを使用した Google Cloud リソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
ccoctl gcp create-all コマンドを使用して、Google Cloud リソースの作成を自動化できます。
デフォルトで、ccoctl はコマンドが実行されるディレクトリーにオブジェクトを作成します。オブジェクトを別のディレクトリーに作成するには、--output-dir フラグを使用します。この手順では、<path_to_ccoctl_output_dir> を使用してこの場所を参照します。
前提条件
以下が必要になります。
-
ccoctlバイナリーを展開して準備した。
手順
以下のコマンドを実行して、
$RELEASE_IMAGE変数を設定します。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 リリースイメージから
CredentialsRequestオブジェクトのリストを抽出します。oc adm release extract \ --from=$RELEASE_IMAGE \ --credentials-requests \ --cloud=gcp \ --to=<path_to_directory_with_list_of_credentials_requests>/credrequests
$ oc adm release extract \ --from=$RELEASE_IMAGE \ --credentials-requests \ --cloud=gcp \ --to=<path_to_directory_with_list_of_credentials_requests>/credrequests1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
credrequestsは、CredentialsRequestオブジェクトのリストが格納されるディレクトリーです。ディレクトリーが存在しない場合、このコマンドはディレクトリーを作成します。
注記このコマンドの実行には少し時間がかかる場合があります。
クラスターでクラスター機能を使用して 1 つ以上のオプションコンポーネントを無効にする場合は、無効なコンポーネントの
CredentialsRequestカスタムリソースを削除します。Google Cloud 上の OpenShift Container Platform 4.13 の
credrequestsディレクトリーの内容の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Cloud Controller Manager Operator CR が必要です。
- 2
TechPreviewNoUpgrade機能セットを使用するクラスターの場合、Cluster API Operator CR が必要です。- 3
- Machine API Operator CR が必要です。
- 4
- Cloud Credential Operator CR が必要です。
- 5
- Image Registry Operator CR が必要です。
- 6
- Ingress Operator CR が必要です。
- 7
- Network Operator CR が必要です。
- 8
- Storage Operator CR はオプションのコンポーネントであり、クラスターで無効になっている場合があります。
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>/credrequestsCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
-
&
lt;name> は、追跡に使用される、作成されたすべての Google Cloud リソースのユーザー定義名です。 -
クラウドリソース
が作成される Google Cloud リージョンです。 -
クラウドリソース
が作成される Google Cloud プロジェクト ID です。 -
<path_to_directory_with_list_of_credentials_requests>/credrequestsは、Google Cloud サービスアカウントを作成するためのCredentialsRequestマニフェストのファイルを含むディレクトリーです。
注記クラスターで
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>/manifestsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Google Cloud にクエリーを実行すると、IAM サービスアカウントが作成されていることを確認できます。詳細については、IAM サービスアカウントの一覧表示に関する Google Cloud のドキュメントを参照してください。
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 manifestsCopy 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 clusterCopy 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-credentialsCopy 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 foundCopy 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 -dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力には、コンポーネントによって使用されるロールおよび Web アイデンティティートークンが表示され、以下のように表示されるはずです。
Image Registry Operator を使用した出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow