2.2.4. Cloud Credential Operator ユーティリティーを使用したクラウドプロバイダーリソースの更新
CCO ユーティリティー (ccoctl) を使用して設定された OpenShift Container Platform クラスターをアップグレードするプロセスは、インストール時にクラウドプロバイダーリソースを作成するプロセスに似ています。
AWS クラスターでは、一部の ccoctl コマンドが AWS API 呼び出しを行い、AWS リソースを作成または変更します。--dry-run フラグを使用して、API 呼び出しを回避できます。このフラグを使用すると、代わりにローカルファイルシステムに JSON ファイルが作成されます。JSON ファイルを確認して変更し、AWS CLI ツールで --cli-input-json パラメーターを使用して適用できます。
前提条件
-
OpenShift Container Platform リリースイメージから
CredentialsRequestカスタムリソース (CR) を抽出し、spec.secretRef.namespaceフィールドのテキストと一致する namespace がクラスター内に存在している。 -
リリースイメージから
ccoctlバイナリーを抽出して設定している。
手順
出力ディレクトリーが存在しない場合は、次のコマンドを実行して作成します。
$ mkdir -p <path_to_ccoctl_output_dir>次のコマンドを実行して、バインドされたサービスアカウント署名鍵をクラスターから抽出し、出力ディレクトリーに保存します。
$ oc get secret bound-service-account-signing-key \ -n openshift-kube-apiserver \ -ojsonpath='{ .data.service-account\.pub }' | base64 \ -d > <path_to_ccoctl_output_dir>/serviceaccount-signer.publicccoctlツールを使用して、クラウドプロバイダーのコマンドを実行して、すべてのCredentialsRequestオブジェクトを処理します。以下のコマンドはCredentialsRequestオブジェクトを処理します。例2.1 Amazon Web Services (AWS)
$ ccoctl aws create-all \1 --name=<name> \2 --region=<aws_region> \3 --credentials-requests-dir=<path_to_credentials_requests_directory> \4 --output-dir=<path_to_ccoctl_output_dir> \5 --public-key-file=<path_to_ccoctl_output_dir>/serviceaccount-signer.public \6 --create-private-s3-bucket7 - 1
- AWS リソースを個別に作成するには、「カスタマイズを使用した AWS へのクラスターのインストール」コンテンツの「AWS リソースの個別の作成」手順を使用します。このオプションは、AWS リソースを変更する前に
ccoctlツールが作成する JSON ファイルを確認する必要がある場合、またはccoctlツールが AWS リソースを自動的に作成するために使用するプロセスが組織の要件を満たしていない場合に役立つ可能性があります。 - 2
- 追跡用に作成されたクラウドリソースにタグを付けるために使用される名前です。
- 3
- クラウドリソースが作成される AWS リージョンです。
- 4
- コンポーネント
CredentialsRequestオブジェクトのファイルを含むディレクトリーを指定します。 - 5
- 出力ディレクトリーへのパスを指定します。
- 6
- クラスターから抽出した
serviceaccount-signer.publicファイルへのパスを指定します。 - 7
- オプション: デフォルトでは、
ccoctlユーティリティーは OpenID Connect (OIDC) 設定ファイルをパブリック S3 バケットに保存し、S3 URL をパブリック OIDC エンドポイントとして使用します。代わりに、パブリック CloudFront ディストリビューション URL を介して IAM アイデンティティープロバイダーがアクセスするプライベート S3 バケットに OIDC 設定を保存するには、--create-private-s3-bucketパラメーターを使用します。
例2.2 Google Cloud
$ 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 --output-dir=<path_to_ccoctl_output_dir> \5 --public-key-file=<path_to_ccoctl_output_dir>/serviceaccount-signer.public \6 - 1
- トラッキングに使用される、作成されたすべての Google Cloud リソースのユーザー定義名を指定します。
- 2
- クラウドリソースを作成する Google Cloud リージョンを指定します。
- 3
- クラウドリソースを作成する Google Cloud プロジェクト ID を指定します。
- 4
- Google Cloud サービスアカウントを作成するために、
CredentialsRequestマニフェストのファイルを含むディレクトリーを指定します。 - 5
- 出力ディレクトリーへのパスを指定します。
- 6
- クラスターから抽出した
serviceaccount-signer.publicファイルへのパスを指定します。
例2.3 IBM Cloud
$ ccoctl ibmcloud create-service-id \ --credentials-requests-dir=<path_to_credential_requests_directory> \1 --name=<cluster_name> \2 --output-dir=<installation_directory> \3 --resource-group-name=<resource_group_name>4 例2.4 Microsoft Azure
$ ccoctl azure create-managed-identities \ --name <azure_infra_name> \1 --output-dir=<path_to_ccoctl_output_dir> \2 --region <azure_region> \3 --subscription-id <azure_subscription_id> \4 --credentials-requests-dir <path_to_directory_for_credentials_requests> \5 --issuer-url "${OIDC_ISSUER_URL}" \6 --dnszone-resource-group-name <azure_dns_zone_resourcegroup_name> \7 --installation-resource-group-name "${AZURE_INSTALL_RG}"8 - 1
nameパラメーターの値は、Azure リソースグループを作成するために使用します。新しい Azure リソースグループを作成する代わりに既存の Azure リソースグループを使用するには、--oidc-resource-group-nameを指定し、その値として既存のグループ名を使用します。- 2
- 出力ディレクトリーへのパスを指定します。
- 3
- 既存のクラスターのリージョンを指定します。
- 4
- 既存のクラスターのサブスクリプション ID を指定します。
- 5
- コンポーネント
CredentialsRequestオブジェクトのファイルを含むディレクトリーを指定します。 - 6
- 既存のクラスターから OIDC 発行者 URL を指定します。この値は、以下のコマンドを実行して取得できます。
$ oc get authentication cluster \ -o jsonpath \ --template='{ .spec.serviceAccountIssuer }' - 7
- DNS ゾーンを含むリソースグループの名前を指定します。
- 8
- Azure リソースグループを指定します。この値は、以下のコマンドを実行して取得できます。
$ oc get infrastructure cluster \ -o jsonpath \ --template '{ .status.platformStatus.azure.resourceGroupName }'
例2.5 Nutanix
$ ccoctl nutanix create-shared-secrets \ --credentials-requests-dir=<path_to_credentials_requests_directory> \1 --output-dir=<ccoctl_output_dir> \2 --credentials-source-filepath=<path_to_credentials_file>3 OpenShift Container Platform リリースイメージの各
CredentialsRequestオブジェクトで定義されているとおり、ccoctlはCredentialsRequestオブジェクトごとに必要なプロバイダーリソースと権限ポリシーを作成します。次のコマンドを実行して、シークレットをクラスターに適用します。
$ ls <path_to_ccoctl_output_dir>/manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
検証
クラウドプロバイダーにクエリーを実行することで、必要なプロバイダーのリソースと権限ポリシーが作成されていることを確認できます。詳細は、適切なクラウドプロバイダーのドキュメントでロールまたはサービスアカウントの一リストを参照してください。
次のステップ
-
upgradeable-toアノテーションを更新して、クラスターをアップグレードする準備ができていることを示します。