サブジェクト代替名(SAN)は SSL 証明書の機能で、証明書で保護されるドメイン名とサブドメインを定義できます。Google Distributed Cloud クラスタでは、Kubernetes API サーバー証明書のデフォルトの SAN に、コントロール プレーン ノードの IP アドレスと VIP アドレス、Kubernetes DNS 名が含まれています。カスタム API サーバー証明書の追加の SAN 機能を使用すると、クラスタの Kubernetes API サーバー証明書に SAN としてドメイン、サブドメイン、IP アドレスを追加できます。
API サーバー証明書のカスタム SAN を指定するには、クラスタ構成仕様の controlPlane.apiServerCertExtraSANs
フィールドを使用します。このフィールドは、ドメイン名と IP アドレスのリストを取ります。このフィールドは省略可能で、変更可能です。クラスタの作成時やその後はいつでもこのフィールドを追加し、更新できます。
...
kind: Cluster
metadata:
name: sample001
namespace: cluster-sample001
spec:
type: user
...
controlPlane:
apiServerCertExtraSANs:
- "demo-dns.example.com"
- "sample-dns.com"
nodePoolSpec:
nodes:
- address: 10.200.0.20
clusterNetwork:
...
クラスタの作成時にドメインを追加する
クラスタの作成時にさらに SAN を追加する場合、クラスタが使用可能になると、Kubernetes API サーバー証明書に追加で指定されたドメインと IP アドレスが含まれます。
既存のクラスタのドメインを追加または更新する
apiServerCertExtraSANs
フィールドは変更可能であるため、既存のクラスタに対していつでもフィールドを追加または更新できます。クラスタの apiServerCertExtraSANs
フィールドを変更すると、次のアクティビティがトリガーされます。
Google Distributed Cloud クラスタ コントローラは、API サーバー証明書を再生成して、変更された追加ドメインを含めます。
クラスタ コントローラは API サーバーを再起動して新しい証明書を再読み込みします。
apiServerCertExtraSANs
の新しい値は、RFC 1035 ドメイン名の規則に準拠していることを確認するために Webhook で検証されます。コントロール プレーン ノードプールが調整状態になります。
Control Plane Node Pool Status: Anthos Bare Metal Version: 1.28.0-gke.435 Anthos Bare Metal Versions: 1.28.0-gke.435: 3 Conditions: ... Last Transition Time: 2023-11-15T18:23:49Z Observed Generation: 1 Reason: Reconciling Status: True Type: Reconciling
変更が各コントロール プレーン ノードの Kubernetes API サーバーに伝播されると、ノードプールの準備が整います。
Control Plane Node Pool Status: Anthos Bare Metal Version: 1.28.0-gke.435 Anthos Bare Metal Versions: 1.28.0-gke.435: 3 Conditions: . . . Last Transition Time: 2023-11-15T18:32:25Z Observed Generation: 1 Reason: ReconciliationCompleted Status: False Type: Reconciling
実行中のクラスタで API サーバー証明書の追加の SAN フィールドを更新すると、ダウンタイムが発生する可能性があります。
高可用性(HA)クラスタでは、API サーバー インスタンスが順番に再起動します。ロードバランサが各 API サーバーにリクエストを分散するため、証明書の更新中もクラスタを使用できます。ただし、API サーバーがシャットダウンされていることを示すレスポンスが返される場合があります。このレスポンスが表示された場合は、リクエストを再試行してください。
HA 以外のクラスタでは、API サーバーが再起動して新しい証明書を再読み込みしている間、約 1 分間、一時的に停止することがあります。
クラスタ内のコントロール プレーン ノードの数とクラスタの読み込みに応じて、すべての API サーバーに反映されるまでに 5~20 分かかります。