7.8. 管理者レベルのシークレットを kube-system プロジェクトに保存する代替方法
				デフォルトでは、管理者のシークレットは kube-system プロジェクトに保存されます。install-config.yaml ファイルの credentialsMode パラメーターを Manual に設定した場合は、次のいずれかの代替手段を使用する必要があります。
			
- 長期クラウド認証情報を手動で管理するには、長期認証情報を手動で作成する の手順に従ってください。
- クラスターの外部で管理される短期認証情報を個々のコンポーネントに対して実装するには、短期認証情報を使用するように GCP クラスターを設定する の手順に従ってください。
7.8.1. 長期認証情報を手動で作成する
					Cloud Credential Operator (CCO) は、クラウドアイデンティティーおよびアクセス管理 (IAM) API に到達できない環境にインストールする前に手動モードに配置できます。管理者はクラスター kube-system namespace に管理者レベルの認証情報シークレットを保存しないようにします。
				
手順
- インストールプログラムが使用する GCP アカウントに次の詳細な権限を追加します。 - 例7.3 必要な 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) のリストを抽出します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - このコマンドにより、それぞれの - CredentialsRequestオブジェクトに YAML ファイルが作成されます。- サンプル - CredentialsRequestオブジェクト- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 以前に生成した - openshift-installマニフェストディレクトリーにシークレットの YAML ファイルを作成します。シークレットは、それぞれの- CredentialsRequestオブジェクトについて- spec.secretRefに定義される namespace およびシークレット名を使用して保存する必要があります。- シークレットを含む - CredentialsRequestオブジェクトのサンプル- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - サンプル - Secretオブジェクト- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
手動でメンテナンスされる認証情報を使用するクラスターをアップグレードする前に、CCO がアップグレード可能な状態であることを確認します。
7.8.2. 短期認証情報を使用するように GCP クラスターを設定
GCP Workload Identity を使用するように設定されたクラスターをインストールするには、CCO ユーティリティーを設定し、クラスターに必要な GCP リソースを作成する必要があります。
7.8.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 - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
7.8.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オブジェクトのリストを抽出します。- 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 - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - GCP にクエリーを実行すると、IAM サービスアカウントが作成されていることを確認できます。詳細は、IAM サービスアカウントのリスト表示に関する GCP のドキュメントを参照してください。 
7.8.2.3. Cloud Credential Operator ユーティリティーマニフェストの組み込み
						個々のコンポーネントに対してクラスターの外部で管理される短期セキュリティー認証情報を実装するには、Cloud Credential Operator ユーティリティー (ccoctl) が作成したマニフェストファイルを、インストールプログラムの正しいディレクトリーに移動する必要があります。
					
前提条件
- クラスターをホストするクラウドプラットフォームでアカウントを設定した。
- 
								Cloud Credential Operator ユーティリティー (ccoctl) が設定されている。
- 
								ccoctlユーティリティーを使用して、クラスターに必要なクラウドプロバイダーリソースを作成している。
手順
- インストールプログラムが使用する GCP アカウントに次の詳細な権限を追加します。 - 例7.4 必要な 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