8.7. 管理者レベルのシークレットを kube-system プロジェクトに保存する代替方法
				デフォルトでは、管理者のシークレットは kube-system プロジェクトに保存されます。install-config.yaml ファイルの credentialsMode パラメーターを Manual に設定した場合は、次のいずれかの代替手段を使用する必要があります。
			
- 長期クラウド認証情報を手動で管理するには、長期認証情報を手動で作成する の手順に従ってください。
- クラスターの外部で管理される短期認証情報を個々のコンポーネントに対して実装するには、短期認証情報を使用するように GCP クラスターを設定する の手順に従ってください。
8.7.1. 長期認証情報を手動で作成する
					Cloud Credential Operator (CCO) は、クラウドアイデンティティーおよびアクセス管理 (IAM) API に到達できない環境にインストールする前に手動モードに配置できます。管理者はクラスター kube-system namespace に管理者レベルの認証情報シークレットを保存しないようにします。
				
手順
- インストールプログラムが使用する GCP アカウントに次の詳細な権限を追加します。 - 例8.1 必要な GCP パーミッション - compute.machineTypes.list
- compute.regions.list
- compute.zones.list
- dns.changes.create
- dns.changes.get
- dns.managedZones.create
- dns.managedZones.delete
- dns.managedZones.get
- dns.managedZones.list
- dns.networks.bindPrivateDNSZone
- dns.resourceRecordSets.create
- dns.resourceRecordSets.delete
- dns.resourceRecordSets.list
 
- install-config.yaml設定ファイルの- credentialsModeパラメーターを- Manualに設定しなかった場合は、次のように値を変更します。- 設定ファイルのサンプルスニペット - apiVersion: v1 baseDomain: example.com credentialsMode: Manual # ... - apiVersion: v1 baseDomain: example.com credentialsMode: Manual # ...- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- インストールマニフェストファイルをまだ作成していない場合は、次のコマンドを実行して作成します。 - openshift-install create manifests --dir <installation_directory> - $ openshift-install create manifests --dir <installation_directory>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ここで、 - <installation_directory>は、インストールプログラムがファイルを作成するディレクトリーに置き換えます。
- 次のコマンドを実行して、インストールファイルのリリースイメージを - $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カスタムリソース (CR) のリストを抽出します。- oc adm release extract \ --from=$RELEASE_IMAGE \ --credentials-requests \ --included \ --install-config=<path_to_directory_with_installation_configuration>/install-config.yaml \ --to=<path_to_directory_for_credentials_requests> - $ oc adm release extract \ --from=$RELEASE_IMAGE \ --credentials-requests \ --included \- 1 - --install-config=<path_to_directory_with_installation_configuration>/install-config.yaml \- 2 - --to=<path_to_directory_for_credentials_requests>- 3 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - このコマンドにより、それぞれの - CredentialsRequestオブジェクトに YAML ファイルが作成されます。- サンプル - CredentialsRequestオブジェクト- apiVersion: cloudcredential.openshift.io/v1 kind: CredentialsRequest metadata: name: <component_credentials_request> namespace: openshift-cloud-credential-operator ... spec: providerSpec: apiVersion: cloudcredential.openshift.io/v1 kind: GCPProviderSpec predefinedRoles: - roles/storage.admin - roles/iam.serviceAccountUser skipServiceCheck: true ...- apiVersion: cloudcredential.openshift.io/v1 kind: CredentialsRequest metadata: name: <component_credentials_request> namespace: openshift-cloud-credential-operator ... spec: providerSpec: apiVersion: cloudcredential.openshift.io/v1 kind: GCPProviderSpec predefinedRoles: - roles/storage.admin - roles/iam.serviceAccountUser skipServiceCheck: true ...- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 以前に生成した - openshift-installマニフェストディレクトリーにシークレットの YAML ファイルを作成します。シークレットは、それぞれの- CredentialsRequestオブジェクトについて- spec.secretRefに定義される namespace およびシークレット名を使用して保存する必要があります。- シークレットを含む - CredentialsRequestオブジェクトのサンプル- apiVersion: cloudcredential.openshift.io/v1 kind: CredentialsRequest metadata: name: <component_credentials_request> namespace: openshift-cloud-credential-operator ... spec: providerSpec: apiVersion: cloudcredential.openshift.io/v1 ... secretRef: name: <component_secret> namespace: <component_namespace> ...- apiVersion: cloudcredential.openshift.io/v1 kind: CredentialsRequest metadata: name: <component_credentials_request> namespace: openshift-cloud-credential-operator ... spec: providerSpec: apiVersion: cloudcredential.openshift.io/v1 ... secretRef: name: <component_secret> namespace: <component_namespace> ...- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - サンプル - Secretオブジェクト- apiVersion: v1 kind: Secret metadata: name: <component_secret> namespace: <component_namespace> data: service_account.json: <base64_encoded_gcp_service_account_file> - apiVersion: v1 kind: Secret metadata: name: <component_secret> namespace: <component_namespace> data: service_account.json: <base64_encoded_gcp_service_account_file>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
手動でメンテナンスされる認証情報を使用するクラスターをアップグレードする前に、CCO がアップグレード可能な状態であることを確認します。
8.7.2. 短期認証情報を使用するように GCP クラスターを設定
GCP Workload Identity を使用するように設定されたクラスターをインストールするには、CCO ユーティリティーを設定し、クラスターに必要な GCP リソースを作成する必要があります。
8.7.2.1. Cloud Credential Operator ユーティリティーの設定
						Cloud Credential Operator (CCO) が手動モードで動作しているときにクラスターの外部からクラウドクレデンシャルを作成および管理するには、CCO ユーティリティー (ccoctl) バイナリーを抽出して準備します。
					
							ccoctl ユーティリティーは、Linux 環境で実行する必要がある Linux バイナリーです。
						
前提条件
- クラスター管理者のアクセスを持つ OpenShift Container Platform アカウントを使用できる。
- 
								OpenShift CLI (oc) がインストールされている。
- ccoctlユーティリティーが使用する GCP アカウントに、次のいずれかの認証方法を追加した。- IAM Workload Identity Pool Admin ロール
- 次の詳細な権限: - 
												compute.projects.get
- 
												iam.googleapis.com/workloadIdentityPoolProviders.create
- 
												iam.googleapis.com/workloadIdentityPoolProviders.get
- 
												iam.googleapis.com/workloadIdentityPools.create
- 
												iam.googleapis.com/workloadIdentityPools.delete
- 
												iam.googleapis.com/workloadIdentityPools.get
- 
												iam.googleapis.com/workloadIdentityPools.undelete
- 
												iam.roles.create
- 
												iam.roles.delete
- 
												iam.roles.list
- 
												iam.roles.undelete
- 
												iam.roles.update
- 
												iam.serviceAccounts.create
- 
												iam.serviceAccounts.delete
- 
												iam.serviceAccounts.getIamPolicy
- 
												iam.serviceAccounts.list
- 
												iam.serviceAccounts.setIamPolicy
- 
												iam.workloadIdentityPoolProviders.get
- 
												iam.workloadIdentityPools.delete
- 
												resourcemanager.projects.get
- 
												resourcemanager.projects.getIamPolicy
- 
												resourcemanager.projects.setIamPolicy
- 
												storage.buckets.create
- 
												storage.buckets.delete
- 
												storage.buckets.get
- 
												storage.buckets.getIamPolicy
- 
												storage.buckets.setIamPolicy
- 
												storage.objects.create
- 
												storage.objects.delete
- 
												storage.objects.list
 
- 
												
 
手順
- 次のコマンドを実行して、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.<rhel_version>" \ -a ~/.pull-secret - $ oc image extract $CCO_IMAGE \ --file="/usr/bin/ccoctl.<rhel_version>" \- 1 - -a ~/.pull-secret- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- <rhel_version>には、ホストが使用する Red Hat Enterprise Linux (RHEL) のバージョンに対応する値を指定します。値が指定されていない場合は、デフォルトで- ccoctl.rhel8が使用されます。次の値が有効です。- 
												rhel8: RHEL 8 を使用するホストの場合はこの値を指定します。
- 
												rhel9: RHEL 9 を使用するホストの場合はこの値を指定します。
 
- 
												
 
- 次のコマンドを実行して、権限を変更して - ccoctlを実行可能にします。- chmod 775 ccoctl.<rhel_version> - $ chmod 775 ccoctl.<rhel_version>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
検証
- ccoctlが使用できることを確認するには、help ファイルを表示します。コマンドを実行するときは、相対ファイル名を使用します。以下に例を示します。- ./ccoctl.rhel9 - $ ./ccoctl.rhel9- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - OpenShift credentials provisioning tool Usage: ccoctl [command] Available Commands: aws Manage credentials objects for AWS cloud azure Manage credentials objects for Azure gcp Manage credentials objects for Google cloud help Help about any command ibmcloud Manage credentials objects for {ibm-cloud-title} nutanix Manage credentials objects for Nutanix Flags: -h, --help help for ccoctl Use "ccoctl [command] --help" for more information about a command.- OpenShift credentials provisioning tool Usage: ccoctl [command] Available Commands: aws Manage credentials objects for AWS cloud azure Manage credentials objects for Azure gcp Manage credentials objects for Google cloud help Help about any command ibmcloud Manage credentials objects for {ibm-cloud-title} nutanix Manage credentials objects for Nutanix Flags: -h, --help help for ccoctl Use "ccoctl [command] --help" for more information about a command.- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
8.7.2.2. Cloud Credential Operator ユーティリティーを使用した GCP リソースの作成
						ccoctl gcp create-all コマンドを使用して、GCP リソースの作成を自動化できます。
					
							デフォルトで、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 \ --included \ --install-config=<path_to_directory_with_installation_configuration>/install-config.yaml \ --to=<path_to_directory_for_credentials_requests> - $ oc adm release extract \ --from=$RELEASE_IMAGE \ --credentials-requests \ --included \- 1 - --install-config=<path_to_directory_with_installation_configuration>/install-config.yaml \- 2 - --to=<path_to_directory_for_credentials_requests>- 3 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- このコマンドの実行には少し時間がかかる場合があります。 
- 次のコマンドを実行し、 - ccoctlツールを使用して- CredentialsRequestオブジェクトをすべて処理します。- ccoctl gcp create-all \ --name=<name> \ --region=<gcp_region> \ --project=<gcp_project_id> \ --credentials-requests-dir=<path_to_credentials_requests_directory> - $ ccoctl gcp create-all \ --name=<name> \- 1 - --region=<gcp_region> \- 2 - --project=<gcp_project_id> \- 3 - --credentials-requests-dir=<path_to_credentials_requests_directory>- 4 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- クラスターで - 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 - 出力例 - cluster-authentication-02-config.yaml openshift-cloud-controller-manager-gcp-ccm-cloud-credentials-credentials.yaml openshift-cloud-credential-operator-cloud-credential-operator-gcp-ro-creds-credentials.yaml openshift-cloud-network-config-controller-cloud-credentials-credentials.yaml openshift-cluster-api-capg-manager-bootstrap-credentials-credentials.yaml openshift-cluster-csi-drivers-gcp-pd-cloud-credentials-credentials.yaml openshift-image-registry-installer-cloud-credentials-credentials.yaml openshift-ingress-operator-cloud-credentials-credentials.yaml openshift-machine-api-gcp-cloud-credentials-credentials.yaml - cluster-authentication-02-config.yaml openshift-cloud-controller-manager-gcp-ccm-cloud-credentials-credentials.yaml openshift-cloud-credential-operator-cloud-credential-operator-gcp-ro-creds-credentials.yaml openshift-cloud-network-config-controller-cloud-credentials-credentials.yaml openshift-cluster-api-capg-manager-bootstrap-credentials-credentials.yaml openshift-cluster-csi-drivers-gcp-pd-cloud-credentials-credentials.yaml openshift-image-registry-installer-cloud-credentials-credentials.yaml openshift-ingress-operator-cloud-credentials-credentials.yaml openshift-machine-api-gcp-cloud-credentials-credentials.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - GCP にクエリーを実行すると、IAM サービスアカウントが作成されていることを確認できます。詳細は、IAM サービスアカウントのリスト表示に関する GCP のドキュメントを参照してください。 
8.7.2.3. Cloud Credential Operator ユーティリティーマニフェストの組み込み
						個々のコンポーネントに対してクラスターの外部で管理される短期セキュリティー認証情報を実装するには、Cloud Credential Operator ユーティリティー (ccoctl) が作成したマニフェストファイルを、インストールプログラムの正しいディレクトリーに移動する必要があります。
					
前提条件
- クラスターをホストするクラウドプラットフォームでアカウントを設定した。
- 
								Cloud Credential Operator ユーティリティー (ccoctl) が設定されている。
- 
								ccoctlユーティリティーを使用して、クラスターに必要なクラウドプロバイダーリソースを作成している。
手順
- インストールプログラムが使用する GCP アカウントに次の詳細な権限を追加します。 - 例8.2 必要な GCP パーミッション - compute.machineTypes.list
- compute.regions.list
- compute.zones.list
- dns.changes.create
- dns.changes.get
- dns.managedZones.create
- dns.managedZones.delete
- dns.managedZones.get
- dns.managedZones.list
- dns.networks.bindPrivateDNSZone
- dns.resourceRecordSets.create
- dns.resourceRecordSets.delete
- dns.resourceRecordSets.list
 
- install-config.yaml設定ファイルの- credentialsModeパラメーターを- Manualに設定しなかった場合は、次のように値を変更します。- 設定ファイルのサンプルスニペット - apiVersion: v1 baseDomain: example.com credentialsMode: Manual # ... - apiVersion: v1 baseDomain: example.com credentialsMode: Manual # ...- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- インストールマニフェストファイルをまだ作成していない場合は、次のコマンドを実行して作成します。 - openshift-install create manifests --dir <installation_directory> - $ openshift-install create manifests --dir <installation_directory>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ここで、 - <installation_directory>は、インストールプログラムがファイルを作成するディレクトリーに置き換えます。
- 次のコマンドを実行して、 - 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 
- 秘密鍵を含む - 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