10.4.3. 既存クラスターでの AWS Security Token Service (STS) の有効化


インストール時に Amazon Web Services (AWS) OpenShift Container Platform クラスターを Security Token Service (STS) を使用するように設定しなかった場合は、既存のクラスターでこの認証方法を有効にできます。

重要

既存のクラスターで STS を有効にするプロセスは、サービスの停止を伴い、かなりの時間がかかります。続行する前に、次の考慮事項を確認してください。

  • 次の手順を読み、必ず時間の要件を理解してご承知おきください。正確な所要時間は個々のクラスターによって異なりますが、少なくとも 1 時間かかる可能性があります。
  • このプロセス中に、すべてのサービスアカウントを更新し、クラスター上のすべての Pod を再起動する必要があります。これらのアクションはワークロードの中断を伴います。この影響を軽減するには、これらのサービスを一時的に停止し、クラスターの準備ができたときに再デプロイすることができます。
  • このプロセスが完了するまでクラスターを更新しないでください。

前提条件

  • AWS に OpenShift Container Platform クラスターをインストールした。
  • cluster-admin 権限を持つアカウントを使用してクラスターにアクセスできる。
  • OpenShift CLI (oc) がインストールされている。
  • Cloud Credential Operator ユーティリティー (ccoctl) バイナリーを展開して準備した。
  • AWS CLI (aws) を使用して AWS アカウントにアクセスできる。

手順

  1. ccoctl によって生成されるマニフェストの出力ディレクトリーを作成します。

    $ mkdir ./output_dir
  2. AWS Identity and Access Management (IAM) OpenID Connect (OIDC) プロバイダーを作成します。

    1. 次のコマンドを実行して、クラスターのサービスアカウントの公開署名鍵を抽出します。

      $ oc get secret/next-bound-service-account-signing-key \
        -n openshift-kube-apiserver-operator \
        -ojsonpath='{ .data.service-account\.pub }' | base64 -d \
        > output_dir/serviceaccount-signer.public 
      1
      1
      この手順では、例として serviceaccount-signer.public という名前のファイルを使用します。
    2. 次のコマンドを実行して、AWS IAM アイデンティティープロバイダーと S3 バケットを作成します。

      $ ./ccoctl aws create-identity-provider \
        --output-dir output_dir \ 
      1
      
        --name <name_you_choose> \ 
      2
      
        --region us-east-2 \ 
      3
      
        --public-key-file output_dir/serviceaccount-signer.public 
      4
      1
      先ほど作成した出力ディレクトリーを指定します。
      2
      グローバルに一意の名前を指定します。この名前は、このコマンドによって作成される AWS リソースの接頭辞として機能します。
      3
      クラスターの AWS リージョンを指定します。
      4
      先ほど作成した serviceaccount-signer.public ファイルへの相対パスを指定します。
    3. IAM アイデンティティープロバイダーの Amazon Resource Name (ARN) を保存またはメモします。この情報は、上記コマンドの出力の最終行にあります。
  3. クラスターの認証設定を更新します。

    1. 次のコマンドを実行して、OIDC 発行者 URL を抽出し、クラスターの認証設定を更新します。

      $ OIDC_ISSUER_URL=`awk '/serviceAccountIssuer/ { print $2 }' output_dir/manifests/cluster-authentication-02-config.yaml`
      $ oc patch authentication cluster --type=merge -p "{\"spec\":{\"serviceAccountIssuer\":\"${OIDC_ISSUER_URL}\"}}"
    2. 次のコマンドを実行して、設定の更新の進行状況を監視します。

      $ oc adm wait-for-stable-cluster

      このプロセスには 15 分以上かかる場合があります。次の出力は、プロセスが完了したことを示します。

      All clusteroperators are stable
  4. Pod を再起動し、発行者の更新を適用します。

    1. 次のコマンドを実行して、クラスター内のすべての Pod を再起動します。

      $ oc adm reboot-machine-config-pool mcp/worker mcp/master

      Pod を再起動すると、serviceAccountIssuer フィールドが更新され、サービスアカウントの公開署名鍵が更新されます。

    2. 次のコマンドを実行して、再起動と更新のプロセスを監視します。

      $ oc adm wait-for-node-reboot nodes --all

      このプロセスには 15 分以上かかる場合があります。次の出力は、プロセスが完了したことを示します。

      All nodes rebooted
  5. 次のコマンドを実行して、Cloud Credential Operator の spec.credentialsMode パラメーターを Manual に更新します。

    $ oc patch cloudcredential cluster \
      --type=merge \
      --patch '{"spec":{"credentialsMode":"Manual"}}'
  6. CredentialsRequests オブジェクトを抽出します。

    1. 次のコマンドを実行して、CLUSTER_VERSION 環境変数を作成します。

      $ CLUSTER_VERSION=$(oc get clusterversion version -o json | jq -r '.status.desired.version')
    2. 次のコマンドを実行して、CLUSTER_IMAGE 環境変数を作成します。

      $ CLUSTER_IMAGE=$(oc get clusterversion version -o json | jq -r ".status.history[] | select(.version == \"${CLUSTER_VERSION}\") | .image")
    3. 次のコマンドを実行して、リリースイメージから CredentialsRequests オブジェクトを抽出します。

      $ oc adm release extract \
        --credentials-requests \
        --cloud=aws \
        --from ${CLUSTER_IMAGE} \
        --to output_dir/cred-reqs
  7. AWS IAM ロールを作成し、シークレットを適用します。

    1. 次のコマンドを実行して、各 CredentialsRequests オブジェクトの IAM ロールを作成します。

      $ ./ccoctl aws create-iam-roles \
        --output-dir ./output_dir/ \ 
      1
      
        --name <name_you_choose> \ 
      2
      
        --identity-provider-arn <identity_provider_arn> \ 
      3
      
        --region us-east-2 \ 
      4
      
        --credentials-requests-dir ./output_dir/cred-reqs/ 
      5
      1
      先ほど作成した出力ディレクトリーを指定します。
      2
      グローバルに一意の名前を指定します。この名前は、このコマンドによって作成される AWS リソースの接頭辞として機能します。
      3
      IAM アイデンティティープロバイダーの ARN を指定します。
      4
      クラスターの AWS リージョンを指定します。
      5
      oc adm release extract コマンドを使用して、CredentialsRequest ファイルを抽出したフォルダーへの相対パスを指定します。
    2. 次のコマンドを実行して、生成されたシークレットを適用します。

      $ find ./output_dir/manifests -iname "openshift*yaml" -print0 | xargs -I {} -0 -t oc replace -f {}
  8. クラスターを再起動して設定プロセスを完了します。

    1. 次のコマンドを実行して、クラスター内のすべての Pod を再起動します。

      $ oc adm reboot-machine-config-pool mcp/worker mcp/master
    2. 次のコマンドを実行して、再起動と更新のプロセスを監視します。

      $ oc adm wait-for-node-reboot nodes --all

      このプロセスには 15 分以上かかる場合があります。次の出力は、プロセスが完了したことを示します。

      All nodes rebooted
    3. 次のコマンドを実行して、設定の更新の進行状況を監視します。

      $ oc adm wait-for-stable-cluster

      このプロセスには 15 分以上かかる場合があります。次の出力は、プロセスが完了したことを示します。

      All clusteroperators are stable
  9. オプション: 次のコマンドを実行して、AWS の root 認証情報シークレットを削除します。

    $ oc delete secret -n kube-system aws-creds
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る