Die Planung und regelmäßige Rotation Ihrer Clusteranmeldedaten ist entscheidend, um Ihre Cluster in einem fehlerfreien Zustand zu halten. In diesem Dokument erfahren Sie, wie Sie Rotationen von Anmeldedaten durchführen und wie Sie regelmäßige Rotationen planen.
Dieses Dokument richtet sich an Sicherheitsexperten, die für den Lebenszyklus von Anmeldedaten in GKE-Clustern verantwortlich sind. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir in Google Cloud Inhalten verweisen, finden Sie unter Häufig verwendete GKE-Nutzerrollen und -Aufgaben.
Rotation von Anmeldedaten in GKE
Die Root-Zertifizierungsstelle des Clusters hat eine begrenzte Lebensdauer. Wenn die Zertifizierungsstelle abläuft, sind alle von der Zertifizierungsstelle signierten Anmeldedaten nicht mehr gültig, einschließlich des Cluster-Clientzertifikats (aus dem API-Feld MasterAuth), des Schlüssels und des Zertifikats für den API-Server und der kubelet-Clientzertifikate.
Die Lebensdauer der Cluster-Anmeldedaten hängt davon ab, wann Sie den Cluster erstellt oder die Anmeldedaten zuletzt rotiert haben. Weitere Informationen finden Sie unter Gültigkeitsdauer von Anmeldedaten prüfen.
Sie können diese Anmeldedaten widerrufen und neu ausstellen, indem Sie eine der folgenden Arten von Rotationen durchführen.
Rotation von Anmeldedaten:
- Rotiert die IP-Adresse, die die Steuerungsebene für den Kubernetes API-Server verwendet.
- Rotiert die Stamm-Zertifizierungsstelle des Clusters.
- Rotiert Kubernetes-ServiceAccount-Schlüssel, die zum Signieren und Prüfen von ServiceAccount-Anmeldedaten verwendet werden.
- Rotiert die CA der Aggregationsebene.
-
- Rotiert die IP-Adresse, die die Steuerungsebene für den Kubernetes API-Server verwendet.
- Rotiert die Stamm-Zertifizierungsstelle des Clusters.
Bei beiden Rotationstypen müssen Knoten neu erstellt werden, bevor sie neue Anmeldedaten verwenden können.
Sie müssen die Rotation von Anmeldedaten für Ihren Cluster starten und beenden, bevor Ihre aktuellen Anmeldedaten ablaufen.
Rotation von Anmeldedaten durchführen
Sie sollten die Rotation von Anmeldedaten regelmäßig und vor dem Ablaufdatum Ihrer aktuellen Anmeldedaten durchführen. Bei der Rotation von Anmeldedaten müssen die Knoten neu erstellt werden, um die neuen Anmeldedaten zu nutzen. Dies kann eine Unterbrechung der Ausführung von Arbeitslasten sein. Planen Sie Wartungszeiträume und führen Sie die Rotationen während Wartungsfenstern durch, um unerwartete Ausfallzeiten von Arbeitslasten oder nicht reagierende API-Clients außerhalb des Clusters zu vermeiden.
Weitere Informationen dazu, wie sich die Wartungsverfügbarkeit auf die Rotation von Clusteranmeldedaten auswirkt und welche Art von Unterbrechung in Ihrem Cluster während der einzelnen Schritte einer Rotation auftritt, finden Sie in der Zeile für die Rotation von Anmeldedaten in der Tabelle der manuellen Änderungen, bei denen die Knoten mit einer Knoten-Upgrade-Strategie neu erstellt werden und die Wartungsrichtlinien berücksichtigt werden. GKE ist beim Aktualisieren der Knoten von der Ressourcenverfügbarkeit abhängig. Weitere Informationen zu Knotenupdates finden Sie unter Unterbrechungen durch Knotenupdates planen.
Gültigkeitsdauer von Clusteranmeldedaten
Die Lebensdauer von Cluster-Anmeldedaten hängt in der Regel davon ab, wann der Cluster erstellt wurde oder wann die Anmeldedaten zuletzt rotiert wurden:
- Cluster, die vor etwa Oktober 2021 erstellt wurden, haben eine CA-Lebensdauer von 5 Jahren.
- Cluster, die nach etwa Oktober 2021 erstellt wurden, haben eine Zertifizierungsstelle mit einer Laufzeit von 30 Jahren.
- Bei Clustern, die nach etwa Januar 2022 rotiert wurden, beträgt die Gültigkeitsdauer des Zertifikats 30 Jahre.
Cluster mit ablaufenden oder abgelaufenen Anmeldedaten finden
Wenn die Anmeldedaten Ihres Clusters in den nächsten 180 Tagen ablaufen oder die Anmeldedaten Ihres Clusters bereits abgelaufen sind, bietet GKE eine Anleitung mit einer Statistik und Empfehlung, dass Sie eine Rotation von Anmeldedaten für diesen Cluster durchführen müssen. Diese Anleitung enthält das Ablaufdatum der Anmeldedaten. Sie können diese Anleitung in der Google Cloud Console aufrufen. Alternativ können Sie diese Anleitung mit der gcloud CLI oder der Recommender API aufrufen und dabei den Untertyp CLUSTER_CA_EXPIRATION angeben.
Wenn Sie eine Statistik und eine Empfehlung für einen Cluster erhalten, müssen Sie eine Rotation von Anmeldedaten durchführen. Andernfalls startet GKE automatisch eine Rotation von Anmeldedaten innerhalb von 30 Tagen nach dem Ablaufdatum der aktuellen Zertifizierungsstelle, wie im nächsten Abschnitt erläutert. Nach Abschluss der Rotation von Anmeldedaten kann es bis zu 36 Stunden dauern, bis die Statistik und Empfehlungen behoben sind.
GKE-Automatisierungsrichtlinie zur Vermeidung von Clusterausfällen
Damit Ihr Cluster nicht in einen nicht wiederherstellbaren Zustand wechselt, wenn Ihre aktuellen Anmeldedaten ablaufen, startet GKE automatisch eine Rotation von Anmeldedaten innerhalb von 30 Tagen nach dem Ablaufdatum Ihrer aktuellen Zertifizierungsstelle. Ihre Clusterzertifizierungsstelle läuft beispielsweise am 6. Januar 2024 ab und Sie rotieren Ihre Anmeldedaten nicht bis zum 5. Dezember 2023. GKE startet eine automatische Rotation am oder nach dem 7. Dezember 2023 und versucht, diese Rotation sieben Tage nach dem Start des Vorgangs abzuschließen. Diese automatische Rotation ist der letzte Versuch zur Vermeidung eines Clusterausfalls. Dabei gilt Folgendes:
- Bei automatischen Rotationen werden in der Regel Wartungsfenster oder Wartungsausschlüsse berücksichtigt. GKE behält sich jedoch das Recht vor, innerhalb von 30 Tagen nach Ablauf Schritte zur Rotation der Anmeldedaten auszuführen, unabhängig von der Verfügbarkeit der Wartung. Innerhalb von 30 Tagen ignoriert GKE die Wartungsverfügbarkeit für den ersten Schritt, nämlich die Rotation starten.
- Wenn die Wartungsverfügbarkeit verhindert, dass GKE die Rotation anfänglich abschließt, versucht GKE weiterhin, die Rotation bis zum Ablaufdatum der Anmeldedaten abzuschließen. Danach kann der Cluster nicht mehr wiederhergestellt werden.
- Nach Abschluss der Rotation von Anmeldedaten werden die ablaufenden Anmeldedaten widerrufen. Kubernetes API-Clients außerhalb des Clusters, z. B. kubectl in lokalen Umgebungen, funktionieren erst, wenn Sie die Clients für die Verwendung der neuen Anmeldedaten konfigurieren.
- Neuerstellungen von Knotenpools während der Rotation können zu Unterbrechungen der Arbeitslasten führen.
Hinweis
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Aktivieren Sie die Google Kubernetes Engine API. Google Kubernetes Engine API aktivieren
- Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit dem Befehl
gcloud components updateab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.
- Sie benötigen einen vorhandenen Autopilot- oder Standardcluster. Wenn Sie einen benötigen, erstellen Sie einen Autopilot-Cluster.
Gültigkeitsdauer von Anmeldedaten prüfen
Prüfen Sie die Lebensdauer Ihrer Anmeldedaten vor und nach der Rotation von Anmeldedaten, damit Sie die Gültigkeit der Root-Zertifizierungsstelle des Clusters kennen.
Führen Sie den folgenden Befehl aus, um die Lebensdauer der Anmeldedaten für einen einzelnen Cluster zu prüfen:
gcloud container clusters describe CLUSTER_NAME \
--location LOCATION \
--format "value(masterAuth.clusterCaCertificate)" \
| base64 --decode \
| openssl x509 -noout -dates
Die Ausgabe sieht in etwa so aus:
notBefore=Mar 17 16:45:34 2023 GMT
notAfter=Mar 9 17:45:34 2053 GMT
Wenn Sie diesen Befehl nach dem Starten einer Rotation von Anmeldedaten ausführen, ist die Ausgabe die Lebensdauer des ursprünglichen Zertifikats. Dieses Zertifikat bleibt gültig, bis Sie die Rotation abgeschlossen haben. Nach Abschluss der Rotation ist die Ausgabe die Lebensdauer des neuen Zertifikats.
Führen Sie den folgenden Befehl aus, um die Lebensdauer der Anmeldedaten für alle Cluster in einem Projekt zu prüfen:
gcloud container clusters list --project PROJECT_ID \
--format="value(name,masterAuth.clusterCaCertificate)" | \
while read -r cluster ca; do \
expiry_date=$(echo -e "$ca" | base64 --decode | openssl x509 -noout -enddate | awk -F'=' '{print $2}'); \
printf "%-40s | %s\n" "$cluster" "$expiry_date" ; \
done | \
column -t | \
awk -F',' 'BEGIN{print "Cluster Name | Certificate Expiry Date"} {print}'
Rotation von Anmeldedaten durchführen
Die Rotation von Anmeldedaten umfasst die folgenden Schritte:
- Rotation starten: Die Steuerungsebene beginnt, zusätzlich zur ursprünglichen IP-Adresse eine neue IP-Adresse zu verwenden. Neue Anmeldedaten werden für Arbeitslasten und die Steuerungsebene ausgegeben.
- Neuerstellung von Knoten: GKE erstellt Clusterknoten neu, damit die Knoten die neue IP-Adresse und die neuen Anmeldedaten verwenden. Dabei wird die Verfügbarkeit von Wartungsfenstern und Ausschlüssen berücksichtigt. Sie können Ihre Knoten auch manuell neu erstellen, indem Sie ein Knotenversions-Upgrade auf dieselbe GKE-Version durchführen, die auf den Knoten bereits ausgeführt wird.
- API-Clients aktualisieren: Aktualisieren Sie nach dem Starten der Rotation alle Cluster-API-Clients wie Entwicklungsmaschinen mit
kubectl, um über die neue IP-Adresse mit der Steuerungsebene zu kommunizieren. - Rotation abschließen: Die Steuerungsebene beendet die Bereitstellung von Traffic über die ursprüngliche IP-Adresse. Alte Anmeldedaten werden widerrufen, einschließlich vorhandener statischer Anmeldedaten für Kubernetes-Dienstkonten.
Wenn Sie eine Rotation von Anmeldedaten starten oder wenn GKE automatisch eine Rotation startet, führt GKE diese Schritte automatisch aus und versucht, die Rotation abzuschließen. Wenn der Clusterablauf bei jedem Schritt mehr als 30 Tage in der Zukunft liegt, berücksichtigt GKE die Wartungsverfügbarkeit. Bei automatischen Rotationen vor dem Ablauf des Clusters behält sich GKE das Recht vor, die Wartungsverfügbarkeit zu ignorieren, um zu verhindern, dass Ihr Cluster nicht mehr wiederhergestellt werden kann. Innerhalb von 30 Tagen ignoriert GKE die Wartungsverfügbarkeit für den ersten Schritt, nämlich die Rotation starten.
Wenn Sie eine Rotation von Anmeldedaten nicht innerhalb von sieben Tagen nach Beginn durchführen, versucht GKE, die Rotation für Sie abzuschließen. Wenn Knoten in Ihrem Cluster noch die vorherigen Anmeldedaten verwenden, schlägt der automatische Abschluss fehl. GKE versucht jedoch weiterhin, den Vorgang abzuschließen, bis die Anmeldedaten ablaufen und der Cluster nicht mehr wiederhergestellt werden kann. Sie sollten die Rotation von Anmeldedaten nach Beginn der Rotation manuell verfolgen und abschließen. Wenn Sie die Blockierungen der Wartungsverfügbarkeit überschreiben möchten, führen Sie die Befehle in den folgenden Abschnitten aus, um die entsprechenden Phasen des Rotationsprozesses manuell auszulösen. Verlassen Sie sich nicht auf die automatische Vervollständigung, da sie nur eine bestmögliche Maßnahme ist.
Rotation starten
Führen Sie den folgenden Befehl aus, um eine Rotation von Anmeldedaten zu starten:
gcloud container clusters update CLUSTER_NAME \
--location LOCATION \
--start-credential-rotation
Mit diesem Befehl werden neue Anmeldedaten erstellt, diese Anmeldedaten an die Steuerungsebene ausgegeben und die Steuerungsebene so konfiguriert, dass sie zwei IP-Adressen verwendet: die ursprüngliche IP-Adresse und eine neue IP-Adresse.
In-Cluster-Komponenten mit langlebigen Verbindungen neu starten
Wenn Sie eine IP-Adresse oder Anmeldedaten rotieren, wird auch die Zertifizierungsstelle (Certificate Authority, CA) des Clusters rotiert. Einige In-Cluster-Komponenten, die langlebige TLS-Verbindungen aufrechterhalten, z. B. metrics-server und konnectivity-agent, vertrauen der neuen Cluster-CA möglicherweise nicht automatisch.
Dies kann dazu führen, dass diese Verbindungen bei der Kommunikation mit Knoten oder anderen Clusterendpunkten fehlschlagen. In den Komponentenlogs werden möglicherweise TLS-Handshake-Fehler wie x509: certificate signed by unknown authority angezeigt.
Wenn diese Fehler nach dem Starten einer Rotation auftreten, müssen Sie Ihre Pods möglicherweise manuell neu starten. Durch einen Neustart wird der Pod gezwungen, die Verbindung neu zu initialisieren und die neuen Cluster-CA-Zertifikate zu laden. Wenn Sie beispielsweise metrics-server und konnectivity-agent neu starten möchten, führen Sie die folgenden Befehle aus:
kubectl rollout restart deployment metrics-server -n kube-system
kubectl rollout restart deployment konnectivity-agent -n kube-system
Knoten neu erstellen
Nach der Neukonfiguration des API-Servers für die Bereitstellung einer neuen IP-Adresse aktualisiert GKE automatisch Ihre Knoten, um die neue IP-Adresse und die neuen Anmeldedaten zu verwenden, wenn eine Wartung verfügbar ist. GKE aktualisiert alle Knoten auf die GKE-Version, die die Knoten bereits ausführen. Dadurch werden die Knoten neu erstellt. Weitere Informationen finden Sie unter Knotenpool-Upgrades.
Standardmäßig schließt GKE die Rotation von Anmeldedaten sieben Tage nach dem Start automatisch ab. Wenn ein aktives Wartungsfenster oder ein aktiver Ausschluss in Ihrem Cluster verhindert, dass GKE während dieses Zeitraums bestimmte Knoten neu erstellt, kann die Rotation von Anmeldedaten nicht abgeschlossen werden. GKE versucht jedoch weiterhin, die Knoten neu zu erstellen und die Rotation abzuschließen, bis GKE aufgrund der Wartungsverfügbarkeit fortfahren kann. Bei wichtigen Ereignissen wie Google Cloud Next pausiert GKE möglicherweise auch die automatische Neuerstellung von Knoten, damit es nicht zu Unterbrechungen kommt.
Wenn Sie Wartungsausschlüsse oder Wartungsfenster verwenden, die zu einem Fehlschlagen der Rotation führen können, erzwingen Sie die Neuerstellung der Knoten durch GKE, indem Sie einen der folgenden Schritte ausführen:
So aktualisieren Sie die Steuerungsebene in Autopilot-Clustern manuell:
gcloud container clusters upgrade CLUSTER_NAME \ --location=LOCATION \ --master \ --cluster-version=VERSIONErsetzen Sie
VERSIONdurch die GKE-Version, die der Cluster bereits verwendet.In Standardclustern aktualisieren Sie jeden Knotenpool manuell.
Weitere Informationen finden Sie unter Manuelle Änderungen, die GKE-Wartungsrichtlinien berücksichtigen.
Fortschritt der Neuerstellung des Knotenpools prüfen
Führen Sie zur Überwachung des Rotationsvorgangs den folgenden Befehl aus:
gcloud container operations list \ --filter="operationType=UPGRADE_NODES AND status=RUNNING" \ --format="value(name)"Dieser Befehl gibt die Vorgangs-ID des Knotenupgrades zurück.
Um den Vorgang abzufragen, übergeben Sie die Vorgangs-ID an den folgenden Befehl:
gcloud container operations wait OPERATION_ID
Knotenpools werden jeweils einzeln neu erstellt und jeder Knotenpool hat einen eigenen Vorgang. Wenn Sie mehrere Knotenpools nutzen, verwenden Sie diese Anweisungen, um alle einzelnen Vorgänge abzufragen.
API-Clients aktualisieren
Nachdem Sie die Rotation von Anmeldedaten gestartet haben, müssen Sie alle API-Clients außerhalb des Clusters (z. B. kubectl auf Entwicklungsmaschinen) aktualisieren, um die neuen Anmeldedaten zu verwenden und auf die neue IP-Adresse der Steuerungsebene zu verweisen.
Führen Sie den folgenden Befehl für jeden API-Client aus, um Ihre API-Clients zu aktualisieren:
gcloud container clusters get-credentials CLUSTER_NAME \
--location LOCATION
Anmeldedaten des Kubernetes-Dienstkonto aktualisieren
Wenn Sie statische Anmeldedaten für ServiceAccounts in Ihrem Cluster verwenden, wechseln Sie zu kurzlebigen Anmeldedaten. Durch die Rotation werden vorhandene ServiceAccount-Anmeldedaten ungültig. Wenn Sie keine kurzlebigen Anmeldedaten verwenden möchten, müssen Sie die statischen Anmeldedaten für alle ServiceAccounts im Cluster neu erstellen, bevor Sie die Rotation abschließen.
Führen Sie den folgenden Befehl aus, um statische ServiceAccount-Anmeldedaten in Ihrem Cluster zu finden:
kubectl get secrets --all-namespaces --field-selector type=kubernetes.io/service-account-token
Wenn die Ausgabe dieses Befehls No resources found ist, hat Ihr Cluster keine statischen ServiceAccount-Anmeldedaten.
Fest codierte IP-Adressen und Firewallregeln aktualisieren
Wenn Sie die IP-Adresse der Steuerungsebene in Ihrer Umgebung fest codiert haben oder Firewallregeln vorhanden sind, die auf die IP-Adresse der Steuerungsebene ausgerichtet sind, aktualisieren Sie die Adressen auf die neue IP-Adresse. Wenn Sie die Rotation abschließen, ohne die IP-Adressen in Anwendungen und Firewallregeln zu aktualisieren, kann es bei diesen Ressourcen zu Unterbrechungen kommen, wenn GKE die Bereitstellung über die vorherige IP-Adresse der Steuerungsebene beendet.
Rotation abschließen
Nachdem Sie API-Clients außerhalb des Clusters aktualisiert haben, schließen Sie die Rotation ab, um die Steuerungsebene so zu konfigurieren, dass sie nur die neuen Anmeldedaten und die neue IP-Adresse verwendet:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--complete-credential-rotation
Wenn die Rotation von Anmeldedaten nicht abgeschlossen wird und eine Fehlermeldung ähnlich der folgenden zurückgegeben wird, lesen Sie den Hilfeartikel Fehler 400: Knotenpool muss neu erstellt werden:
ERROR: (gcloud.container.clusters.update) ResponseError: code=400, message=Node pool "test-pool-1" requires recreation.
GKE berücksichtigt die Wartungsverfügbarkeit beim automatischen Abschließen der Rotation. GKE ignoriert diese Verfügbarkeit jedoch möglicherweise innerhalb von 30 Tagen vor dem Ablaufdatum, um zu verhindern, dass der Cluster nicht mehr wiederhergestellt werden kann. Wenn der Abschluss der Rotation fehlschlägt und die Rotation vor mindestens sieben Tagen gestartet wurde, versucht GKE, die Rotation bis zum Ablaufdatum der Anmeldedaten abzuschließen. Danach kann der Cluster nicht mehr wiederhergestellt werden. Sie können versuchen, den Cluster wiederherzustellen. Folgen Sie dazu der Anleitung im Abschnitt Cluster nach Ablauf der Zertifizierungsstelle wiederherstellen.
Cluster nach Ablauf der Zertifizierungsstelle wiederherstellen
Nach dem Ablaufdatum der Cluster-Zertifizierungsstelle kann ein Cluster möglicherweise nicht mehr wiederhergestellt werden. Wenn Sie versuchen, eine Rotation von Anmeldedaten nach dem Ablaufdatum der Zertifizierungsstelle zu starten, kann es sein, dass GKE keine neuen Knotenpools erstellen kann. Die folgende Meldung wird in den Logs angezeigt:
x509: certificate has expired or is not yet valid
Sie können versuchen, den Cluster manuell aus diesem Status wiederherzustellen. Da Cluster mit abgelaufenen CAs in der Regel nicht wiederhergestellt werden können, kann es sein, dass dieser Versuch fehlschlägt und Sie einen neuen Cluster erstellen müssen. So versuchen Sie, Ihren Cluster wiederherzustellen:
- Rotation von Anmeldedaten starten Wenn bereits eine Rotation von Anmeldedaten ausgeführt wird, überspringen Sie diesen Schritt.
- Schließen Sie die Rotation ab. Die GKE-Steuerungsebene verwendet die vorherige CA nicht mehr und verwendet ausschließlich die neue CA.
Erstellen Sie neue Knotenpools, um Ihre vorhandenen Knotenpools zu ersetzen.
Wenn die Knotenerstellung mit der Fehlermeldung
IP_SPACE_EXHAUSTED_WITH_DETAILSfehlschlägt, löschen Sie vorhandene Knotenpools, bevor Sie neue Knotenpools erstellen. Wenn Sie einen Knotenpool löschen, werden die IP-Adressen für die Verwendung durch neue Knotenpools verfügbar.Migrieren Sie Ihre Arbeitslasten zu den neuen Knotenpools.
Aktualisieren Sie Kubernetes API-Clients, damit sie die neuen Anmeldedaten und die neue IP-Adresse der Steuerungsebene verwenden.
Aktualisieren Sie statische Kubernetes-ServiceAccount-Anmeldedaten, um Tokens zu verwenden, die von der neuen Zertifizierungsstelle signiert wurden.
Wenn der Cluster nach diesen Schritten immer noch nicht wiederhergestellt werden kann, erstellen Sie einen neuen Cluster.
Nächste Schritte
- Weitere Informationen zum Kubernetes-Secret-Objekt
- Informationen zum Rotieren der IP-Adresse der Steuerungsebene
- Best Practices für GKE RBAC
- Weitere Informationen zur Fehlerbehebung bei GKE