7.3. Cloud Credential Operator ユーティリティーを使用したクラウドプロバイダーリソースの更新
CCO ユーティリティー (ccoctl) を使用して設定された OpenShift Container Platform クラスターをアップグレードするプロセスは、インストール時にクラウドプロバイダーリソースを作成するプロセスに似ています。
デフォルトで、ccoctl はコマンドが実行されるディレクトリーにオブジェクトを作成します。オブジェクトを別のディレクトリーに作成するには、--output-dir フラグを使用します。この手順では、<path_to_ccoctl_output_dir> を使用してこの場所を参照します。
AWS クラスターでは、一部の ccoctl コマンドが AWS API 呼び出しを行い、AWS リソースを作成または変更します。--dry-run フラグを使用して、API 呼び出しを回避できます。このフラグを使用すると、代わりにローカルファイルシステムに JSON ファイルが作成されます。JSON ファイルを確認して変更し、AWS CLI ツールで --cli-input-json パラメーターを使用して適用できます。
前提条件
- アップグレードするバージョンの OpenShift Container Platform リリースイメージを取得します。
-
リリースイメージから
ccoctlバイナリーを抽出して準備します。
手順
以下のコマンドを実行して、OpenShift Container Platform リリースイメージから
CredentialsRequestカスタムリソース (CR) のリストを抽出します。oc adm release extract --credentials-requests \ --cloud=<provider_type> \ --to=<path_to_directory_with_list_of_credentials_requests>/credrequests \ quay.io/<path_to>/ocp-release:<version>
$ oc adm release extract --credentials-requests \ --cloud=<provider_type> \ --to=<path_to_directory_with_list_of_credentials_requests>/credrequests \ quay.io/<path_to>/ocp-release:<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
-
<provider_type>は、クラウドプロバイダーの値です。有効な値はalibabacloud、aws、gcp、ibmcloud、nutanixです。 -
credrequestsは、CredentialsRequestオブジェクトのリストが格納されるディレクトリーです。ディレクトリーが存在しない場合、このコマンドはディレクトリーを作成します。
-
リリースイメージの各
credentialsrequestについて、spec.secretRef.namespaceフィールドのテキストと一致するネームスペースがクラスターに存在することを確認します。このフィールドには、クレデンシャルの設定を保持する生成されたシークレットが保存されます。サンプル AWS
CredentialsRequestオブジェクトCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- このフィールドは、生成されたシークレットを保持するために存在する必要がある namespace を示します。
他のプラットフォームの
CredentialsRequestCR も同様の形式ですが、プラットフォーム固有の異なる値があります。クラスターが
spec.secretRef.namespaceで指定された名前の namespace をまだ持っていないCredentialsRequestCR には、次のコマンドを実行して namespace を作成します。oc create namespace <component_namespace>
$ oc create namespace <component_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ccoctlツールを使用し、適切なクラウドプロバイダーのコマンドを実行してcredrequestsディレクトリー内のすべてのCredentialsRequestオブジェクトを処理します。以下のコマンドはCredentialsRequestオブジェクトを処理します。-
Alibaba Cloud:
ccoctl alibabacloud create-ram-users -
Amazon Web Services (AWS):
ccoctl aws create-iam-roles -
Google Cloud Platform (GCP):
ccoctl gcp create-all -
IBM Cloud:
ccoctl ibmcloud create-service-id -
Nutanix:
ccoctl nutanix create-shared-secrets
重要プラットフォームによって異なる必要な引数および特別な考慮事項について、詳しくはクラウドプロバイダーのインストールコンテンツで
ccoctlユーティリティーの手順を参照してください。OpenShift Container Platform リリースイメージの各
CredentialsRequestオブジェクトで定義されているとおり、ccoctlはCredentialsRequestオブジェクトごとに必要なプロバイダーリソースと権限ポリシーを作成します。-
Alibaba Cloud:
次のコマンドを実行して、シークレットをクラスターに適用します。
ls <path_to_ccoctl_output_dir>/manifests/*-credentials.yaml | xargs -I{} oc apply -f {}$ ls <path_to_ccoctl_output_dir>/manifests/*-credentials.yaml | xargs -I{} oc apply -f {}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
クラウドプロバイダーにクエリーを実行することで、必要なプロバイダーのリソースと権限ポリシーが作成されていることを確認できます。詳細は、適切なクラウドプロバイダーのドキュメントでロールまたはサービスアカウントの一リストを参照してください。
次のステップ
-
upgradeable-toアノテーションを更新して、クラスターをアップグレードする準備ができていることを示します。