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

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

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

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

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

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

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

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

注記

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

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

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

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

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

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

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

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

Alibaba Cloud、IBM Cloud、Nutanix

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

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

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

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

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

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

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

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

7.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. AdministrationCluster 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 クラスターの特定の設定を特定するには、さらに調査する必要があります。

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

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

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

    注記

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

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

    AWS

    aws-creds

    GCP

    gcp-credentials

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

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

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

次のステップ

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

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

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

7.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 クラスターの特定の設定を特定するには、さらに調査する必要があります。

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

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

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

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

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

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

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

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

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

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

次のステップ

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

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

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