API サーバー証明書にドメインを追加する

サブジェクト代替名(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 の新しい値は Webhook によって検証され、RFC 1035 ドメイン名の規則を遵守していることを確認します。

  • コントロール プレーンのノードプールが調整状態になります。

    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 分かかります。