Auf dieser Seite wird gezeigt, wie Sie ein Upgrade für Anthos Service Mesh ausführen.
Plattformadministratoren können ein Upgrade auf Anthos Service Mesh ausführen. Das Upgrade von Anthos Service Mesh ist ein auf Überarbeitung basierendes Upgrade (auch Canary-Upgrade genannt), bei dem sowohl die neue als auch die vorherige Version der Steuerungsebene ausgeführt werden, wenn Sie die neue Version mit einem kleinen Prozentsatz Ihrer Arbeitslasten testen. Dieser Ansatz ist sicherer als ein direktes Upgrade, bei dem die neue Version der Steuerungsebene die vorherige Version ersetzt.
Es dauert fünf bis zehn Minuten, um die Komponenten der Anthos Service Mesh-Steuerungsebene noch einmal bereitzustellen. Sie müssen außerdem neue Sidecar-Proxys in alle Ihre Arbeitslasten einfügen, damit sie mit der aktuellen Anthos Service Mesh-Version aktualisiert werden. Es dauert etwa eine Minute pro 100 Pods, um die Sidecar-Proxys zu aktualisieren. Die Dauer ist von vielen Faktoren abhängig, z. B. von der Anzahl der Pods, der Anzahl der Knoten, den Skalierungseinstellungen der Bereitstellung, den Budgets für Pod-Unterbrechungen und anderen Konfigurationseinstellungen.
Vorbereitung
Prüfen Sie vor dem Upgrade, ob die folgenden Bedingungen erfüllt sind:
- Sie haben einen Zielnutzercluster, der vom Administratorcluster verwaltet wird.
- Auf Ihrem Zielnutzercluster ist eine Anthos Service Mesh-Installation vorhanden, für die Upgrades verfügbar sind.
Vorhandene Installationen prüfen
Prüfen Sie, ob Anthos Service Mesh in Ihrem Cluster installiert ist.
Console
Öffnen Sie in der Management Center-Konsole das Menü Service Mesh, um die Liste der Cluster mit installiertem Anthos Service Mesh aufzurufen.
API
Sie finden in einem Administratorcluster die folgenden benutzerdefinierten Ressourcen, die Ihre aktuelle Anthos Service Mesh-Installation beschreiben:
Ein
ServiceMeshBinding
-Objekt, das einServiceMeshFeatureSpec
-Objekt mit der ID Ihres Nutzerclusters bindet. Zum Ermitteln des Objekts führen Sie den im Folgenden aufgeführten Befehl aus. Da dieser Befehl möglicherweise mehrere Objekte zurückgibt, müssen Sie das Objekt mit der ID des Zielclusters in seiner Spezifikation suchen.KUBECONFIG=ADMIN_KUBECONFIG kubectl get servicemeshbinding -n anthos-management-center
Im Folgenden ist ein Beispiel für den Inhalt des Objekts aufgeführt:
apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1 kind: ServiceMeshBinding metadata: name: service-mesh-binding-sample namespace: anthos-management-center spec: configs: - configRef: name: PREVIOUS_SERVICE_MESH_SPEC namespace: anthos-management-center placement: clusterIDs: - TARGET_CLUSTER_ID
Ein
ServiceMeshFeatureSpec
-Objekt, das die Spezifikation Ihrer Anthos Service Mesh-Installation definiert. Der Namespace und der Name des Objekts werden im Feldconfig.configRef
des ObjektsServiceMeshBinding
referenziert, das im vorherigen Beispiel beschrieben wurde. Führen Sie den folgenden Befehl aus, um das Objekt aufzurufen:KUBECONFIG=ADMIN_KUBECONFIG kubectl get servicemeshfeaturespec PREVIOUS_SERVICE_MESH_SPEC -n anthos-management-center -o yaml
Im Folgenden ist ein Beispiel für den Inhalt des Objekts aufgeführt:
apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1 kind: ServiceMeshFeatureSpec metadata: name:PREVIOUS_SERVICE_MESH_SPEC namespace: anthos-management-center spec: version: 1.7.3-asm.6
Neuere Version von Anthos Service Mesh installieren
Sie können mithilfe der Management Center-Konsole oder der API eine Aktualisierung auf eine neuere Version von Anthos Service Mesh ausführen.
Console
- Rufen Sie in der Management Center-Konsole das Menü Dashboard auf.
- Klicken Sie auf den Tab Upgrades, um alle verfügbaren Upgrades aufzurufen.
- Klicken Sie für den Cluster, den Sie aktualisieren möchten, auf Upgrades anzeigen.
- Ermitteln Sie in der Liste „Verfügbare Upgrades” die Anthos Service Mesh-Zielversion, auf die Sie ein Upgrade ausführen möchten, und klicken Sie auf Upgrade, um die Anthos Service Mesh-Upgrade-Seite zu öffnen.
- Prüfen Sie die Informationen der Zielversion, z. B. die Versionsnummer, die Beschreibung und einen Link zu den Versionshinweisen, und klicken Sie auf Weiter.
- Klicken Sie im Pop-up-Dialogfeld auf Upgrade, um mit der Installation der Zielversion von Anthos Service Mesh im Zielcluster zu beginnen.
- Die Seite Service Mesh wird geöffnet. Dort können Sie feststellen, dass die Zielversion installiert wird.
API
Führen Sie die folgenden Schritte aus, um mit kubectl
-Befehlen im Administratorcluster eine neuere Version von Anthos Service Mesh zu installieren:
Erstellen Sie ein neues
ServiceMeshFeatureSpec
-Objekt für die neue Version. Im Folgenden ist ein Beispielobjekt für Version1.8.3-asm.2
aufgeführt:apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1 kind: ServiceMeshFeatureSpec metadata: name: NEW_SERVICE_MESH_SPEC namespace: anthos-management-center spec: version: 1.8.3-asm.2
Aktualisieren Sie das vorhandene Objekt
ServiceMeshBinding
, um einen neuen Eintrag einzufügen und die neueServiceMeshFeatureSpec
an den Cluster zu binden:apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1 kind: ServiceMeshBinding metadata: name: service-mesh-binding-sample namespace: anthos-management-center spec: configs: - configRef: name: PREVIOUS_SERVICE_MESH_SPEC namespace: anthos-management-center placement: clusterIDs: - TARGET_CLUSTER_ID - configRef: name: NEW_SERVICE_MESH_SPEC namespace: anthos-management-center placement: clusterIDs: - TARGET_CLUSTER_ID
Die neuere Version von Anthos Service Mesh wird im Administratorcluster installiert. Mit dem folgenden Befehl können Sie prüfen, ob die Installation anwendungsbereit ist:
KUBECONFIG=ADMIN_KUBECONFIG kubectl get servicemeshbinding -n anthos-management-center -o jsonpath="{range .items[*].status.bindingItemStatuses[*]}{'\n'}{['clusterID', 'configRef', 'conditions']}" | grep NEW_SERVICE_MESH_SPEC | grep TARGET_CLUSTER_ID
Ersetzen Sie dabei
TARGET_CLUSTER_ID
undNEW_SERVICE_MESH_SPEC
durch die im ObjektServiceMeshBinding
konfigurierten Werte.Im Folgenden ist ein Beispiel für die Ausgabe aufgeführt:
target-user-cluster-1 {"name":"new-spec-q64x7","namespace":"anthos-management-center"} [{"lastTransitionTime":"2021-05-27T18:06:27Z","message":"","observedGeneration":1,"reason":"Healthy","status":"True","type":"Ready"}]
Der
status: true
der BedingungReady
zeigt an, dass die Installation ausgeführt wurde.
Die vorherige Version von Anthos Service Mesh wird nicht automatisch entfernt. Sie müssen Ihre Arbeitslasten manuell auf die neue Version von Anthos Service Mesh migrieren und die vorherige Version deinstallieren.
Arbeitslasten migrieren
Führen Sie die folgenden Schritte auf Ihrem Nutzercluster aus, um Ihre Arbeitslasten zu migrieren:
Rufen Sie das Überarbeitungslabel Ihrer vorherigen Version und der neuen Version von Anthos Service Mesh ab. So ermitteln Sie diese Werte:
Console
- Rufen Sie in der Management Center-Konsole das Menü Service Mesh auf.
- Ermitteln Sie in der Clusterliste das Überarbeitungslabel in der Spalte „Überarbeitung“ für den Cluster.
API
Führen Sie dazu diesen Befehl aus:
KUBECONFIG=USER_KUBECONFIG kubectl get pod -n istio-system -l app=istiod -L istio.io/rev
Im Folgenden ist ein Beispiel für die Ausgabe aufgeführt:
NAME READY STATUS RESTARTS AGE REV istiod-asm-173-6-756d989c58-p84b9 1/1 Running 0 13h asm-173-6 istiod-asm-173-6-756d989c58-t6vh8 1/1 Running 0 13h asm-173-6 istiod-asm-183-2-76f64c6bc7-2qnxq 1/1 Running 0 17h asm-183-2 istiod-asm-183-2-76f64c6bc7-8nrpz 1/1 Running 0 17h asm-183-2
In der Ausgabe befindet sich das Überarbeitungslabel unter der Spalte „REV”. In diesem Beispiel ist der Wert
asm-183-2
. Dieses Label wird später verwendet, um die Sidecar-Injektion für die neue Anthos Service Mesh-Version auszulösen.Fügen Sie das Überarbeitungslabel einem Namespace hinzu: Ändern Sie im folgenden Befehl
REVISION
in den Wert, der dem Überarbeitungslabel der neuen Anthos Service Mesh-Version entspricht.KUBECONFIG=USER_KUBECONFIG kubectl label namespace NAMESPACE istio.io/rev=REVISION istio-injection- --overwrite
Starten Sie die Arbeitslasten neu, um die erneute Injektion auszulösen, z. B. um alle Bereitstellungen in einem Namespace neu zu starten:
KUBECONFIG=USER_KUBECONFIG kubectl rollout restart deployment -n NAMESPACE
Prüfen Sie, ob Ihre Pods so konfiguriert sind, dass sie auf die neue Version von
istiod
verweisen.KUBECONFIG=USER_KUBECONFIG kubectl get pods -n NAMESPACE -l istio.io/rev=REVISION
Testen Sie die Anwendung, um zu prüfen, ob die Arbeitslasten ordnungsgemäß funktionieren.
Wenn Sie Arbeitslasten in anderen Namespaces haben, wiederholen Sie die Schritte 2 bis 5, um den Namespace mit einem Label zu versehen und die Arbeitslasten neu zu starten.
Vorherige Version von Anthos Service Mesh löschen
Wenn Ihre Anwendung wie erwartet funktioniert, können Sie die vorherige Version von Anthos Service Mesh mithilfe des Management Centers oder der API deinstallieren.
Console
- Rufen Sie in der Management Center-Konsole das Menü Service Mesh auf.
- Klicken Sie in der Spalte Versionen auf den Link der vorherigen Anthos Service Mesh-Version.
- Klicken Sie auf der Seite Service Mesh bearbeiten auf Service Mesh entfernen.
- In einem Pop-up-Dialogfeld wird vor dem Löschen das Ergebnis einer Konfidenzprüfung angezeigt.
In diesem Dialogfeld sind alle Namespaces und Pods enthalten, die weiter von der vorherigen Version von Anthos Service Mesh abhängig sind. Dazu prüfen Sie das Label
istio.io/rev
auf Namespaces und Pods. Wenn die Prüfung eine solche Abhängigkeit ermittelt, können Sie erst fortfahren, wenn diese Pods oder Namespaces migriert wurden. - Wenn die Konfidenzprüfung keine weiteren Abhängigkeiten feststellt, klicken Sie auf Entfernen, um Anthos Service Mesh auf dem Zielcluster zu deinstallieren.
Nachdem Sie die Löschanfrage gesendet haben, wird die Seite „Service Mesh” geöffnet und die vorherige Version von Anthos Service Mesh ist nicht mehr enthalten. Die Deinstallation der vorherigen Anthos Service Mesh-Ressourcen kann einige Minuten dauern.
API
Prüfen Sie vor dem Löschen der vorherigen Version von Anthos Service Mesh, dass es keine Pods oder Namespaces gibt, die von dieser Version von Anthos Service Mesh abhängig sind.
Führen Sie den folgenden Befehl aus, um mögliche Namespace-Abhängigkeiten zu prüfen:
KUBECONFIG=USER_KUBECONFIG kubectl get namespace -l istio.io/rev=PREVIOUS_REVISION
Ersetzen Sie dabei
PREVIOUS_REVISION
durch das Überarbeitungslabel der vorherigen Anthos Service Mesh-Version.Führen Sie den folgenden Befehl aus, um mögliche Pod-Abhängigkeiten zu prüfen:
KUBECONFIG=USER_KUBECONFIG kubectl get pod -l istio.io/rev=PREVIOUS_REVISION --field-selector metadata.namespace!=istio-system --all-namespaces
Wenn die Abfragen leere Ergebnisse zurückgeben, fahren Sie mit dem nächsten Schritt fort. Andernfalls migrieren Sie die Arbeitslast, bevor Sie fortfahren.
Aktualisieren Sie das Objekt
ServiceMeshBinding
im Administratorcluster, um die Bindung der vorherigen Feature-Spezifikation an den Zielcluster aufzuheben. Im Folgenden ist ein Beispiel für das ObjektServiceMeshBinding
nach Entfernen des EintragsPREVIOUS_SERVICE_MESH_SPEC
aufgeführt:apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1 kind: ServiceMeshBinding metadata: name: service-mesh-binding-sample namespace: anthos-management-center spec: configs: - configRef: name: NEW_SERVICE_MESH_SPEC namespace: anthos-management-center placement: clusterIDs: - TARGET_CLUSTER_ID
Nachdem
ServiceMeshBinding
aktualisiert wurde, wird die vorherige Anthos Service Mesh-Version entfernt. Die Deinstallation kann mehrere Minuten dauern. Prüfen Sie mit dem folgenden Befehl, ob die vorherige Version entfernt wurde:KUBECONFIG=USER_KUBECONFIG kubectl get deployment -n istio-system -l istio.io/rev=PREVIOUS_REVISION
Dieser Befehl gibt ein leeres Ergebnis zurück, wenn die Deinstallation abgeschlossen ist.