Clusteranmeldedaten rotieren


Auf dieser Seite wird erläutert, wie die Rotation von Anmeldedaten in Google Kubernetes Engine-Clustern (GKE) ausgeführt wird.

Rotation von Anmeldedaten in GKE

Die Stammzertifizierungsstelle 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. Weitere Informationen finden Sie unter Lebensdauer der Root-Zertifizierungsstelle des Clusters.

Sie können eine Rotation von Anmeldedaten ausführen, um Anmeldedaten für Ihren Cluster zu widerrufen und neue auszugeben. Durch diesen Vorgang wird der private Schlüssel der Clusterzertifizierungsstelle rotiert und es müssen Knoten neu erstellt werden, um neue Anmeldedaten zu verwenden. Sie müssen die Rotation von Anmeldedaten für Ihren Cluster starten und beenden, bevor Ihre aktuellen Anmeldedaten ablaufen. Bei der Rotation von Anmeldedaten erfolgt auch eine IP-Rotation.

Rotation von Anmeldedaten durchführen

Sie sollten die Anmeldedaten regelmäßig und vor dem Ablaufdatum Ihrer aktuellen Anmeldedaten rotieren. 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.

Cluster mit ablaufenden oder abgelaufenen Anmeldedaten suchen

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 der Anmeldedaten für diesen Cluster durchführen müssen. In dieser Anleitung wird auch das Datum für den Ablauf der Anmeldedaten berücksichtigt. Sie können sich diese Anleitung in der Google Cloud Console ansehen. Sie können auch diese Anleitung mit der gcloud CLI oder der Recommender API aufrufen und 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 der Anmeldedaten innerhalb von 30 Tagen nach dem Ablaufdatum der aktuellen Zertifizierungsstelle, wie im nächsten Abschnitt erläutert.

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 der Anmeldedaten innerhalb von 30 Tagen nach dem Ablaufdatum Ihrer aktuellen Zertifizierungsstelle. Wenn Ihre Clusterzertifizierungsstelle beispielsweise am 6. Januar 2024 abläuft und Sie Ihre Anmeldedaten nicht bis zum 5. Dezember 2023 rotieren, startet GKE eine automatische Rotation am oder nach dem 7. Dezember 2023. schließt diese Rotation sieben Tage nach dem Start des Vorgangs ab. Diese automatische Rotation ist der letzte Versuch zur Vermeidung eines Clusterausfalls. Dabei gilt Folgendes:

  • Automatische Rotationen ignorieren alle konfigurierten Wartungsfenster oder Wartungsausschlüsse
  • Nach Abschluss der Rotation der 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

Von GKE initiierte automatische Rotationen sind eine letzte Maßnahme zur Vermeidung von Ausfällen. Verlassen Sie sich nicht nur auf diese automatischen Rotationen. Sie sind eine vorbeugende Notfallmaßnahme, um vollständige Ausfälle zu vermeiden.

Vorbereitung

Führen Sie die folgenden Schritte durch, 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 gcloud components update ab.

Gültigkeitsdauer von Anmeldedaten prüfen

Wir empfehlen, die Lebensdauer Ihrer Anmeldedaten vor und nach der Rotation der Anmeldedaten zu prüfen, 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 \
    --region REGION_NAME \
    --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

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 \
    | awk 'NR>1 {print "echo; echo Validity for cluster " $1 " in location " $2 ":;\
         gcloud container clusters describe --project PROJECT_ID " $1 " --location " $2 " \
         --format \"value(masterAuth.clusterCaCertificate)\" \
         | base64 --decode | openssl x509 -noout -dates"}' \
    | bash

Rotation von Anmeldedaten durchführen

Die Rotation von Anmeldedaten umfasst die folgenden Schritte:

  1. 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.
  2. 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. Dazu führen Sie ein Upgrade der Knotenversion auf dieselbe GKE-Version durch, die die Knoten bereits ausführen.
  3. 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.
  4. 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 die Rotation von Anmeldedaten starten, erstellt GKE die Knoten für Sie neu. Bei größeren Ereignissen wie der Google Cloud Next können wir jedoch die automatische Neuerstellung von Knoten pausieren, damit es zu keinen Unterbrechungen kommt. Wenn Sie eine Rotation der 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. Sie sollten die Rotation der Anmeldedaten nach Beginn der Rotation manuell verfolgen und abschließen. Verlassen Sie sich nicht auf die automatische Vervollständigung. Diese ist eine Best-Effort-Maßnahme.

Rotation starten

Führen Sie den folgenden Befehl aus, um eine Rotation der Anmeldedaten zu starten:

gcloud container clusters update CLUSTER_NAME \
    --region REGION_NAME \
    --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.

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 bestimmte Knoten während dieses Zeitraums erstellt, kann die Rotation der Anmeldedaten nicht abgeschlossen werden.

  • Wenn Sie Wartungsausschlüsse oder Wartungsfenster verwenden, die zu einem Fehlschlagen der Rotation führen können, führen Sie ein manuelles Upgrade des Clusters durch, um die Neuerstellung des Knotens zu erzwingen:

    gcloud container clusters upgrade CLUSTER_NAME \
        --location=LOCATION \
        --cluster-version=VERSION
    

    Ersetzen Sie VERSION durch die GKE-Version, die der Cluster bereits verwendet.

    Weitere Informationen finden Sie unter Hinweise für Wartungsfenster.

Fortschritt der Neuerstellung des Knotenpools prüfen

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

  2. 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 der Anmeldedaten gestartet haben, müssen Sie alle API-Clients außerhalb des Clusters (z. B. kubectl auf Entwicklermaschinen) aktualisieren, um die neuen Anmeldedaten zu verwenden und auf die neue IP-Adresse der Steuerungsebene 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 \
    --region REGION_NAME

Anmeldedaten für Kubernetes-Dienstkonto aktualisieren

Wenn Sie statische Anmeldedaten für Dienstkonten in Ihrem Cluster verwenden, wechseln Sie zu kurzlebigen Anmeldedaten. Durch Abschluss der Rotation werden vorhandene Dienstkonto-Anmeldedaten ungültig. Wenn Sie keine kurzlebigen Anmeldedaten verwenden möchten, müssen Sie nach Abschluss der Rotation Ihre statischen Anmeldedaten für alle Dienstkonten im Cluster neu erstellen.

Hartcodierte IP-Adressen und Firewallregeln aktualisieren

Wenn Sie die IP-Adresse der Steuerungsebene in Ihrer Umgebung hartcodiert haben oder Firewallregeln haben, die auf die IP-Adresse der Steuerungsebene abzielen, 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, können diese Ressourcen unterbrochen werden, wenn GKE nicht mehr unter der vorherigen IP-Adresse der Steuerungsebene bereitgestellt wird.

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 \
    --region=REGION_NAME \
    --complete-credential-rotation

Wenn die Rotation der Anmeldedaten nicht abgeschlossen wird und eine Fehlermeldung ähnlich der folgenden zurückgegeben wird, lesen Sie die Informationen unter Fehlerbehebung:

ERROR: (gcloud.container.clusters.update) ResponseError: code=400, message=Node pool "test-pool-1" requires recreation.

Nächste Schritte