IP-Adresse der Steuerungsebene rotieren

Auf dieser Seite wird erläutert, wie Sie eine IP-Rotation für die Steuerungsebene in Google Kubernetes Engine-Clustern (GKE) durchführen.

Bevor Sie diese Seite lesen, sollten Sie mit der Rotation von Anmeldedaten vertraut sein. Wir empfehlen, eine Rotation von Anmeldedaten durchzuführen, die auch eine IP-Rotation umfasst. Möglicherweise müssen Sie jedoch eine eigenständige IP-Rotation durchführen, wenn Sie keine vollständige Rotation von Anmeldedaten durchführen können.

Diese Seite richtet sich an Sicherheitsexperten, die den Clusterlebenszyklus in GKE verwalten. 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 Ihrer Clusteranmeldedaten hängt davon ab, wann Sie den Cluster erstellt oder Ihre Anmeldedaten zuletzt rotiert haben.

Sie können diese Anmeldedaten widerrufen und neu ausstellen, indem Sie eine der folgenden Arten von Rotation durchführen. In den meisten Fällen empfehlen wir, eine vollständige Rotation von Anmeldedaten durchzuführen, die umfassender ist als eine IP-Adressrotation.

  • **Rotation von Anmeldedaten**:

    • Rotiert die IP-Adresse, die die Steuerungsebene für den Kubernetes API-Server verwendet.
    • Rotiert die Stammzertifizierungsstelle des Clusters.
    • Rotiert die Kubernetes-ServiceAccount-Schlüssel, die zum Signieren und Überprüfen von ServiceAccount-Anmeldedaten verwendet werden.
    • Rotiert die Zertifizierungsstelle der Aggregationsebene.
  • IP-Adressrotation:

    • Rotiert die IP-Adresse, die die Steuerungsebene für den Kubernetes API-Server verwendet.
    • Rotiert die Stammzertifizierungsstelle des Clusters.

Bei beiden Rotationsarten müssen Knoten neu erstellt werden, bevor sie neue Anmeldedaten verwenden können.

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 diesen Task verwenden möchten, installieren und dann initialisieren Sie die gcloud CLI. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit dem gcloud components update Befehl ab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.

IP-Rotation durchführen

Eine IP-Rotation ist ein Vorgang, der aus mehreren Schritten besteht.

  1. Wenn Sie eine IP-Rotation einleiten, verwendet Ihre Steuerungsebene neben der ursprünglichen IP-Adresse noch eine neue IP-Adresse.
  2. GKE erstellt Ihre Knotenpools neu, um die neue IP-Adresse zu verwenden. Dabei wird die Wartungsverfügbarkeit berücksichtigt. Sie können Ihre Knotenpools auch manuell neu erstellen, indem Sie ein Upgrade der Knotenpoolversion auf dieselbe GKE-Version durchführen, die bereits auf den Knoten ausgeführt wird.
  3. Nachdem Sie eine Rotation eingeleitet haben, müssen Sie die API-Clients Ihres Clusters aktualisieren (z. B. Entwicklungsmaschinen mit der kubectl-Befehlszeile), um mit der Steuerungsebene über die neue IP-Adresse kommunizieren zu können.
  4. Nach Abschluss der Rotation beendet die Steuerungsebene die Bereitstellung von Traffic über die vorherige IP-Adresse.

Wenn Sie eine IP-Adressrotation starten, erstellt GKE Ihre Knoten neu. Dabei wird die Wartungsverfügbarkeit berücksichtigt. Bei größeren Veranstaltungen wie Google Cloud Google Cloud Next unterbricht GKE möglicherweise die automatische Neuerstellung von Knoten, damit es nicht zu Unterbrechungen kommt. Weitere Informationen dazu, wie sich die Wartungsverfügbarkeit auf die IP-Rotation auswirkt und welche Art von Unterbrechungen in Ihrem Cluster während der Schritte einer Rotation auftreten, finden Sie in der Zeile für die IP-Rotation in der Tabelle der manuellen Änderungen, die die Knoten mit einer Knotenupgrade-Strategie neu erstellen und die Wartungsrichtlinien berücksichtigen. GKE ist auf die Ressourcen verfügbarkeit angewiesen, um die Knoten zu aktualisieren. Weitere Informationen zu Knotenupdates finden Sie unter Unterbrechungen bei Knotenupdates planen.

Wenn Sie eine IP-Adressrotation nicht innerhalb von sieben Tagen nach dem Start abschließen, versucht GKE, die Rotation für Sie abzuschließen. Wenn einige Knoten in Ihrem Cluster noch die vorherige IP-Adresse verwenden, schlägt der automatische Abschlussvorgang fehl. GKE versucht jedoch weiterhin, den Vorgang abzuschließen, bis die Knoten neu erstellt wurden und der Vorgang abgeschlossen werden kann.

Sie sollten die IP-Adressrotation nach dem Start manuell verfolgen und abschließen. Sie können die Wartungsverfügbarkeit jederzeit überschreiben und bestimmte Schritte manuell auslösen, um sicherzustellen, dass die Rotation von Anmeldedaten abgeschlossen werden kann. Verlassen Sie sich nicht auf den automatischen Abschluss, da dies nur ein Best-Effort-Ansatz ist.

Rotation starten

  1. Führen Sie den folgenden Befehl aus, um eine IP-Rotation zu starten:

    gcloud container clusters update CLUSTER_NAME \
        --start-ip-rotation
    

    Ersetzen Sie CLUSTER_NAME durch den Namen des Clusters.

    Die entsprechende Ausgabe sieht etwa so aus:

    This will start an IP Rotation on cluster CLUSTER_NAME.
    The master will be updated to serve on a new IP address in addition to
    the current IP address. Google Kubernetes Engine will then schedule recreation of all nodes
    to point to the new IP address.  If maintenance window is
    used, nodes are not recreated until a maintenance window occurs. See
    documentation on how to manually update nodes. This operation is
    long-running and will block other operations on the cluster (including
    delete) until it has run to completion.
    Do you want to continue (Y/n)?
    

    Mit diesem Befehl wird die Steuerungsebene so konfiguriert, dass sie zwei IP-Adressen verwendet, die ursprüngliche Adresse und eine neue Adresse.

  2. Bestätigen Sie die Rotation und lassen Sie die Shell geöffnet, um den Vorgang abzuschließen.

Clusterinterne Komponenten mit langlebigen Verbindungen neu starten

Nachdem Sie eine IP-Adress- oder Anmeldedatenrotation gestartet haben, wird auch die Zertifizierungsstelle des Clusters rotiert. Einige clusterinterne Komponenten, die langlebige TLS-Verbindungen aufrechterhalten, z. B. metrics-server und konnectivity-agent, vertrauen möglicherweise nicht automatisch der neuen Cluster-Zertifizierungsstelle.

In dieser Situation können diese Verbindungen bei der Kommunikation mit Knoten oder anderen Clusterendpunkten fehlschlagen. In den Komponentenlogs werden möglicherweise TLS-Handshakefehler wie x509: certificate signed by unknown authority angezeigt.

Wenn diese Fehler nach dem Start 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-Zertifizierungsstellenzertifikate zu laden. Führen Sie beispielsweise die folgenden Befehle aus, um metrics-server und konnectivity-agent neu zu starten:

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 auf die neue IP-Adresse. GKE aktualisiert alle Ihre Knoten auf die nächste unterstützte Knotenversion, wodurch die Knoten neu erstellt werden. Weitere Informationen finden Sie unter Knotenpool-Upgrades.

Standardmäßig schließt GKE die Rotation von IP-Adressen sieben Tage nach dem Start automatisch ab. Wenn ein aktives Wartungsfenster oder ein aktiver Wartungsausschluss in Ihrem Cluster verhindert, dass GKE einige Knoten innerhalb dieses Zeitraums von sieben Tagen neu erstellt, kann die IP-Adressrotation zunächst nicht abgeschlossen werden. GKE versucht jedoch weiterhin, die Knoten neu zu erstellen und die Rotation abzuschließen, bis die Wartungsverfügbarkeit GKE dies ermöglicht.

  • 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=CONTROL_PLANE_LOCATION \
        --cluster-version=VERSION
    

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

    Weitere Informationen finden Sie unter Automatische Wartung, bei der die GKE-Wartungs richtlinien berücksichtigt werden.

Fortschritt der Neuerstellung von 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 IP-Rotation eingeleitet haben, müssen Sie alle API-Clients außerhalb des Clusters (z. B. kubectl auf Entwicklermaschinen) so aktualisieren, dass sie auf die neue IP-Adresse 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
Hinweis:

Fest codierte IP-Adressen und Firewallregeln aktualisieren

Wenn Sie die IP-Adresse der Steuerungsebene in Ihrer Umgebung fest codiert haben oder wenn Sie Firewallregeln haben, 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, können bei diesen Ressourcen Unterbrechungen auftreten, 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 neue IP-Adresse verwendet.

Führen Sie den folgenden Befehl aus, um die Rotation abzuschließen:

gcloud container clusters update CLUSTER_NAME \
    --complete-ip-rotation

Die Ausgabe sieht in etwa so aus:

This will complete the in-progress IP Rotation on cluster CLUSTER_NAME.
The master will be updated to stop serving on the old IP address and only
serve on the new IP address. Make sure all API clients have been updated
to communicate with the new IP address (e.g. by running `gcloud container
clusters get-credentials --project PROJECT_ID --region COMPUTE_REGION
CLUSTER_NAME`). This operation is long-running and will
block other operations on the cluster (including delete) until it has
run to completion.

Wenn die IP-Adressrotation 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.

Wenn Sie eine IP-Adressrotation nicht innerhalb von sieben Tagen nach dem Start abschließen, versucht GKE, die Rotation für Sie abzuschließen. Wenn einige Knoten in Ihrem Cluster noch die vorherige IP-Adresse verwenden – möglicherweise aufgrund der Wartungsverfügbarkeit und damit verbundenen Einschränkungen, die verhindern, dass die Knoten neu erstellt werden – schlägt der automatische Abschluss fehl. GKE versucht jedoch weiterhin, den Vorgang abzuschließen, bis die Knoten neu erstellt wurden und der Vorgang abgeschlossen werden kann.

Nächste Schritte