認証局のローテーション

Google Distributed Cloud は、証明書と秘密鍵を使用して、クラスタ内のシステム コンポーネント間の接続を認証および暗号化します。クラスタ認証局(CA)はこれらの証明書と鍵を管理します。bmctl update credentials certificate-authorities rotate コマンドを実行すると、Google Distributed Cloud は次のアクションを実行します。

  • クラスタ CA、etcd CA、フロントプロキシ CA の新しいクラスタ認証局(CA)を作成して、管理クラスタ内のユーザー クラスタ名前空間にアップロードします。

  • 管理クラスタ コントローラにより、ユーザー クラスタ認証局が新しく生成した認証局に置き換えられます。

  • 管理クラスタ コントローラにより、新しい公開 CA 証明書とリーフ証明書の鍵ペアがユーザー クラスタ システム コンポーネントに配布されます。

  • このコマンドは、クラスタの作成時に Google Distributed Cloud によって作成された stackdriver-prometheus-etcd-scrape シークレットも更新します。Prometheus が etcd 指標を収集するにはこのシークレットが必要です。

安全なクラスタ通信を維持するには、セキュリティ侵害が発生する可能性がある場合に、定期的にユーザー クラスタ CA をローテーションします。

始める前に

クラスタの認証局をローテーションする前に、次の条件と影響に従って計画を立ててください。

  • CA ローテーションを開始する前に、管理クラスタとユーザー クラスタがバージョン 1.9.0 以降であることを確認します。

  • CA ローテーションは増分であり、ローテーション中、システム コンポーネントは通信できます。

  • CA ローテーションでは、API サーバー、その他のコントロール プレーン プロセス、クラスタ内の各ノードを複数回再起動します。CA ローテーションの各ステージは、クラスタのアップグレードと同様に行われます。CA のローテーション中もユーザー クラスタは動作を継続しますが、ワークロードが再起動されて再スケジュールされることが想定されます。

  • ユーザー クラスタに高可用性コントロール プレーンがない場合、CA ローテーション中にコントロール プレーンのダウンタイムが一時的に発生します。

  • CA ローテーション中は、クラスタ管理操作を行えません。

  • CA ローテーションの期間は、クラスタのサイズによって異なります。たとえば、1 つのコントロール プレーンと 50 個のワーカーノードがあるクラスタでは、CA ローテーションの完了に 2 時間程度かかります。

制限事項

認証局のローテーション機能には、次の制限があります。

  • クラスタ CA が証明書に署名しても、CA ローテーションでは管理者が手動で発行した証明書を更新しません。手動で発行した証明書は、ユーザー クラスタの CA ローテーションが完了した後に更新して再配布します。

  • CA ローテーションが開始されると、一時停止やロールバックはできません。

クラスタ CA ローテーションを開始する

デフォルトでは、TLS 証明書の有効期限は 1 年間です。Google Distributed Cloud は、認証局をローテーションするときにこれらの証明書を更新します。Google Distributed Cloud は、クラスタのアップグレード中に TLS 証明書も更新します。クラスタは定期的にアップグレードして、安全かつサポートされる状態を維持し、TLS 証明書の有効期限が切れないようにすることをおすすめします。

CA ローテーション プロセスは、次のコマンドを使用して開始します。

bmctl update credentials certificate-authorities rotate --cluster CLUSTER_NAME \
    --kubeconfig KUBECONFIG

次のように置き換えます。

  • CLUSTER_NAME: CA をローテーションするクラスタの名前。
  • KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス。自己管理クラスタの場合、このファイルは、クラスタの kubeconfig ファイルです。

bmctl コマンドは、CA が正常にローテーションされ、新しい kubeconfig ファイルが生成されると終了します。kubeconfig ファイルの標準パスは bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig です。

クラスタ CA ローテーションのトラブルシューティング

bmctl update credentials コマンドは、CA ローテーションの進行状況を表示します。関連する update-credentials.log ファイルは、次のタイムスタンプ付きディレクトリに保存されます。

bmctl-workspace/CLUSTER_NAME/log/update-credentials-TIMESTAMP