Domains zum API-Serverzertifikat hinzufügen

Ein alternativer Antragstellername (Subject Alternative Name, SAN) ist ein Feature von SSL-Zertifikaten, mit dem Sie die durch ein Zertifikat gesicherten Domainnamen und Subdomains definieren können. In einem Google Distributed Cloud-Cluster enthalten die Standard-SANs für das Kubernetes API-Serverzertifikat die IP- und VIP-Adressen der Knoten der Steuerungsebene und die Kubernetes-DNS-Namen. Mit der Funktion für zusätzliche SANs des benutzerdefinierten API-Serverzertifikats können Sie dem Kubernetes API-Serverzertifikat für den Cluster zusätzliche Domains, Subdomains und IP-Adressen als SANs hinzufügen.

Verwenden Sie in der Clusterkonfigurationsspezifikation das Feld controlPlane.apiServerCertExtraSANs, um benutzerdefinierte SANs für das API-Serverzertifikat anzugeben. In diesem Feld wird eine Liste mit Domainnamen und IP-Adressen verwendet. Dieses Feld ist optional und kann geändert werden. Sie können dieses Feld hinzufügen und beim Erstellen eines Clusters oder jederzeit danach 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 Kubernetes API-Serverzertifikat die zusätzlich angegebenen Domains und IP-Adressen, sobald der Cluster verfügbar ist.

Domains zu einem vorhandenen Cluster hinzufügen oder aktualisieren

Da das Feld apiServerCertExtraSANs änderbar ist, können Sie es jederzeit für vorhandene Cluster hinzufügen oder aktualisieren. Wenn Sie das Feld apiServerCertExtraSANs im Cluster ändern, werden folgende Aktivitäten ausgelöst:

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

  • Die Cluster-Controller 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-Konventionen für Domainnamen entsprechen.

  • Der Knotenpool der Steuerungsebene wechselt in einen 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 wird bereit, nachdem die Änderung an die Kubernetes API-Server auf jedem Knoten der Steuerungsebene weitergegeben 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 für zusätzliche SANs des API-Serverzertifikats in einem laufenden Cluster aktualisieren, kann es zu Ausfallzeiten kommen:

  • In Hochverfügbarkeitsclustern werden API-Serverinstanzen sequenziell neu gestartet. Sie können während der Zertifikataktualisierung weiterhin mit dem Cluster interagieren, da der Load-Balancer Anfragen an die einzelnen API-Server verteilt. Es kann jedoch sein, dass in einer Antwort darauf hingewiesen wird, dass der API-Server heruntergefahren wird. Wenn Sie diese Antwort sehen, wiederholen Sie die Anfrage.

  • Bei Clustern ohne Hochverfügbarkeit kann es zu einem kurzen Ausfall von etwa einer Minute kommen, während ein API-Server neu gestartet wird, um das neue Zertifikat neu zu laden.

Es dauert 5 bis 20 Minuten, bis die Änderung an alle API-Server weitergegeben wird, je nach Anzahl der Knoten der Steuerungsebene im Cluster und Auslastung des Clusters.