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>
ここでは、以下のようになります。
-
<provider_type>
は、クラウドプロバイダーの値です。有効な値はalibabacloud
、aws
、gcp
、ibmcloud
、nutanix
です。 -
credrequests
は、CredentialsRequest
オブジェクトのリストが格納されるディレクトリーです。ディレクトリーが存在しない場合、このコマンドはディレクトリーを作成します。
-
リリースイメージの各
credentialsrequest
について、spec.secretRef.namespace
フィールドのテキストと一致するネームスペースがクラスターに存在することを確認します。このフィールドには、クレデンシャルの設定を保持する生成されたシークレットが保存されます。サンプル AWS
CredentialsRequest
オブジェクトapiVersion: cloudcredential.openshift.io/v1 kind: CredentialsRequest metadata: name: cloud-credential-operator-iam-ro namespace: openshift-cloud-credential-operator spec: providerSpec: apiVersion: cloudcredential.openshift.io/v1 kind: AWSProviderSpec statementEntries: - effect: Allow action: - iam:GetUser - iam:GetUserPolicy - iam:ListAccessKeys resource: "*" secretRef: name: cloud-credential-operator-iam-ro-creds namespace: openshift-cloud-credential-operator 1
- 1
- このフィールドは、生成されたシークレットを保持するために存在する必要がある namespace を示します。
他のプラットフォームの
CredentialsRequest
CR も同様の形式ですが、プラットフォーム固有の異なる値があります。クラスターが
spec.secretRef.namespace
で指定された名前の namespace をまだ持っていないCredentialsRequest
CR には、次のコマンドを実行して namespace を作成します。$ oc create namespace <component_namespace>
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 {}
検証
クラウドプロバイダーにクエリーを実行することで、必要なプロバイダーのリソースと権限ポリシーが作成されていることを確認できます。詳細は、適切なクラウドプロバイダーのドキュメントでロールまたはサービスアカウントの一リストを参照してください。
次のステップ
-
upgradeable-to
アノテーションを更新して、クラスターをアップグレードする準備ができていることを示します。