Domains zum API-Serverzertifikat hinzufügen

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

Zum Angeben benutzerdefinierter SANs für das API-Serverzertifikat verwenden Sie das Feld controlPlane.apiServerCertExtraSANs in der Spezifikation für die Clusterkonfiguration. Dieses Feld enthält eine Liste von Domainnamen und IP-Adressen. Dieses Feld ist optional und änderbar. Sie können dieses Feld hinzufügen und aktualisieren, wenn Sie einen Cluster erstellen, oder jederzeit danach.

...
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ätzlichen 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 ä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 GKE on Bare Metal-Cluster-Controller generieren das API-Serverzertifikat neu, um die geänderten zusätzlichen Domains einzubeziehen.

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

  • Die neuen Werte von apiServerCertExtraSANs werden durch einen Webhook überprüft, um sicherzustellen, dass sie den RFC 1035-Domainnamenkonventionen 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 ist 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
    
    

Beim Aktualisieren des zusätzlichen SANs-Feldes des API-Serverzertifikats in einem laufenden Cluster kann es zu Ausfallzeiten kommen:

  • In Hochverfügbarkeitsclustern werden API-Serverinstanzen nacheinander neu gestartet. Sie können während der Zertifikataktualisierung weiterhin mit dem Cluster interagieren, da der Load-Balancer Anfragen an jeden API-Server verteilt. Unter Umständen wird jedoch eine Antwort angezeigt, die besagt, dass der API-Server heruntergefahren wird. Wenn diese Antwort angezeigt wird, 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 zu laden.

Es dauert 5 bis 20 Minuten, bis die Änderung an alle API-Server weitergegeben wird. Das hängt von der Anzahl der Knoten der Steuerungsebene im Cluster und der Auslastung des Clusters ab.