認証情報のローテーション

このページでは、Google Kubernetes Engine で認証情報のローテーションを行う方法について説明します。

概要

認証情報のローテーションを行うと、クラスタの認証情報を取り消して新しい認証情報を発行できます。

認証情報のローテーションは定期的に行うことをおすすめします。こうすることで、認証情報の有効期間を短縮して GKE クラスタの保護を強化できます。

認証情報のローテーションでは、認証情報のローテーションだけでなく IP のローテーションも行われます。

始める前に

このタスクの準備として、次の手順を行います。

  • Google Kubernetes Engine API が有効になっていることを確認します。
  • Google Kubernetes Engine API の有効化
  • Cloud SDK がインストール済みであることを確認します。
  • デフォルトのプロジェクト ID を設定します。
    gcloud config set project [PROJECT_ID]
  • ゾーンクラスタを使用する場合は、デフォルトのコンピューティング ゾーンを設定します。
    gcloud config set compute/zone [COMPUTE_ZONE]
  • リージョン クラスタを使用する場合は、デフォルトのコンピューティング リージョンを設定します。
    gcloud config set compute/region [COMPUTE_REGION]
  • gcloud を最新バージョンに更新します。
    gcloud components update

認証情報のローテーションの仕組み

認証情報のローテーションは、新しい IP アドレスへの移行など、複数のステップで構成されるプロセスです。

  • 認証情報のローテーションを開始すると、クラスタ マスターは元の IP アドレスに加えて新しい IP アドレスでもサービスを開始します。新しい認証情報は、ワークロードとコントロール プレーンに発行されます。
  • ローテーションを開始した後は、クラスタの API クライアント(kubectl コマンドライン インターフェースを使用する開発マシンなど)を更新して、新しい IP アドレスでマスターとの通信を開始する必要があります。
  • ローテーションを完了すると、マスターは以前の IP アドレスでのトラフィック処理を停止し、古い認証情報は取り消されます。

認証情報のローテーションを行う

以降のセクションで、認証情報のローテーションを行う方法について説明します。

ローテーションを開始する

認証情報のローテーションを開始するには、次のコマンドを実行します。

  1. CLUSTER_NAME をクラスタの名前に設定します。

    CLUSTER_NAME=[CLUSTER_NAME]

  2. 次のコマンドを実行して、新しい認証情報を作成とコントロール プレーンへの認証情報の発行を行います。また、このコマンドは、クラスタ マスターで元の IP と新しい IP の 2 つの IP アドレスが処理されるように構成します。これにより、クラスタ API で短時間のダウンタイムが発生します。

    gcloud container clusters update ${CLUSTER_NAME} --start-credential-rotation
    

マスターが再構成されると、GKE によってクラスタノードが新しい IP と認証情報を使用するように自動的に更新されます。各ノードプールには「要再作成」のマークが付けられます。GKE は自動再作成が完了するまで認証情報のローテーションを完了しません。

ローテーションを検査する

ローテーションのオペレーションをモニタリングするには、次のコマンドを実行します。

gcloud container operations list | grep "AUTO_UPGRADE_NODES.*RUNNING"

このコマンドは、更新オペレーションのオペレーション ID を返します。

オペレーションをポーリングするには、オペレーション ID を次のコマンドに渡します。

gcloud container operations wait [OPERATION_ID]

ノードプールは 1 つずつ再作成され、それぞれに固有のオペレーションがあります。複数のノードプールがある場合は、上記の手順を使用して各オペレーションをポーリングできます。

API クライアントを更新する

認証情報のローテーションが開始したら、新しい認証情報が使用されるようにクラスタの外部にあるすべての API クライアントを更新する(デベロッパー マシンの kubectl など)必要があります。

API クライアントを更新するには、クライアントごとに次のコマンドを実行します。

gcloud container clusters get-credentials [CLUSTER_NAME]

ローテーションを完了する

ローテーションを完了するには、次のコマンドを実行します。

  1. CLUSTER_NAME をクラスタの名前に設定します。

    CLUSTER_NAME=[CLUSTER_NAME]

  2. 次のコマンドを実行して、クラスタ マスターで新しい認証情報のみが処理されるように構成します。これにより、クラスタ API で短時間のダウンタイムが発生します。

    gcloud container clusters update ${CLUSTER_NAME} --complete-credential-rotation
    

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Kubernetes Engine のドキュメント