In dieser Anleitung wird erläutert, wie Sie von Istio 1.6 zu Anthos Service Mesh 1.6.14 in einem GKE-Cluster migrieren. Wenn Sie eine ältere Version von Istio installiert haben, müssen Sie zuerst Istio auf 1.6 aktualisieren.
Hinweise
Bevor Sie Anthos Service Mesh installieren, müssen folgende Voraussetzungen erfüllt sein:
- Richten Sie Ihre Umgebung ein, um die benötigten Tools zu installieren.
- Richten Sie Ihr Projekt ein, um die erforderlichen APIs zu aktivieren und Berechtigungen festzulegen.
- Richten Sie den Cluster ein, um die erforderlichen Clusteroptionen zu aktivieren.
- Sie haben Migration von Istio vorbereiten gelesen.
Anmeldedaten und Berechtigungen festlegen
Initialisieren Sie Ihr Projekt, um es für die Installation vorzubereiten. Mit diesem Befehl wird unter anderem ein Dienstkonto erstellt, mit dem Komponenten der Steuerungsebene, wie der Sidecar-Proxy, sicher auf die Daten und Ressourcen Ihres Projekts zugreifen kann:
curl --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --data '' \ "https://meshconfig.googleapis.com/v1alpha1/projects/${PROJECT_ID}:initialize"
Der Befehl gibt ein Paar leere geschweifte Klammern zurück:
{}
Rufen Sie die Anmeldedaten für die Authentifizierung ab, um mit dem Cluster zu interagieren:
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --project=${PROJECT_ID}
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.6.14-asm.2-linux-amd64.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.6.14-asm.2-linux-amd64.tar.gz.1.sig openssl dgst -verify /dev/stdin -signature istio-1.6.14-asm.2-linux-amd64.tar.gz.1.sig istio-1.6.14-asm.2-linux-amd64.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.6.14-asm.2-linux-amd64.tar.gz
Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis
istio-1.6.14-asm.2
ein Installationsverzeichnis erstellt, das Folgendes enthält:- Beispielanwendungen im Verzeichnis
samples
. - Das
istioctl
-Befehlszeilentool, das Sie zum Installieren von Anthos Service Mesh verwenden, befindet sich im Verzeichnisbin
. - Die Anthos Service Mesh-Konfigurationsprofile befinden sich im Verzeichnis
manifests/profiles
.
- Beispielanwendungen im Verzeichnis
-
Laden Sie die Anthos Service Mesh-Installationsdatei in Ihr aktuelles Arbeitsverzeichnis herunter:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-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.6.14-asm.2-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.6.14-asm.2-osx.tar.gz.1.sig istio-1.6.14-asm.2-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.6.14-asm.2-osx.tar.gz
Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis
istio-1.6.14-asm.2
ein Installationsverzeichnis erstellt, das Folgendes enthält:- Beispielanwendungen im Verzeichnis
samples
. - Das
istioctl
-Befehlszeilentool, das Sie zum Installieren von Anthos Service Mesh verwenden, befindet sich im Verzeichnisbin
. - Die Anthos Service Mesh-Konfigurationsprofile befinden sich im Verzeichnis
manifests/profiles
.
- Beispielanwendungen im Verzeichnis
-
Laden Sie die Anthos Service Mesh-Installationsdatei in Ihr aktuelles Arbeitsverzeichnis herunter:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-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.6.14-asm.2-win.zip.1.sig openssl dgst -verify - -signature istio-1.6.14-asm.2-win.zip.1.sig istio-1.6.14-asm.2-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.6.14-asm.2-win.zip
Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis
istio-1.6.14-asm.2
ein Installationsverzeichnis erstellt, das Folgendes enthält:- Beispielanwendungen im Verzeichnis
samples
. - Das
istioctl
-Befehlszeilentool, das Sie zum Installieren von Anthos Service Mesh verwenden, befindet sich im Verzeichnisbin
. - Die Anthos Service Mesh-Konfigurationsprofile befinden sich im Verzeichnis
manifests/profiles
.
- Beispielanwendungen im Verzeichnis
-
Prüfen Sie, ob Sie sich im Stammverzeichnis der Anthos Service Mesh-Installation befinden.
cd istio-1.6.14-asm.2
-
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 den Befehl istioctl install
ausführen, geben Sie -f istio-operator.yaml
in der Befehlszeile an. Diese Datei enthält Informationen zu Ihrem Projekt und Cluster, die Anthos Service Mesh erfordert. Sie müssen ein Paket mit istio-operator.yaml
- und anderen Ressourcenkonfigurationsdateien herunterladen, um die Projekt- und Clusterinformationen festlegen zu können.
Wählen Sie zuerst ein Paket basierend auf der Zertifizierungsstelle (Certificate Authority, CA) aus, die Sie verwenden möchten:
asm
: thumb_up_alt Dieses Paket aktiviert die Zertifizierungsstelle Mesh CA, die für neue Installationen empfohlen wird.asm-citadel
: Sie können Citadel als CA aktivieren. Weitere Informationen zur Auswahl dieses Pakets finden Sie unter Zertifizierungsstelle auswählen.
So bereiten Sie die Ressourcenkonfigurationsdateien vor:
Erstellen Sie ein neues Verzeichnis für die Ressourcenkonfigurationsdateien des Anthos Service Mesh-Pakets. Es empfiehlt sich, den Clusternamen als Verzeichnisnamen zu verwenden.
Wechseln Sie zu dem Verzeichnis, in das Sie das Anthos Service Mesh-Paket herunterladen möchten.
Laden Sie je nach CA das gewünschte Paket herunter.
Mesh-Zertifizierungsstelle
Laden Sie das Paket
asm
herunter, das die Mesh-Zertifizierungsstelle aktiviert:kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.6-asm asm
Citadel
Laden Sie das Paket
asm-citadel
herunter, mit dem Citadel als CA aktiviert wird:kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm-citadel@release-1.6-asm asm
Legen Sie die Projekt-ID für das Projekt fest, in dem der Cluster erstellt wurde:
kpt cfg set asm gcloud.core.project ${PROJECT_ID}
Legen Sie die Projektnummer für das Flotten-Hostprojekt fest:
kpt cfg set asm gcloud.project.environProjectNumber ${FLEET_PROJECT_NUMBER}
Legen Sie den Clusternamen fest:
kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
Legen Sie die Standardzone oder -region fest:
kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
Legen Sie das Konfigurationsprofil fest, das Sie verwenden möchten:
Wenn sich alle Cluster im selben Projekt befinden, legen Sie das Profil
asm-gcp
fest:kpt cfg set asm anthos.servicemesh.profile asm-gcp
Wenn Ihr Service Mesh mehrere Cluster enthält, die in verschiedenen Projekten enthalten sind, legen Sie das Profil
asm-gcp-multiproject
fest (Beta):kpt cfg set asm anthos.servicemesh.profile asm-gcp-multiproject
Wenn Sie das Profil
asm-gcp-multiproject
festgelegt und das Paketasm
heruntergeladen haben, das die Mesh-Zertifizierungsstelle aktiviert, müssen Sie die vertrauenswürdigen Domain-Aliasse für die anderen Projekte konfigurieren, aus denen das Multi-Cluster-/Multi-Projekt-Mesh besteht. Andernfalls überspringen Sie diesen Schritt.Rufen Sie die Projekt-ID aller Cluster im Multi-Cluster-/Multi-Projekt-Mesh ab.
Legen Sie für die Projekt-ID jedes Clusters die vertrauenswürdigen Domain-Aliase fest. Wenn Sie beispielsweise Cluster in drei Projekten haben, führen Sie den folgenden Befehl aus und ersetzen Sie
PROJECT_ID_1
,PROJECT_ID_2
undPROJECT_ID_3
durch die Projekt-ID jedes Clusters.kpt cfg set asm anthos.servicemesh.trustDomainAliases PROJECT_ID_1.svc.id.goog PROJECT_ID_2.svc.id.goog PROJECT_ID_3.svc.id.goog
Wenn Sie die Cluster in den anderen Projekten konfigurieren, können Sie denselben Befehl verwenden.
Mithilfe der vertrauenswürdigen Domain-Aliasse kann Mesh CA Arbeitslasten in Clustern in anderen Projekten authentifizieren. Zusätzlich zur Festlegung der vertrauenswürdigen Domain-Aliasse müssen Sie nach der Installation von Anthos Service Mesh das clusterübergreifende Load-Balancing aktivieren.
Geben Sie die Werte der
kpt
-Setter aus:kpt cfg list-setters asm
Überprüfen Sie in der Ausgabe des Befehls, ob die Werte für die folgenden Setter korrekt sind:
- gcloud.compute.location
- gcloud.container.cluster
- gcloud.core.project
- gcloud.project.environProjectNumber
Zu Anthos Service Mesh migrieren
Für die Migration von Istio wird der Upgrade für die Dual-Steuerungsebene empfohlen. Dieser Dienst wird in der Istio-Dokumentation als Canary-Upgrades bezeichnet. Mit einem Upgrade der dualen Steuerungsebene installieren Sie eine neue Version der Steuerungsebene neben der vorhandenen Steuerungsebene. Fügen Sie bei der Installation der neuen Version das Label revision
ein, das die Version der neuen Steuerungsebene angibt. Jede Überarbeitung ist eine vollständige Implementierung der Anthos Service Mesh-Steuerungsebene mit eigenem Deployment und Dienst.
Anschließend migrieren Sie zur neuen Version. Legen Sie dazu für Ihre Arbeitslasten dasselbe revision
-Label fest, das auf die neue Steuerungsebene verweist, und führen Sie einen rollierenden Neustart durch, um die neue Anthos Service Mesh-Version in die Proxys einzufügen. Bei diesem Ansatz können Sie die Auswirkungen des Upgrades auf einen kleinen Prozentsatz Ihrer Arbeitslasten überwachen. Nachdem Sie Ihre Anwendung getestet haben, können Sie den gesamten Traffic zur neuen Version migrieren. Dieser Ansatz ist wesentlich sicherer als ein direktes Upgrade, bei dem eine neue Steuerungsebene die vorherige Version der Steuerungsebene ersetzt.
Steuerungsebene aktualisieren
Führen Sie den folgenden Befehl aus, um die neue Steuerungsebene mit dem Konfigurationsprofil bereitzustellen, das Sie in der Datei istio-operator.yaml
festgelegt haben. Wenn Sie ein unterstütztes optionales Feature aktivieren möchten, fügen Sie in der folgenden Befehlszeile -f
und den YAML-Dateinamen hinzu. Weitere Informationen finden Sie unter Optionale Features aktivieren.
istioctl install \ -f asm/cluster/istio-operator.yaml \ --set revision=asm-1614-2
Mit dem Argument --set revision
wird das Label istio.io/rev
zu istiod
hinzugefügt. Nach der Ausführung des Befehls haben Sie für die Steuerungsebene zwei Bereitstellungen und Dienste, die nebeneinander ausgeführt werden:
kubectl get pods -n istio-system
Beispielausgabe:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-c56675fcd-86zdn 1/1 Running 0 2m9s istio-ingressgateway-c56675fcd-vn4nv 1/1 Running 0 2m21s istiod-asm-1614-2-6d5cfd4b89-xztlr 1/1 Running 0 3m44s istiod-fb7f746f4-wcntn 1/1 Running 0 50m
Arbeitslasten neu bereitstellen
Die Installation der neuen Überarbeitung hat keine Auswirkungen auf die vorhandenen Sidecar-Proxys. Für ein Upgrade müssen Sie diese so konfigurieren, dass sie auf die neue Steuerungsebene verweisen. Dies wird während der Einfügung von Sidecar-Dateien mithilfe des Namespace-Labels istio.io/rev
gesteuert.
Aktualisieren Sie Arbeitslasten, die mit der neuen Anthos Service Mesh-Version eingefügt werden:
kubectl label namespace NAMESPACE istio-injection- istio.io/rev=asm-1614-2 --overwrite
Das Label
istio-injection
muss entfernt werden, da es Vorrang vor dem Labelistio.io/rev
hat.Starten Sie die Pods neu, um das erneute Einfügen auszulösen:
kubectl rollout restart deployment -n NAMESPACE
Prüfen Sie, ob die Pods so konfiguriert sind, dass sie auf die Steuerungsebene
istiod-asm-1614-2
verweisen:kubectl get pods -n NAMESPACE -l istio.io/rev=asm-1614-2
Testen Sie die Anwendung, um zu prüfen, ob die Arbeitslasten ordnungsgemäß funktionieren.
Wenn Sie Arbeitslasten in anderen Namespaces haben, wiederholen Sie die vorherigen Schritte für jeden Namespace.
Wenn Sie sich sicher sind, dass Ihre Anwendung wie erwartet funktioniert, fahren Sie mit Migration abschließen fort. Andernfalls führen Sie die folgenden Schritte aus, um ein Rollback auf die vorherige Version durchzuführen:
Für ein Rollback:
Aktualisieren Sie Arbeitslasten, damit die vorherige Version der Steuerungsebene eingeschleust werden kann:
kubectl label namespace NAMESPACE istio.io/rev- istio-injection=enabled --overwrite
Starten Sie die Pods neu, um die erneute Injektion auszulösen, damit die Proxys die vorherige Version erhalten:
kubectl rollout restart deployment -n NAMESPACE
Stellen Sie die vorherige Version von
istio-ingressgateway
noch einmal bereit:kubectl -n istio-system rollout undo deploy istio-ingressgateway
Entfernen Sie die neue Steuerungsebene:
kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-asm-1614-2 -n istio-system --ignore-not-found=true
Migration abschließen
Wenn Sie mit der Anwendung zufrieden sind, führen Sie die folgenden Schritte aus, um die Migration zu Anthos Service Mesh abzuschließen:
Wenn Sie vom Add-on "Istio on GKE" migrieren, deaktivieren Sie das Add-on:
gcloud beta container clusters update CLUSTER_NAME \ --project=CLUSTER_PROJECT_ID \ --update-addons=Istio=DISABLED
Führen Sie den folgenden Befehl aus, um den kanonischen Dienstüberwacher bereitzustellen:
kubectl apply -f asm/canonical-service/controller.yaml
Der Befehl stellt den kanonischen Dienstüberwacher in Ihrem Cluster bereit. Der kanonische Dienstüberwacher gruppiert Arbeitslasten, die zum selben logischen Dienst gehören, und ist erforderlich, um zusätzliche Funktionen im Dashboard "Dienste" in der Cloud Console freizuschalten. Weitere Informationen finden Sie unter kanonischen Dienstüberwacher aktivieren und deaktivieren.
Entfernen Sie die alte Steuerungsebene:
kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true
Anthos Service Mesh-Dashboards aufrufen
Dieser Abschnitt ist nur relevant, wenn Sie Anthos Service Mesh mit dem Konfigurationsprofil asm-gcp
installiert haben. Wenn Sie das Profil asm-gcp-multiproject
verwendet haben, um Anthos Service Mesh zu installieren, sind Telemetriedaten in den Anthos Service Mesh-Dashboards in der Google Cloud Console nicht verfügbar.
Nachdem Sie Arbeitslasten mit den eingefügten Sidecar-Proxys auf Ihrem Cluster bereitgestellt haben, können Sie die Anthos Service Mesh-Seiten in der Google Cloud Console entdecken, um alle Beobachtbarkeitsfunktionen von Anthos Service Mesh zu sehen. Nach der Bereitstellung von Arbeitslasten dauert es etwa ein oder zwei Minuten, bis Telemetriedaten in der Google Cloud Console angezeigt werden.
In der Cloud Console wird der Zugriff auf Anthos Service Mesh durch die Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM) gesteuert. Für den Zugriff auf Anthos Service Mesh-Seiten muss ein Projektinhaber den Nutzern die Rolle „Projektbearbeiter“ oder „Betrachter“ oder die unter Zugriff auf Anthos Service Mesh in der Google Cloud Console steuern beschriebenen restriktiveren Rollen gewähren.
Wechseln Sie in der Google Cloud Console zu Anthos Service Mesh.
Wählen Sie das Google Cloud-Projekt aus der Drop-down-Liste in der Menüleiste aus.
Wenn Sie mehr als ein Service Mesh haben, wählen Sie das Mesh aus der Drop-down-Liste Service Mesh aus.
Weitere Informationen finden Sie unter Mit Anthos Service Mesh in der Google Cloud Console vertraut machen.
Zusätzlich zu den Anthos Service Mesh-Seiten werden Messwerte, die sich auf Ihre Dienste beziehen (z. B. die Anzahl der Anfragen, die von einem bestimmten Dienst empfangen wurden), an Cloud Monitoring gesendet, wo sie im Metrics Explorer angezeigt werden.
So rufen Sie Messwerte auf:
Rufen Sie in der Google Cloud Console die Seite Monitoring auf:
Wählen Sie Ressourcen > Metrics Explorer.
Eine vollständige Liste der Messwerte finden Sie unter Istio-Messwerte in der Cloud Monitoring-Dokumentation.
Cluster registrieren
Sie müssen den Cluster in der Flotte des Projekts registrieren, um Zugriff auf die einheitliche Benutzeroberfläche in der Google Cloud Console zu erhalten. Eine Flotte ermöglicht die einheitliche Anzeige und Verwaltung der Cluster und ihrer Arbeitslasten, einschließlich Clustern außerhalb von Google Cloud.
Informationen zum Registrieren Ihres Clusters finden Sie unter Cluster bei der Flotte registrieren.
Nächste Schritte
- Beispielanwendung Online Boutique auf Anthos Service Mesh bereitstellen
- Cluster zu einem Anthos Service Mesh hinzufügen