Domains zum API-Serverzertifikat hinzufügen

Ein SAN (Subject Alternative Name) ist eine Funktion von SSL-Zertifikaten, mit der Sie die Domainnamen und Subdomains definieren können, die durch ein Zertifikat geschützt werden. In einem Google Distributed Cloud-Cluster umfassen die Standard-SANs für das Kubernetes API-Serverzertifikat die IP- und VIP-Adressen der Steuerungsebenenknoten und die Kubernetes-DNS-Namen. Mit der Funktion „Zusätzliche SANs für benutzerdefinierte API-Serverzertifikate“ können Sie dem Kubernetes API-Serverzertifikat für den Cluster zusätzliche Domains, Subdomains und IP-Adressen als SANs hinzufügen.

Wenn Sie benutzerdefinierte SANs für das API-Serverzertifikat angeben möchten, verwenden Sie das Feld controlPlane.apiServerCertExtraSANs in der Clusterkonfigurationsspezifikation. Dieses Feld nimmt eine Liste von Domainnamen und IP-Adressen auf. Dieses Feld ist optional und kann geändert werden. Sie können dieses Feld beim Erstellen eines Clusters oder jederzeit danach hinzufügen und aktualisieren.

...
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:
  ...

Domains während der Clustererstellung hinzufügen

Wenn Sie beim Erstellen eines Clusters zusätzliche SANs hinzufügen, enthält das Zertifikat des Kubernetes API-Servers die zusätzlich angegebenen Domains und IP-Adressen, sobald der Cluster verfügbar ist.

Domains für einen vorhandenen Cluster hinzufügen oder aktualisieren

Da das Feld apiServerCertExtraSANs veränderbar ist, können Sie es bei vorhandenen Clustern jederzeit hinzufügen oder aktualisieren. Wenn Sie das Feld apiServerCertExtraSANs im Cluster ändern, werden die folgenden Aktivitäten ausgelöst:

  • Die Clustercontroller von Google Distributed Cloud generieren das API-Serverzertifikat neu, um die geänderten zusätzlichen Domains aufzunehmen.

  • Die Clustercontroller starten den API-Server neu, um das neue Zertifikat neu zu laden.

  • Die neuen Werte von apiServerCertExtraSANs werden von einem Webhook überprüft, um sicherzustellen, dass sie den RFC 1035-Domainnamenkonventionen entsprechen.

  • Der Knotenpool der Steuerungsebene befindet sich im Abgleichstatus.

    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
    
  • Der Knotenpool ist bereit, nachdem die Änderung auf die Kubernetes API-Server auf jedem Knoten der Steuerungsebene übertragen wurde.

    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
    
    

Wenn Sie das Feld „Zusätzliche SANs“ des API-Serverzertifikats in einem laufenden Cluster aktualisieren, kann es zu Ausfallzeiten kommen:

  • In Hochverfügbarkeitsclustern (HA) werden API-Serverinstanzen nacheinander neu gestartet. Während des Zertifikatsupdates können Sie weiterhin mit dem Cluster interagieren, da der Load Balancer Anfragen an jeden API-Server verteilt. Möglicherweise wird jedoch eine Antwort angezeigt, die darauf hinweist, dass der API-Server heruntergefahren wird. Wenn diese Antwort angezeigt wird, wiederholen Sie die Anfrage.

  • Bei Nicht-HA-Clustern kann es zu einer kurzen Unterbrechung von etwa einer Minute kommen, während ein API-Server neu gestartet wird, um das neue Zertifikat neu zu laden.

Die Änderung wird je nach Anzahl der Steuerungsebenenknoten im Cluster und der Auslastung des Clusters in 5 bis 20 Minuten auf alle API-Server übertragen.