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 バイナリーを抽出して準備します。

手順

  1. 以下のコマンドを実行して、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> は、クラウドプロバイダーの値です。有効な値は alibabacloudawsgcpibmcloudnutanix です。
    • credrequests は、CredentialsRequest オブジェクトのリストが格納されるディレクトリーです。ディレクトリーが存在しない場合、このコマンドはディレクトリーを作成します。
  2. リリースイメージの各 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 も同様の形式ですが、プラットフォーム固有の異なる値があります。

  3. クラスターが spec.secretRef.namespace で指定された名前の namespace をまだ持っていない CredentialsRequest CR については、次のコマンドを実行して namespace を作成します。

    $ oc create namespace <component_namespace>
  4. 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 オブジェクトで定義されているとおり、ccoctlCredentialsRequest オブジェクトごとに必要なプロバイダーリソースと権限ポリシーを作成します。

  5. 次のコマンドを実行して、シークレットをクラスターに適用します。

    $ ls <path_to_ccoctl_output_dir>/manifests/*-credentials.yaml | xargs -I{} oc apply -f {}

検証

クラウドプロバイダーにクエリーを実行することで、必要なプロバイダーのリソースと権限ポリシーが作成されていることを確認できます。詳細は、適切なクラウドプロバイダーのドキュメントでロールまたはサービスアカウントの一リストを参照してください。

次のステップ

  • upgradeable-to アノテーションを更新して、クラスターをアップグレードする準備ができていることを示します。