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 enthalten die standardmäßigen 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 benutzerdefiniertes API-Serverzertifikat“ 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 Clusterspezifikation. Dieses Feld akzeptiert eine Liste von Domainnamen und IP-Adressen. 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 beim Erstellen eines Clusters 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 für einen vorhandenen Cluster hinzufügen oder aktualisieren
Da das Feld apiServerCertExtraSANs
veränderbar ist, können Sie es jederzeit für vorhandene Cluster hinzufügen oder aktualisieren. Wenn Sie das Feld apiServerCertExtraSANs
im Cluster ändern, werden die folgenden 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 geprüft, um sicherzustellen, dass sie den RFC 1035-Konventionen für Domainnamen entsprechen.Der Knotenpool der Steuerungsebene wechselt in den Abgleichsstatus.
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
Beim Aktualisieren des Felds „extra SANs“ des API-Serverzertifikats in einem laufenden Cluster kann es zu Ausfallzeiten kommen:
In Clustern mit Hochverfügbarkeit (HA) werden API-Serverinstanzen sequenziell neu gestartet. Sie können während der Zertifikatsaktualisierung weiterhin mit dem Cluster interagieren, da der Load-Balancer Anfragen an jeden API-Server verteilt. Möglicherweise erhalten Sie jedoch eine Antwort, die darauf hinweist, dass der API-Server heruntergefahren wird. Wenn Sie diese Antwort sehen, versuchen Sie es noch einmal.
Bei Nicht-HA-Clustern 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 auf alle API-Server übertragen wird. Das hängt von der Anzahl der Steuerungsebenenknoten im Cluster und der Clusterlast ab.