2.2. 手動で維持された認証情報でクラスターを更新する準備


手動で維持された認証情報をを含むクラスターの Cloud Credential Operator (CCO) の upgradable ステータスはデフォルトで false となります。

  • 4.12 から 4.13 などのマイナーリリースの場合は、このステータスを使用することで、権限を更新して CloudCredential リソースにアノテーションを付けて権限が次のバージョンの要件に合わせて更新されていることを指定するまで、更新できなくなります。このアノテーションは、Upgradable ステータスを True に変更します。
  • 4.13.0 から 4.13.1 などの z-stream リリースの場合には、権限は追加または変更されないため、更新はブロックされません。

手動で維持された認証情報を使用してクラスターを更新する前に、更新後の OpenShift Container Platform バージョンのリリースイメージにおける新規認証情報または変更された認証情報に対応する必要があります。

2.2.1. 手動で維持された認証情報を使用したクラスターの更新要件

手動で維持された認証情報を Cloud Credential Operator (CCO) で使用するクラスターを更新する前に、新しいリリースのクラウドプロバイダーリソースを更新する必要があります。

クラスターのクラウド認証情報管理が CCO ユーティリティー (ccoctl) を使用して設定されている場合、ccoctl ユーティリティーを使用してリソースを更新します。ccoctl ユーティリティーなしで手動モードを使用するように設定されたクラスターの場合、リソースを手動で更新する必要があります。

クラウドプロバイダーのリソースを更新したら、クラスターの upgradeable-to アノテーションを更新して、更新の準備ができていることを示す必要があります。

注記

クラウドプロバイダーリソースと upgradeable-to アノテーションを更新するプロセスは、コマンドラインツールを使用しなければ完了できません。

2.2.1.1. プラットフォームタイプ別のクラウド認証情報の設定オプションと更新要件

一部のプラットフォームでは、CCO のモードを 1 つしか使用できません。そのようなプラットフォームにインストールされているクラスターの場合、プラットフォームタイプによって認証情報の更新要件が決まります。

CCO のモードを複数サポートしているプラットフォームの場合、クラスターが使用するように設定されているモードを判別し、その設定に必要なアクションを実行する必要があります。

図2.1 プラットフォームタイプ別の認証情報の更新要件

設定されている CCO 認証情報モードに応じた使用可能なクラスター更新パスを示すデシジョンツリー。
Red Hat OpenStack Platform (RHOSP) と VMware vSphere

これらのプラットフォームは、手動モードでの CCO の使用をサポートしていません。これらのプラットフォーム上のクラスターでは、クラウドプロバイダーのリソース変更が自動的に処理され、upgradeable-to アノテーションへの更新は必要ありません。

これらのプラットフォーム上にあるクラスターの管理者は、更新プロセスの手動で維持された認証情報セクションをスキップする必要があります。

IBM Cloud と Nutanix

これらのプラットフォームにインストールされたクラスターは、ccoctl ユーティリティーを使用して設定されます。

これらのプラットフォーム上にあるクラスターの管理者は、以下のアクションを実行する必要があります。

  1. 新しいリリースの CredentialsRequest カスタムリソース (CR) を抽出して準備します。
  2. 新しいリリースの ccoctl ユーティリティーを設定し、それを使用してクラウドプロバイダーリソースを更新します。
  3. upgradeable-to アノテーションで、クラスターの更新準備が完了したことを示します。
Microsoft Azure Stack Hub

これらのクラスターは、有効期間の長い認証情報と手動モードを使用し、ccoctl ユーティリティーは使用しません。

これらのプラットフォーム上にあるクラスターの管理者は、以下のアクションを実行する必要があります。

  1. 新しいリリースの CredentialsRequest カスタムリソース (CR) を抽出して準備します。
  2. 新しいリリースのクラウドプロバイダーリソースを手動で更新します。
  3. upgradeable-to アノテーションで、クラスターの更新準備が完了したことを示します。
Amazon Web Services (AWS)、グローバル Microsoft Azure、Google Cloud Platform (GCP)

これらのプラットフォームにインストールされたクラスターは、複数の CCO モードをサポートします。

必要な更新プロセスは、クラスターが使用するように設定されたモードにより異なります。CCO がクラスターで使用するように設定されたモードが不明な場合は、Web コンソールまたは CLI を使用して判別できます。

2.2.1.2. Web コンソールを使用した Cloud Credential Operator モードの判別

Cloud Credential Operator (CCO) がどのモードを使用するように設定されているかは、Web コンソールを使用して判別できます。

注記

複数の CCO モードをサポートするのは、Amazon Web Services (AWS)、グローバル Microsoft Azure、および Google Cloud Platform (GCP) クラスターのみです。

前提条件

  • クラスター管理者パーミッションを持つ OpenShift Container Platform アカウントにアクセスできる。

手順

  1. cluster-admin ロールを持つユーザーとして OpenShift Container Platform Web コンソールにログインします。
  2. Administration Cluster Settings に移動します。
  3. Cluster Settings ページで、Configuration タブを選択します。
  4. Configuration resourceCloudCredential を選択します。
  5. CloudCredential details ページで、YAML タブを選択します。
  6. YAML ブロックで、spec.credentialsMode の値を確認します。次の値が可能ですが、すべてのプラットフォームですべてがサポートされているわけではありません。

    • '': CCO はデフォルトモードで動作しています。この設定では、CCO は、インストール中に提供されたクレデンシャルに応じて、ミントモードまたはパススルーモードで動作します。
    • Mint: CCO はミントモードで動作しています。
    • Passthrough: CCO はパススルーモードで動作しています。
    • Manual: CCO は手動モードで動作します。
    重要

    spec.credentialsMode''Mint、または Manual である AWS、GCP、またはグローバル Microsoft Azure クラスターの特定の設定を判断するには、さらに調査する必要があります。

    AWS および GCP クラスターは、ルートシークレットが削除されたミントモードの使用をサポートします。クラスターが、mint モードを使用するように設定されている場合や、デフォルトで mint モードを使用するように設定されている場合、更新前に root シークレットがクラスターに存在するか確認する必要があります。

    手動モードを使用する AWS、GCP、またはグローバル Microsoft Azure クラスターは、AWS STS、GCP Workload Identity、または Microsoft Entra Workload ID を使用してクラスターの外部からクラウド認証情報を作成および管理するように設定されている場合があります。クラスター Authentication オブジェクトを調べることで、クラスターがこの戦略を使用しているかどうかを判断できます。

  7. mint モードのみを使用する AWS または GCP クラスター: クラスターがルートシークレットなしで動作しているかどうかを判断するには、Workloads Secrets に移動し、クラウドプロバイダーのルートシークレットを探します。

    注記

    Project ドロップダウンが All Projects に設定されていることを確認します。

    プラットフォームシークレット名

    AWS

    aws-creds

    GCP

    gcp-credentials

    • これらの値のいずれかが表示される場合、クラスターはルートシークレットが存在するミントモードまたはパススルーモードを使用しています。
    • これらの値が表示されない場合、クラスターはルートシークレットが削除されたミントモードで CCO を使用しています。
  8. 手動モードのみを使用する AWS、GCP、または global Microsoft Azure クラスター: クラスターがクラスターの外部からクラウド認証情報を作成および管理するように設定されているかどうかを判断するには、クラスター Authentication オブジェクトの YAML 値を確認する必要があります。

    1. Administration Cluster Settings に移動します。
    2. Cluster Settings ページで、Configuration タブを選択します。
    3. Configuration resourceAuthentication を選択します。
    4. Authentication details ページで、YAML タブを選択します。
    5. YAML ブロックで、.spec.serviceAccountIssuer パラメーターの値を確認します。

      • クラウドプロバイダーに関連付けられた URL が含まれる値は、CCO がコンポーネントの短期認証情報を使用して手動モードを使用していることを示します。このクラスターは、クラスターの外からクラウド認証情報を作成および管理するためにccoctl ユーティリティーを使用して設定されています。
      • 空の値 ('') は、クラスターが手動モードで CCO を使用しているが、ccoctl ユーティリティーを使用して設定されていないことを示します。

次のステップ

  • mint モードまたは passthrough モードで動作する CCO が含まれ、root シークレットが存在するクラスターを更新する場合、クラウドプロバイダーリソースを更新する必要はなく、更新プロセスの次の手順に進むことができます。
  • クラスターが、root シークレットが削除された状態で mint モードの CCO を使用している場合、更新プロセスの次の手順に進む前に、管理者レベルの認証情を使用して認証情報シークレットを元に戻す必要があります。
  • クラスターが CCO ユーティリティー (ccoctl) を使用して設定されている場合、次のアクションを実行する必要があります。

    1. 新しいリリースの CredentialsRequest カスタムリソース (CR) を抽出して準備します。
    2. 新しいリリースの ccoctl ユーティリティーを設定し、それを使用してクラウドプロバイダーリソースを更新します。
    3. upgradeable-to アノテーションを更新して、クラスターの更新準備が完了していることを示します。
  • クラスターが手動モードで CCO を使用しており、ccoctl ユーティリティーを使用して設定されていない場合は、以下のアクションを実行する必要があります。

    1. 新しいリリースの CredentialsRequest カスタムリソース (CR) を抽出して準備します。
    2. 新しいリリースのクラウドプロバイダーリソースを手動で更新します。
    3. upgradeable-to アノテーションを更新して、クラスターの更新準備が完了していることを示します。

2.2.1.3. CLI を使用した Cloud Credential Operator モードの判別

CLI を使用して、Cloud Credential Operator (CCO) が使用するように設定されているモードを判別できます。

注記

複数の CCO モードをサポートするのは、Amazon Web Services (AWS)、グローバル Microsoft Azure、および Google Cloud Platform (GCP) クラスターのみです。

前提条件

  • クラスター管理者パーミッションを持つ OpenShift Container Platform アカウントにアクセスできる。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. cluster-admin ロールを持つユーザーとしてクラスターの oc にログインします。
  2. CCO が使用するように設定されているモードを確認するには、次のコマンドを入力します。

    $ oc get cloudcredentials cluster \
      -o=jsonpath={.spec.credentialsMode}

    すべてのプラットフォームですべてがサポートされているわけではありませんが、次の出力値が可能です。

    • '': CCO はデフォルトモードで動作しています。この設定では、CCO は、インストール中に提供されたクレデンシャルに応じて、ミントモードまたはパススルーモードで動作します。
    • Mint: CCO はミントモードで動作しています。
    • Passthrough: CCO はパススルーモードで動作しています。
    • Manual: CCO は手動モードで動作します。
    重要

    spec.credentialsMode''Mint、または Manual である AWS、GCP、またはグローバル Microsoft Azure クラスターの特定の設定を判断するには、さらに調査する必要があります。

    AWS および GCP クラスターは、ルートシークレットが削除されたミントモードの使用をサポートします。クラスターが、mint モードを使用するように設定されている場合や、デフォルトで mint モードを使用するように設定されている場合、更新前に root シークレットがクラスターに存在するか確認する必要があります。

    手動モードを使用する AWS、GCP、またはグローバル Microsoft Azure クラスターは、AWS STS、GCP Workload Identity、または Microsoft Entra Workload ID を使用してクラスターの外部からクラウド認証情報を作成および管理するように設定されている場合があります。クラスター Authentication オブジェクトを調べることで、クラスターがこの戦略を使用しているかどうかを判断できます。

  3. mint モードのみを使用する AWS または GCP クラスター: クラスターがルートシークレットなしで動作しているかどうかを判断するには、次のコマンドを実行します。

    $ oc get secret <secret_name> \
      -n=kube-system

    <secret_name> は、AWS の場合は aws-creds、GCP の場合は gcp-credentials です。

    ルートシークレットが存在する場合、このコマンドの出力はシークレットに関する情報を返します。エラーは、ルートシークレットがクラスターに存在しないことを示します。

  4. 手動モードのみを使用する AWS、GCP、またはグローバル Microsoft Azure クラスター: クラスターの外部からクラウド認証情報を作成および管理するようにクラスターが設定されているかどうかを確認するには、次のコマンドを実行します。

    $ oc get authentication cluster \
      -o jsonpath \
      --template='{ .spec.serviceAccountIssuer }'

    このコマンドは、クラスター Authentication オブジェクトの .spec.serviceAccountIssuer パラメーターの値を表示します。

    • クラウドプロバイダーに関連付けられた URL の出力は、CCO がコンポーネントの短期認証情報を使用して手動モードを使用していることを示します。このクラスターは、クラスターの外からクラウド認証情報を作成および管理するためにccoctl ユーティリティーを使用して設定されています。
    • 空の出力は、クラスターが手動モードで CCO を使用しているが、ccoctl ユーティリティーを使用して設定されていないことを示します。

次のステップ

  • mint モードまたは passthrough モードで動作する CCO が含まれ、root シークレットが存在するクラスターを更新する場合、クラウドプロバイダーリソースを更新する必要はなく、更新プロセスの次の手順に進むことができます。
  • クラスターが、root シークレットが削除された状態で mint モードの CCO を使用している場合、更新プロセスの次の手順に進む前に、管理者レベルの認証情を使用して認証情報シークレットを元に戻す必要があります。
  • クラスターが CCO ユーティリティー (ccoctl) を使用して設定されている場合、次のアクションを実行する必要があります。

    1. 新しいリリースの CredentialsRequest カスタムリソース (CR) を抽出して準備します。
    2. 新しいリリースの ccoctl ユーティリティーを設定し、それを使用してクラウドプロバイダーリソースを更新します。
    3. upgradeable-to アノテーションを更新して、クラスターの更新準備が完了していることを示します。
  • クラスターが手動モードで CCO を使用しており、ccoctl ユーティリティーを使用して設定されていない場合は、以下のアクションを実行する必要があります。

    1. 新しいリリースの CredentialsRequest カスタムリソース (CR) を抽出して準備します。
    2. 新しいリリースのクラウドプロバイダーリソースを手動で更新します。
    3. upgradeable-to アノテーションを更新して、クラスターの更新準備が完了していることを示します。

2.2.2. 認証情報要求リソースの抽出と準備

Cloud Credential Operator (CCO) を使用するクラスターを手動モードで更新する前に、新しいリリース用の CredentialsRequest カスタムリソース (CR) を抽出して準備する必要があります。

前提条件

  • 仕様している更新バージョンのバージョンに一致する OpenShift CLI (oc) をインストールしている。
  • cluster-admin 権限を持つユーザーとしてクラスターにログインしている。

手順

  1. 次のコマンドを実行して、適用する更新のプル仕様を取得します。

    $ oc adm upgrade

    このコマンドの出力には、次のような利用可能な更新のプル仕様が含まれます。

    部分的な出力例

    ...
    Recommended updates:
    
    VERSION IMAGE
    4.14.0  quay.io/openshift-release-dev/ocp-release@sha256:6a899c54dda6b844bb12a247e324a0f6cde367e880b73ba110c056df6d018032
    ...

  2. 次のコマンドを実行して、使用するリリースイメージを $RELEASE_IMAGE 変数に設定します。

    $ RELEASE_IMAGE=<update_pull_spec>

    <update_pull_spec> は、使用するリリースイメージのプル仕様です。以下に例を示します。

    quay.io/openshift-release-dev/ocp-release@sha256:6a899c54dda6b844bb12a247e324a0f6cde367e880b73ba110c056df6d018032
  3. 以下のコマンドを実行して、OpenShift Container Platform リリースイメージから CredentialsRequest カスタムリソース (CR) のリストを抽出します。

    $ oc adm release extract \
      --from=$RELEASE_IMAGE \
      --credentials-requests \
      --included \1
      --to=<path_to_directory_for_credentials_requests> 2
    1
    --included パラメーターには、ターゲットリリースに特定のクラスター設定が必要とするマニフェストのみが含まれます。
    2
    CredentialsRequest オブジェクトを保存するディレクトリーへのパスを指定します。指定したディレクトリーが存在しない場合は、このコマンドによって作成されます。

    このコマンドにより、それぞれの CredentialsRequest オブジェクトに YAML ファイルが作成されます。

  4. リリースイメージの各 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 も同様の形式ですが、プラットフォーム固有の異なる値があります。

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

    $ oc create namespace <component_namespace>

次のステップ

  • クラスターのクラウド認証情報管理が CCO ユーティリティー (ccoctl) を使用して設定されている場合は、ccoctl ユーティリティーをクラスター更新用に設定し、それを使用してクラウドプロバイダーリソースを更新します。
  • クラスターが ccoctl ユーティリティーを使用して設定されていない場合は、クラウドプロバイダーのリソースを手動で更新します。

2.2.3. クラスター更新のための Cloud Credential Operator ユーティリティーの設定

Cloud Credential Operator (CCO) を手動モードで使用するクラスターをアップグレードして、クラスターの外からクラウド認証情報を作成および管理する場合は、CCO ユーティリティー (ccoctl) バイナリーを抽出して準備します。

注記

ccoctl ユーティリティーは、Linux 環境で実行する必要がある Linux バイナリーです。

前提条件

  • クラスター管理者のアクセスを持つ OpenShift Container Platform アカウントを使用できる。
  • OpenShift CLI (oc) がインストールされている。
  • クラスターは、クラスターの外からクラウド認証情報を作成および管理するためにccoctl ユーティリティーを使用して設定されている。
  • OpenShift Container Platform リリースイメージから CredentialsRequest カスタムリソース (CR) を抽出し、spec.secretRef.namespace フィールドのテキストと一致する namespace がクラスター内に存在している。

手順

  1. 次のコマンドを実行して、OpenShift Container Platform リリースイメージの変数を設定します。

    $ RELEASE_IMAGE=$(oc get clusterversion -o jsonpath={..desired.image})
  2. 以下のコマンドを実行して、OpenShift Container Platform リリースイメージから CCO コンテナーイメージを取得します。

    $ CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret)
    注記

    $RELEASE_IMAGE のアーキテクチャーが、ccoctlツールを使用する環境のアーキテクチャーと一致していることを確認してください。

  3. 以下のコマンドを実行して、OpenShift Container Platform リリースイメージ内の CCO コンテナーイメージから ccoctl バイナリーを抽出します。

    $ oc image extract $CCO_IMAGE --file="/usr/bin/ccoctl" -a ~/.pull-secret
  4. 次のコマンドを実行して、権限を変更して ccoctl を実行可能にします。

    $ chmod 775 ccoctl

検証

  • ccoctl が使用できることを確認するには、help ファイルを表示します。コマンドを実行するときは、相対ファイル名を使用します。以下に例を示します。

    $ ./ccoctl.rhel9

    出力例

    OpenShift credentials provisioning tool
    
    Usage:
      ccoctl [command]
    
    Available Commands:
      alibabacloud Manage credentials objects for alibaba cloud
      aws          Manage credentials objects for AWS cloud
      azure        Manage credentials objects for Azure
      gcp          Manage credentials objects for Google cloud
      help         Help about any command
      ibmcloud     Manage credentials objects for IBM Cloud
      nutanix      Manage credentials objects for Nutanix
    
    Flags:
      -h, --help   help for ccoctl
    
    Use "ccoctl [command] --help" for more information about a command.

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 バイナリーを抽出して設定している。

手順

  1. ccoctl ツールを使用して、クラウドプロバイダーのコマンドを実行して、すべての 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
      --create-private-s3-bucket 6
    1
    AWS リソースを個別に作成するには、「カスタマイズを使用した AWS へのクラスターのインストール」コンテンツの「AWS リソースの個別の作成」手順を使用します。このオプションは、AWS リソースを変更する前に ccoctl ツールが作成する JSON ファイルを確認する必要がある場合、または ccoctl ツールが AWS リソースを自動的に作成するために使用するプロセスが組織の要件を満たしていない場合に役立つ可能性があります。
    2
    追跡用に作成されたクラウドリソースにタグを付けるために使用される名前です。
    3
    クラウドリソースが作成される AWS リージョンです。
    4
    コンポーネント CredentialsRequest オブジェクトのファイルを含むディレクトリーを指定します。
    5
    オプション: ccoctl ユーティリティーがオブジェクトを作成するディレクトリーを指定します。デフォルトでは、ユーティリティーは、コマンドが実行されるディレクトリーにオブジェクトを作成します。
    6
    オプション: デフォルトでは、ccoctl ユーティリティーは OpenID Connect (OIDC) 設定ファイルをパブリック S3 バケットに保存し、S3 URL をパブリック OIDC エンドポイントとして使用します。代わりに、パブリック CloudFront 配布 URL を介して IAM ID プロバイダーによってアクセスされるプライベート S3 バケットに OIDC 設定を保存するには、--create-private-s3-bucket パラメーターを使用します。

    例2.2 Google Cloud Platform (GCP)

    $ 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
    1
    トラッキングに使用される、作成されたすべての GCP リソースのユーザー定義名を指定します。
    2
    クラウドリソースを作成する GCP リージョンを指定します。
    3
    クラウドリソースを作成する GCP プロジェクト ID を指定します。
    4
    GCP サービスアカウントを作成するには、CredentialsRequest マニフェストのファイルが含まれるディレクトリーを指定します。
    5
    オプション: ccoctl ユーティリティーがオブジェクトを作成するディレクトリーを指定します。デフォルトでは、ユーティリティーは、コマンドが実行されるディレクトリーにオブジェクトを作成します。

    例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
    1
    コンポーネント CredentialsRequest オブジェクトのファイルを含むディレクトリーを指定します。
    2
    OpenShift Container Platform クラスターの名前を指定します。
    3
    オプション: ccoctl ユーティリティーがオブジェクトを作成するディレクトリーを指定します。デフォルトでは、ユーティリティーは、コマンドが実行されるディレクトリーにオブジェクトを作成します。
    4
    オプション: アクセスポリシーのスコープに使用されるリソースグループの名前を指定します。

    例2.4 Microsoft Azure

    $ ccoctl azure create-managed-identities \
      --name <azure_infra_name> \1
      --output-dir ./output_dir \
      --region <azure_region> \2
      --subscription-id <azure_subscription_id> \3
      --credentials-requests-dir <path_to_directory_for_credentials_requests> \
      --issuer-url "${OIDC_ISSUER_URL}" \4
      --dnszone-resource-group-name <azure_dns_zone_resourcegroup_name> \5
      --installation-resource-group-name "${AZURE_INSTALL_RG}" 6
    1
    name パラメーターの値は、Azure リソースグループを作成するために使用します。新しい Azure リソースグループを作成する代わりに既存の Azure リソースグループを使用するには、--oidc-resource-group-name を指定し、その値として既存のグループ名を使用します。
    2
    既存のクラスターのリージョンを指定します。
    3
    既存のクラスターのサブスクリプション ID を指定します。
    4
    既存のクラスターから OIDC 発行者 URL を指定します。この値は、以下のコマンドを実行して取得できます。
    $ oc get authentication cluster \
      -o jsonpath \
      --template='{ .spec.serviceAccountIssuer }'
    5
    DNS ゾーンを含むリソースグループの名前を指定します。
    6
    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
    1
    コンポーネント CredentialsRequests オブジェクトのファイルを含むディレクトリーへのパスを指定します。
    2
    オプション: ccoctl ユーティリティーがオブジェクトを作成するディレクトリーを指定します。デフォルトでは、ユーティリティーは、コマンドが実行されるディレクトリーにオブジェクトを作成します。
    3
    オプション: 認証情報データ YAML ファイルを含むディレクトリーを指定します。デフォルトでは、ccoctl はこのファイルが <home_directory>/.nutanix/credentials にあると想定します。

    OpenShift Container Platform リリースイメージの各 CredentialsRequest オブジェクトで定義されているとおり、ccoctlCredentialsRequest オブジェクトごとに必要なプロバイダーリソースと権限ポリシーを作成します。

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

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

検証

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

次のステップ

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

2.2.5. クラウドプロバイダーのリソースを手動で更新する

手動でメンテナンスされる認証情報でクラスターをアップグレードする前に、アップグレードするリリースイメージ用に新しい認証情報のシークレットを作成する必要があります。また、既存の認証情報に必要なアクセス許可を確認し、それらのコンポーネントの新しいリリースでの新しいアクセス許可要件に対応する必要があります。

前提条件

  • OpenShift Container Platform リリースイメージから CredentialsRequest カスタムリソース (CR) を抽出し、spec.secretRef.namespace フィールドのテキストと一致する namespace がクラスター内に存在している。

手順

  1. 新しいリリースイメージで追加される CredentialsRequest カスタムリソースのシークレットを含む YAML ファイルを作成します。シークレットは、それぞれの CredentialsRequest オブジェクトに、spec.secretRef に定義される namespace およびシークレット名を使用して保存する必要があります。

    例2.6 サンプル AWS YAML ファイル

    シークレットを含むサンプル AWS CredentialsRequest オブジェクト

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: <component_credentials_request>
      namespace: openshift-cloud-credential-operator
      ...
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AWSProviderSpec
        statementEntries:
        - effect: Allow
          action:
          - s3:CreateBucket
          - s3:DeleteBucket
          resource: "*"
          ...
      secretRef:
        name: <component_secret>
        namespace: <component_namespace>
      ...

    サンプル AWS Secret オブジェクト

    apiVersion: v1
    kind: Secret
    metadata:
      name: <component_secret>
      namespace: <component_namespace>
    data:
      aws_access_key_id: <base64_encoded_aws_access_key_id>
      aws_secret_access_key: <base64_encoded_aws_secret_access_key>

    例2.7 サンプル Azure YAML ファイル

    注記

    Global Azure と Azure Stack Hub は、同じ CredentialsRequest オブジェクトとシークレット形式を使用します。

    シークレットを含むサンプル Azure CredentialsRequest オブジェクト

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: <component_credentials_request>
      namespace: openshift-cloud-credential-operator
      ...
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AzureProviderSpec
        roleBindings:
        - role: Contributor
          ...
      secretRef:
        name: <component_secret>
        namespace: <component_namespace>
      ...

    サンプル Azure Secret オブジェクト

    apiVersion: v1
    kind: Secret
    metadata:
      name: <component_secret>
      namespace: <component_namespace>
    data:
      azure_subscription_id: <base64_encoded_azure_subscription_id>
      azure_client_id: <base64_encoded_azure_client_id>
      azure_client_secret: <base64_encoded_azure_client_secret>
      azure_tenant_id: <base64_encoded_azure_tenant_id>
      azure_resource_prefix: <base64_encoded_azure_resource_prefix>
      azure_resourcegroup: <base64_encoded_azure_resourcegroup>
      azure_region: <base64_encoded_azure_region>

    例2.8 サンプル GCP YAML ファイル

    シークレットを含むサンプル GCP CredentialsRequest オブジェクトの

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: <component_credentials_request>
      namespace: openshift-cloud-credential-operator
      ...
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: GCPProviderSpec
          predefinedRoles:
          - roles/iam.securityReviewer
          - roles/iam.roleViewer
          skipServiceCheck: true
          ...
      secretRef:
        name: <component_secret>
        namespace: <component_namespace>
      ...

    サンプル GCP Secret オブジェクト

    apiVersion: v1
    kind: Secret
    metadata:
      name: <component_secret>
      namespace: <component_namespace>
    data:
      service_account.json: <base64_encoded_gcp_service_account_file>

  2. シークレットに保存される既存の認証情報の CredentialsRequest カスタムリソースにパーミッション要件を変更した場合は、必要に応じてパーミッションを更新します。

次のステップ

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

2.2.6. クラスターがアップグレードの準備ができていることを示す

手動で維持された認証情報をを含むクラスターの Cloud Credential Operator (CCO) の upgradable ステータスはデフォルトで false となります。

前提条件

  • アップグレード先のリリースイメージについて、手動で、または Cloud Credential Operator ユーティリティー (ccoctl) を使用して、新しい認証情報を処理しました。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. cluster-admin ロールを持つユーザーとしてクラスターの oc にログインします。
  2. 次のコマンドを実行して CloudCredential リソースを編集し、metadata フィールド内に upgradeable-to アノテーションを追加します。

    $ oc edit cloudcredential cluster

    追加するテキスト

    ...
      metadata:
        annotations:
          cloudcredential.openshift.io/upgradeable-to: <version_number>
    ...

    <version_number> はアップグレード先のバージョンで、形式は x.y.z です。たとえば、OpenShift Container Platform 4.12.2 には 4.12.2 を使用します。

    アノテーションを追加してから、upgradeable のステータスが変更されるまで、数分かかる場合があります。

検証

  1. Web コンソールの Administrator パースペクティブで、Administration Cluster Settings に移動します。
  2. CCO ステータスの詳細を表示するには、Cluster Operators リストで cloud-credential をクリックします。

    • Conditions セクションの Upgradeable ステータスが False の場合に、upgradeable-to アノテーションに間違いがないことを確認します。
  3. Conditions セクションの Upgradeable ステータスが True の場合、OpenShift Container Platform のアップグレードを開始します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.