In dieser Anleitung wird erläutert, wie Sie ein Downgrade von Anthos Service Mesh von 1.5.10 auf 1.4.10 in Google Kubernetes Engine ausführen.
Es dauert fünf bis zehn Minuten, um die Komponenten der Anthos Service Mesh-Steuerungsebene noch einmal bereitzustellen. Außerdem müssen Sie in allen Arbeitslasten neue Sidecar-Proxys einfügen, damit sie mit der aktuellen Anthos Service Mesh-Version aktualisiert werden. Wie lange es dauert, die Sidecar-Proxys zu aktualisieren, hängt von vielen Faktoren ab, z. B. von der Anzahl der Pods, der Anzahl der Knoten, den Skalierungseinstellungen der Bereitstellung, den Budget für Pod-Störungen und anderen Konfigurationseinstellungen. Grob geschätzt dauert die Aktualisierung der Sidecar-Proxys 100 Pods pro Minute.
Übersicht über das Downgrade
In diesem Abschnitt werden die Schritte zum Downgrade von Anthos Service Mesh beschrieben.
Prüfen Sie die Unterstützten Features und diese Anleitung, um sich mit den Features und dem Downgradeprozess vertraut zu machen.
Wenn Sie bei der Installation der vorherigen Version von Anthos Service Mesh optionale Features aktiviert haben, müssen Sie dieselben Features beim Downgrade aktivieren. Sie aktivieren optionale Features, indem Sie
--set values
-Flags hinzufügen oder das Flag-f
mit einer YAML-Datei angeben, wenn Sie den Befehlistioctl apply
ausführen.Wenn Sie von Anthos Service Mesh 1.5.10 aus ein Downgrade zu 1.4.10 ausführen und in einer YAML-Datei optionale Features aktiviert haben, müssen Sie die YAML-Datei der IstioOperator API in die der IstioControlPlane API konvertieren.
Wenn Sie ein Downgrade zurück zu 1.4.10 auf einem privaten Cluster ausführen, müssen Sie eine Firewallregel zum Öffnen von Port 9443 hinzufügen, wenn Sie die automatische Sidecar-Injektion verwenden möchten. Wenn Sie die Firewallregel nicht hinzufügen und die automatische Sidecar-Injektion aktiviert ist, erhalten Sie beim Bereitstellen von Arbeitslasten eine Fehlermeldung. Weitere Informationen zum Hinzufügen einer Firewallregel finden Sie unter Firewallregeln für bestimmte Anwendungsfälle hinzufügen.
Planen Sie eine Ausfallzeit. Das Downgrade kann je nach Größe des Clusters bis zu einer Stunde dauern. Beachten Sie, dass hier nicht die Zeit inkludiert ist, die Sie zum erneuten Bereitstellen von Arbeitslasten zum Aktualisieren von Sidecar-Proxys benötigen.
Standardeinstellungen für Projekte und Cluster festlegen
Rufen Sie die Projekt-ID des Projekts ab, in dem der Cluster erstellt wurde:
gcloud
gcloud projects list
Console
Öffnen Sie in der Google Cloud Console die Seite Dashboard:
Klicken Sie oben auf der Seite auf das Drop-down Auswählen aus. Wählen Sie im angezeigten Fenster Auswählen aus Ihr Projekt aus. Die Projekt-ID wird auf der Dashboard-Karte Projektinformationen des Projekts angezeigt.
Erstellen Sie eine Umgebungsvariable für die Projekt-ID:
export PROJECT_ID=
YOUR_PROJECT_ID
Legen Sie das Standardprojekt ID für die Google Cloud CLI fest:
gcloud config set project ${PROJECT_ID}
Erstellen Sie die folgenden Umgebungsvariablen:
Legen Sie den Clusternamen fest:
export CLUSTER_NAME=YOUR_CLUSTER_NAME
Legen Sie
CLUSTER_LOCATION
entweder auf Ihre Clusterzone oder Clusterregion fest:export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
Legen Sie die Standardzone oder -region für Google Cloud-CLI fest.
Wenn Sie einen Cluster mit einer einzelnen Zone haben, legen Sie die Standardzone fest:
gcloud config set compute/zone ${CLUSTER_LOCATION}
Wenn Sie einen regionalen Cluster haben, legen Sie die Standardregion fest:
gcloud config set compute/region ${CLUSTER_LOCATION}
Anmeldedaten und Berechtigungen festlegen
-
Rufen Sie die
Anmeldedaten für die Authentifizierung ab, um mit dem Cluster zu interagieren:
gcloud container clusters get-credentials ${CLUSTER_NAME}
-
Gewähren Sie dem aktuellen Nutzer Cluster-Administratorberechtigungen. Sie benötigen diese Berechtigungen, um die erforderlichen Regeln für die rollenbasierte Zugriffssteuerung (Role Based Access Control, RBAC) für Anthos Service Mesh zu erstellen:
kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --user="$(gcloud config get-value core/account)"
Wenn der Fehler
"cluster-admin-binding" already exists
angezeigt wird, können Sie ihn ignorieren und mit der vorhandenen Cluster-Administratorbindung fortfahren.
Installationsdatei herunterladen
-
Laden Sie die Anthos Service Mesh-Installationsdatei in Ihr aktuelles Arbeitsverzeichnis herunter:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-linux.tar.gz
-
Laden Sie die Signaturdatei herunter und bestätigen Sie die Signatur mit
openssl
:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-linux.tar.gz.1.sig openssl dgst -verify - -signature istio-1.4.10-asm.18-linux.tar.gz.1.sig istio-1.4.10-asm.18-linux.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
Die erwartete Ausgabe ist
Verified OK
. -
Entpacken Sie die Inhalte der Datei in einem Verzeichnis Ihres Dateisystems. So extrahieren Sie beispielsweise den Inhalt in das aktuelle Arbeitsverzeichnis:
tar xzf istio-1.4.10-asm.18-linux.tar.gz
Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis
istio-1.4.10-asm.18
ein Installationsverzeichnis erstellt, das Folgendes enthält:- Beispielanwendungen in
samples
- Die folgenden Tools im Verzeichnis
bin
:istioctl
: Sie verwendenistioctl
, um Anthos Service Mesh zu installieren.asmctl
: Sie verwendenasmctl
, um Ihre Sicherheitskonfiguration nach der Installation von Anthos Service Mesh zu validieren. (Derzeit wirdasmctl
in GKE on VMware nicht unterstützt.)
- Beispielanwendungen in
-
Laden Sie die Anthos Service Mesh-Installationsdatei in Ihr aktuelles Arbeitsverzeichnis herunter:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-osx.tar.gz
-
Laden Sie die Signaturdatei herunter und bestätigen Sie die Signatur mit
openssl
:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.4.10-asm.18-osx.tar.gz.1.sig istio-1.4.10-asm.18-osx.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
Die erwartete Ausgabe ist
Verified OK
. -
Entpacken Sie die Inhalte der Datei in einem Verzeichnis Ihres Dateisystems. So extrahieren Sie beispielsweise den Inhalt in das aktuelle Arbeitsverzeichnis:
tar xzf istio-1.4.10-asm.18-osx.tar.gz
Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis
istio-1.4.10-asm.18
ein Installationsverzeichnis erstellt, das Folgendes enthält:- Beispielanwendungen in
samples
- Die folgenden Tools im Verzeichnis
bin
:istioctl
: Sie verwendenistioctl
, um Anthos Service Mesh zu installieren.asmctl
: Sie verwendenasmctl
, um Ihre Sicherheitskonfiguration nach der Installation von Anthos Service Mesh zu validieren. (Derzeit wirdasmctl
in GKE on VMware nicht unterstützt.)
- Beispielanwendungen in
-
Laden Sie die Anthos Service Mesh-Installationsdatei in Ihr aktuelles Arbeitsverzeichnis herunter:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-win.zip
-
Laden Sie die Signaturdatei herunter und bestätigen Sie die Signatur mit
openssl
:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-win.zip.1.sig openssl dgst -verify - -signature istio-1.4.10-asm.18-win.zip.1.sig istio-1.4.10-asm.18-win.zip <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
Die erwartete Ausgabe ist
Verified OK
. -
Entpacken Sie die Inhalte der Datei in einem Verzeichnis Ihres Dateisystems. So extrahieren Sie beispielsweise den Inhalt in das aktuelle Arbeitsverzeichnis:
tar xzf istio-1.4.10-asm.18-win.zip
Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis
istio-1.4.10-asm.18
ein Installationsverzeichnis erstellt, das Folgendes enthält:- Beispielanwendungen in
samples
- Die folgenden Tools im Verzeichnis
bin
:istioctl
: Sie verwendenistioctl
, um Anthos Service Mesh zu installieren.asmctl
: Sie verwendenasmctl
, um Ihre Sicherheitskonfiguration nach der Installation von Anthos Service Mesh zu validieren. (Derzeit wirdasmctl
in GKE on VMware nicht unterstützt.)
- Beispielanwendungen in
-
Prüfen Sie, ob Sie sich im Stammverzeichnis der Anthos Service Mesh-Installation befinden.
cd istio-1.4.10-asm.18
-
Fügen Sie die Tools der Einfachheit halber im Verzeichnis
/bin
Ihrem PATH hinzu.export PATH=$PWD/bin:$PATH
Linux
macOS
Windows
Ressourcenkonfigurationsdateien vorbereiten
Wenn Sie istioctl apply command
ausführen, um ein Downgrade von Anthos Service Mesh auszuführen, geben Sie -f istio-operator.yaml
in der Befehlszeile an. Diese Datei enthält Informationen zu Ihrem Projekt und Cluster, die zum Aktivieren der Mesh-Telemetrie- und Mesh-Sicherheitsfunktionen erforderlich sind. Laden Sie die Datei istio-operator.yaml
und andere Ressourcenkonfigurationsdateien herunter und legen Sie die Projekt- und Clusterinformationen fest.
So bereiten Sie die Ressourcenkonfigurationsdateien vor:
Installieren Sie
kpt
, falls noch nicht geschehen:gcloud components install kpt
Erstellen Sie optional ein neues Verzeichnis für die Ressourcenkonfigurationsdateien des Anthos Service Mesh-Pakets. Wenn Sie mehrere Cluster einrichten möchten, ist es möglicherweise sinnvoll, den Clusternamen als Verzeichnisnamen zu verwenden.
Wechseln Sie zu dem Verzeichnis, in das Sie das Anthos Service Mesh-Paket herunterladen möchten.
Laden Sie das Anthos Service Mesh-Paket in das aktuelle Arbeitsverzeichnis herunter:
kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.4-asm .
Legen Sie den Clusternamen fest:
kpt cfg set asm cluster-name ${CLUSTER_NAME}
Optional können Sie die Ressourcenkonfigurationsdateien mithilfe der
kpt
-Setter anpassen. Diese Setter verwenden standardmäßig die Standardwerte fürgcloud config
. Wenn Sie die Standardwerte fürgcloud config
festlegen oder die Werte ändern möchten, führen Sie die folgenden Setter aus:Legen Sie die Projekt-ID fest:
kpt cfg set asm gcloud.core.project ${PROJECT_ID}
Legen Sie die Standardzone oder -region fest:
kpt cfg set asm gcloud.compute.zone ${CLUSTER_LOCATION}
Optional können Sie die Ressourcenkonfigurationsdateien in Ihr eigenes Versionsverwaltungssystem wie Cloud Source Repositories einchecken, damit Sie Änderungen an den Dateien verfolgen können.
Downgrade von Anthos Service Mesh durchführen
In diesem Abschnitt wird beschrieben, wie Sie ein Downgrade von Anthos Service Mesh durchführen und aktivieren:
- Die auf der Seite Unterstützte Features aufgeführten unterstützten Standardfeatures
- Anthos Service Mesh-Zertifizierungsstelle (Mesh CA)
- Die Telemetrie-Datenpipeline, die die Anthos Service Mesh-Dashboards in der Google Cloud Console unterstützt
Informationen zum Aktivieren der unterstützten optionalen Features finden Sie unter Optionale Features aktivieren.
So installieren Sie Anthos Service Mesh:
Wählen Sie einen der folgenden Befehle aus, um Anthos Service Mesh im mTLS-Authentifizierungsmodus (mutual TLS, gegenseitiges TLS) PERMISSIVE
oder im mTLS-Modus STRICT
zu konfigurieren.
PERMISSIVE-mTLS
istioctl manifest apply --set profile=asm \ -f asm/cluster/istio-operator.yaml
STRICT-mTLS
istioctl manifest apply --set profile=asm \ -f asm/cluster/istio-operator.yaml \ --set values.global.mtls.enabled=true
Komponenten der Steuerungsebene prüfen
Beim Downgrade müssen die Komponenten der Steuerungsebene neu installiert werden. Das dauert etwa fünf bis zehn Minuten. Die alten Komponenten der Steuerungsebene werden beendet und bei der Installation der neuen Komponenten gelöscht. Sie können den Fortschritt mithilfe des Werts in der Spalte AGE
der Arbeitslasten prüfen.
kubectl get pod -n istio-system
Beispielausgabe:
NAME READY STATUS RESTARTS AGE istio-galley-76d684bf9-jwz65 2/2 Running 0 5m36s istio-ingressgateway-5bfdf7c586-v6wxx 2/2 Terminating 0 25m istio-ingressgateway-7b598c5557-b88md 2/2 Running 0 5m44s istio-nodeagent-bnjg7 1/1 Running 0 5m16s istio-nodeagent-cps2j 1/1 Running 0 5m10s istio-nodeagent-f4x46 1/1 Running 0 5m26s istio-nodeagent-jbl5x 1/1 Running 0 5m38s istio-pilot-5dc4bc4dbf-ds5dh 2/2 Running 0 5m30s istio-pilot-74665549c5-7r6qh 2/2 Terminating 0 25m istio-sidecar-injector-7ddff4b99-b76l7 1/1 Running 0 5m36s promsd-6d4d5b7c5c-dgnd7 2/2 Running 0 5m30s
In diesem Beispiel gibt es zwei Instanzen von istio-ingressgateway
und istio-pilot
. Die Instanzen mit 25m
in der Spalte AGE
werden beendet.
Alle anderen Komponenten werden neu installiert.
Installation prüfen
Wir empfehlen die Verwendung des Analysetools asmctl
, um die grundlegende Konfiguration Ihres Projekts, Ihres Clusters und Ihrer Arbeitslasten zu prüfen. Wenn ein asmctl
-Test fehlschlägt, empfiehlt asmctl
Lösungen, sofern möglich. Mit dem Befehl asmctl validate
werden einfache Tests durchgeführt, mit denen Folgendes geprüft wird:
- Die von Anthos Service Mesh benötigten APIs sind für das Projekt aktiviert.
- Das Istio-Ingress-Gateway ist ordnungsgemäß für den Aufruf von Mesh CA konfiguriert.
- Der allgemeine Zustand von Istiod und Istio-Ingressgateway.
Wenn Sie den Befehl asmctl validate
mit dem optionalen Flag --with-testing-workloads
zusätzlich zu den grundlegenden Tests ausführen, führt asmctl
die Sicherheitstests aus, die Folgendes prüfen:
- Die gegenseitige TLS-Kommunikation (mTLS) ist richtig konfiguriert.
- Die Mesh CA kann Zertifikate ausstellen.
Zum Ausführen der Sicherheitstests stellt asmctl
Arbeitslasten in Ihrem Cluster in einem Test-Namespace bereit, führt die mTLS-Kommunikationstests aus, gibt die Ergebnisse aus und löscht den Test-Namespace.
So führen Sie asmctl
aus:
Achten Sie darauf, dass gcloud-Standardanmeldedaten für Anwendungen festgelegt ist:
gcloud auth application-default login
Rufen Sie, falls noch nicht geschehen, Authentifizierungsdaten für die Interaktion mit dem Cluster ab:
gcloud container clusters get-credentials ${CLUSTER_NAME}
So führen Sie sowohl die grundlegenden als auch die Sicherheitstests durch (sofern die
istio-1.4.10-asm.18/bin
) imPATH
enthalten ist):asmctl validate --with-testing-workloads
Bei Erfolg meldet der Befehl eine Ausgabe, die in etwa so aussieht:
Using Kubernetes context: meshci145g-20200219_us-central1-a_meshci145g To change the context, use the --context flag Validating enabled APIs OK Validating Node-Agent configuration OK Validating Istio system OK Validating issued certs OK Validating sample traffic Launching example services... Sent traffic to example service http code: 200 verified mTLS configuration OK
Sidecar-Proxys aktualisieren
Alle Arbeitslasten, die vor dem Downgrade von Anthos Service Mesh auf Ihrem Cluster ausgeführt wurden, müssen den Sidecar-Proxy enthalten oder er muss für sie aktualisiert worden sein, damit sie die aktuelle Anthos Service Mesh-Version haben.
Mit der automatischen Sidecar-Einfügung können Sie die Sidecar-Dateien für vorhandene Pods mit einem Pod-Neustart aktualisieren. Wie Sie Pods neu starten, hängt davon ab, ob sie als Teil einer Bereitstellung erstellt wurden.
Starten Sie die Bereitstellung neu, wenn Sie eine Bereitstellung verwendet haben. Dadurch werden alle Pods mit Sidecar-Dateien neu gestartet:
kubectl rollout restart YOUR_DEPLOYMENT -n YOUR_NAMESPACE
Wenn Sie keine Bereitstellung verwendet haben, löschen Sie die Pods, und sie werden automatisch mit Sidecar-Dateien neu erstellt:
kubectl delete pod -n YOUR_NAMESPACE --all
Prüfen Sie, ob alle Pods im Namespace Sidecar-Dateien eingefügt haben:
kubectl get pod -n YOUR_NAMESPACE --all
In der folgenden Beispielausgabe des vorherigen Befehls sehen Sie, dass die Spalte
READY
zwei Container für jede Ihrer Arbeitslasten enthält: den primären Container und den Container für den Sidecar-Proxy.NAME READY STATUS RESTARTS AGE YOUR_WORKLOAD 2/2 Running 0 20s ...