In dieser Anleitung wird die saubere Installation der Anthos Service Mesh-Version 1.7.8-asm.10 auf einem vorhandenen GKE on VMware-Cluster beschrieben. Wenn Sie eine frühere Version von Anthos Service Mesh installiert haben, lesen Sie Upgrade von Anthos Service Mesh auf GKE auf VMware ausführen.
Bei der Installation werden die unterstützten Features in Ihrem Cluster für das Konfigurationsprofil asm-multicloud
aktiviert.
Komponenten der Steuerungsebene
In GKE on VMware sind die folgenden Istio-Komponenten vorinstalliert:
- Citadel ist im Namespace
kube-system
installiert. - Pilot und das Istio-Ingress-Gateway sind im Namespace
gke-system
installiert.
GKE on VMware verwendet diese Komponenten, um eingehenden Traffic zu ermöglichen und die Kommunikation zwischen von Google gesteuerten Komponenten zu sichern. Wenn Sie nur Ingress-Funktionen benötigen, müssen Sie OSS Istio oder Anthos Service Mesh nicht installieren. Weitere Informationen zum Konfigurieren von Ingress finden Sie unter Ingress aktivieren.
Wenn Sie Anthos Service Mesh installieren, sind dessen Komponenten im Namespace istio-system
installiert. Da sich die Anthos Service Mesh-Komponenten in einem anderen Namespace befinden, stehen sie nicht in Konflikt mit den vorinstallierten Istio-Komponenten von GKE on VMware.
Hinweise
Lesen Sie die folgenden Voraussetzungen, bevor Sie mit der Einrichtung beginnen.
Voraussetzungen
Sie benötigen ein Anthos-Abo. Alternativ ist eine „Pay as you go“-Abrechnungsoption nur für GKE Enterprise in Google Cloud verfügbar. Weitere Informationen finden Sie in der GKE Enterprise-Preisübersicht.
Prüfen Sie, ob Ihr Nutzercluster, auf dem Sie Anthos Service Mesh installieren, mindestens 4 vCPUs, 15 GB Arbeitsspeicher und 4 Knoten hat.
Verwenden Sie für die Benennung Ihrer Dienstports die folgende Syntax:
name: protocol[-suffix]
. Die eckigen Klammern geben dabei ein optionales Suffix an, das mit einem Bindestrich beginnen muss. Weitere Informationen finden Sie unter Dienstports benennen.Prüfen Sie, ob Ihre Clusterversion unter Unterstützte Umgebungen aufgeführt ist. Mit dem
gkectl
-Befehlszeilentool können Sie die Clusterversion prüfen. Wenngkectl
nicht installiert ist, lesen Sie die Informationen unter GKE On-Prem-Downloads.gkectl version
Umgebung einrichten
Sie benötigen die folgenden Tools auf dem Computer, von dem Sie Anthos Service Mesh installieren möchten. Sie können Anthos Service Mesh nur auf einem Nutzercluster und nicht auf einem Administratorcluster installieren.
curl
-Befehlszeilentool- Google Cloud CLI
Nach der Installation des Google Cloud CLI:
Authentifizieren Sie sich mit dem Google Cloud CLI:
gcloud auth login
Aktualisieren Sie die Komponenten:
gcloud components update
Installieren Sie
kubectl
:gcloud components install kubectl
Wenn Sie Ihre Installation mit der Online Boutique-Beispielanwendung bereitstellen und testen möchten, installieren Sie
kpt
:gcloud components install kpt
Wechseln Sie den Kontext zu Ihrem Nutzercluster (falls nötig):
kubectl config use-context CLUSTER_NAME
Gewähren Sie dem Nutzerkonto Administratorberechtigungen (Ihre E-Mail-Adresse für die Anmeldung in Google Cloud). 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=USER_ACCOUNT
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.7.8-asm.10-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.7.8-asm.10-linux-amd64.tar.gz.1.sig openssl dgst -verify /dev/stdin -signature istio-1.7.8-asm.10-linux-amd64.tar.gz.1.sig istio-1.7.8-asm.10-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.7.8-asm.10-linux-amd64.tar.gz
Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis
istio-1.7.8-asm.10
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
install/kubernetes/operator/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.7.8-asm.10-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.7.8-asm.10-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.7.8-asm.10-osx.tar.gz.1.sig istio-1.7.8-asm.10-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.7.8-asm.10-osx.tar.gz
Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis
istio-1.7.8-asm.10
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
install/kubernetes/operator/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.7.8-asm.10-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.7.8-asm.10-win.zip.1.sig openssl dgst -verify - -signature istio-1.7.8-asm.10-win.zip.1.sig istio-1.7.8-asm.10-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.7.8-asm.10-win.zip
Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis
istio-1.7.8-asm.10
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
install/kubernetes/operator/profiles
.
- Beispielanwendungen im Verzeichnis
-
Prüfen Sie, ob Sie sich im Stammverzeichnis der Anthos Service Mesh-Installation befinden.
cd istio-1.7.8-asm.10
-
Fügen Sie die Tools der Einfachheit halber im Verzeichnis
/bin
Ihrem PATH hinzu.export PATH=$PWD/bin:$PATH
Linux
macOS
Windows
Namespace istio-system
erstellen
Erstellen Sie einen Namespace namens "istio-system" für die Komponenten der Steuerungsebene:
kubectl create namespace istio-system
Webhook für die Validierung konfigurieren
Wenn Sie Anthos Service Mesh installieren, legen Sie ein Überarbeitungslabel auf istiod
fest. Sie müssen für den Validierungs-Webhook dieselbe Überarbeitung festlegen.
Kopieren Sie die folgende YAML-Datei in eine Datei mit dem Namen istiod-service.yaml
:
apiVersion: v1
kind: Service
metadata:
name: istiod
namespace: istio-system
labels:
istio.io/rev: asm-178-10
app: istiod
istio: pilot
release: istio
spec:
ports:
- port: 15010
name: grpc-xds # plaintext
protocol: TCP
- port: 15012
name: https-dns # mTLS with k8s-signed cert
protocol: TCP
- port: 443
name: https-webhook # validation and injection
targetPort: 15017
protocol: TCP
- port: 15014
name: http-monitoring # prometheus stats
protocol: TCP
selector:
app: istiod
istio.io/rev: asm-178-10
Anthos Service Mesh installieren
Führen Sie den folgenden Befehl aus, um Anthos Service Mesh mit dem Profil
asm-multicloud
zu installieren. 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 \ --set profile=asm-multicloud \ --set revision=asm-178-10
Mit dem Argument
--set revision
wirdistiod
ein Überarbeitungslabel im Formatistio.io/rev=asm-178-10
hinzugefügt. Das Überarbeitungslabel wird vom automatischen Sidecar-Injektor-Webhook verwendet, um eingefügte Sidecars mit einer bestimmtenistiod
-Überarbeitung zu verknüpfen. Wenn Sie die automatische Sidecar-Injektion für einen Namespace aktivieren möchten, müssen Sie sie mit einer Überarbeitung kennzeichnen, die mit dem Label aufistiod
übereinstimmt.Konfigurieren Sie den Validierungs-Webhook so, dass er den Dienst
istiod
mit dem Überarbeitungslabel finden kann:kubectl apply -f istiod-service.yaml
Dieser Befehl erstellt einen Diensteintrag, dank dem der Webhook automatisch Konfigurationen prüfen kann, bevor sie angewendet werden.
Automatisches gegenseitiges TLS (automTLS) ist standardmäßig aktiviert. Beim automatischen mTLS erkennt ein Client-Sidecar-Proxy automatisch, ob der Server eine Sidecar-Datei hat. Die Client-Sidecar-Datei sendet mTLS an Arbeitslasten mit Sidecar-Dateien und Nur-Text-Traffic an Arbeitslasten ohne Sidecar-Dateien.
Komponenten der Steuerungsebene prüfen
Prüfen Sie, ob die Pods der Steuerungsebene in istio-system
ausgeführt werden:
kubectl get pod -n istio-system
Die erwartete Ausgabe sieht in etwa so aus:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-74cc894bfd-786rg 1/1 Running 0 7m19s istiod-78cdbbbdb-d7tps 1/1 Running 0 7m36s promsd-576b8db4d6-lqf64 2/2 Running 1 7m19s
Sidecar-Proxys einfügen
Anthos Service Mesh verwendet Sidecar-Proxys, um die Sicherheit, Zuverlässigkeit und Beobachtbarkeit von Netzwerken zu verbessern. Mit Anthos Service Mesh werden diese Funktionen vom primären Container der Anwendung abstrahiert und in einem gemeinsamen Out-of-Process-Proxy implementiert, der als separater Container im selben Pod bereitgestellt wird. Zum Einfügen des Sidecar-Proxys in Ihre Pods konfigurieren Sie die automatische Sidecar-Proxy-Einfügung (automatisches Einfügen), indem Sie Ihre Namespaces mit demselben Überarbeitungslabel versehen, das Sie bei der Installation von Anthos Service Mesh für istiod
festgelegt haben.
Sie müssen die automatische Einfügung in allen Namespaces mit Arbeitslasten aktivieren, die vor der Installation von Anthos Service Mesh auf Ihrem Cluster ausgeführt wurden.
Bevor Sie neue Arbeitslasten bereitstellen, muss die automatische Einfügung konfiguriert werden, um den Traffic mit Anthos Service Mesh überwachen und schützen zu können.
So aktivieren Sie die automatische Einfügung:
Verwenden Sie den folgenden Befehl, um das Überarbeitungslabel für
istiod
zu finden:kubectl -n istio-system get pods -l app=istiod --show-labels
Die Ausgabe sieht dann ungefähr so aus:
NAME READY STATUS RESTARTS AGE LABELS istiod-asm-178-10-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-178-10,istio=istiod,pod-template-hash=5788d57586 istiod-asm-178-10-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-178-10,istio=istiod,pod-template-hash=5788d57586
Notieren Sie sich den Wert des Überarbeitungslabels
istiod
aus der Ausgabe in der SpalteLABELS
, das auf das Präfixistio.io/rev=
folgt. In diesem Beispiel ist der Wertasm-178-10
.Wenden Sie das Überarbeitungslabel an und entfernen Sie das Label
istio-injection
, falls vorhanden. Im folgenden Befehl istNAMESPACE
der Name des Namespace, in dem Sie die automatische Einfügung aktivieren möchten.REVISION
ist das Überarbeitungslabel, das Sie im vorherigen Schritt notiert haben.kubectl label namespace NAMESPACE istio-injection-istio.io/rev=REVISION --overwrite
Sie können die Nachricht
"istio-injection not found"
in der Ausgabe ignorieren. Das bedeutet, dass der Namespace bisher nicht das Labelistio-injection
hatte, was bei Neuinstallationen von Anthos Service Mesh oder neuen Bereitstellungen zu erwarten wäre. Da die automatische Einfügung fehlschlägt, wenn ein Namespace sowohl das Labelistio-injection
als auch das Überarbeitungslabel enthält, umfassen allekubectl label
-Befehle in der Anthos Service Mesh-Dokumentation das Entfernen des Labelsistio-injection
.Wenn vor der Installation von Anthos Service Mesh in Ihrem Cluster Arbeitslasten ausgeführt wurden, starten Sie die Pods neu, um eine erneute Injektion auszulösen.
Wie Sie Pods neu starten, hängt von der Anwendung und der Umgebung ab, in der sich der Cluster befindet. Beispielsweise können Sie in Ihrer Staging-Umgebung einfach alle Pods löschen, wodurch sie neu gestartet werden. Aber in Ihrer Produktionsumgebung haben Sie vielleicht einen Prozess, der ein Blau/Grün-Deployment implementiert, sodass Pods sicher neu gestartet werden können, um Traffic-Unterbrechungen zu vermeiden.
Sie können
kubectl
verwenden, um einen rollierenden Neustart durchzuführen:kubectl rollout restart deployment -n NAMESPACE
Überprüfen Sie, ob Ihre Pods so konfiguriert sind, dass sie auf die neue Version von
istiod
verweisen.kubectl get pods -n NAMESPACE -l istio.io/rev=REVISION
Externe IP-Adresse konfigurieren
Die Standardinstallation von Anthos Service Mesh geht davon aus, dass LoadBalancer
-Diensten automatisch eine externe IP-Adresse zugewiesen wird. Dies gilt nicht für GKE on VMware. Aus diesem Grund müssen Sie der IP-Adresse des Anthos Service Mesh-Ingress-Gateways manuell eine IP-Adresse zuweisen.
Folgen Sie zum Konfigurieren einer externen IP-Adresse einem der folgenden Abschnitte je nach Load-Balancing-Modus des Clusters:
Integrierten Load-Balancing-Modus konfigurieren
Öffnen Sie die Konfiguration des
istio-ingressgateway
-Dienstes:kubectl edit svc -n istio-system istio-ingressgateway
Die Konfiguration für den Dienst
istio-ingressgateway
wird im Standardtexteditor der Shell aufgerufen.Fügen Sie der Datei die folgende Zeile unter dem Spezifikationsblock (
spec
) hinzu:loadBalancerIP: <your static external IP address>
Beispiel:
spec: loadBalancerIP: 203.0.113.1
Speichern Sie die Datei.
Manuellen Load-Balancing-Modus konfigurieren
Um einen Dienst vom Typ NodePort mit einer VIP auf dem ausgewählten Load-Balancer verfügbar zu machen, müssen Sie zuerst die nodePort
-Werte ermitteln:
Rufen Sie die Konfiguration des Dienstes
istio-ingressgateway
in Ihrer Shell auf:kubectl get svc -n istio-system istio-ingressgateway -o yaml
Jeder Port für die Gateways von Anthos Service Mesh wird angezeigt. Die entsprechende Befehlsausgabe sieht etwa so aus:
... ports: - name: status-port nodePort: 30391 port: 15020 protocol: TCP targetPort: 15020 - name: http2 nodePort: 31380 port: 80 protocol: TCP targetPort: 80 - name: https nodePort: 31390 port: 443 protocol: TCP targetPort: 443 - name: tcp nodePort: 31400 port: 31400 protocol: TCP targetPort: 31400 - name: https-kiali nodePort: 31073 port: 15029 protocol: TCP targetPort: 15029 - name: https-prometheus nodePort: 30253 port: 15030 protocol: TCP targetPort: 15030 - name: https-grafana nodePort: 30050 port: 15031 protocol: TCP targetPort: 15031 - name: https-tracing nodePort: 31204 port: 15032 protocol: TCP targetPort: 15032 - name: tls nodePort: 30158 port: 15443 protocol: TCP targetPort: 15443 ...
Machen Sie diese Ports über Ihren Load-Balancer verfügbar.
Der Dienstport
http2
hat beispielsweiseport
80 undnodePort
31380. Angenommen, die Knotenadressen für Ihren Nutzercluster lauten192.168.0.10
,192.168.0.11
und192.168.0.12
und die VIP Ihres Load-Balancers ist203.0.113.1
.Konfigurieren Sie dann Ihren Load-Balancer so, dass der an
203.0.113.1:80
gesendete Traffic an192.168.0.10:31380
,192.168.0.11:31380
oder192.168.0.12:31380
weitergeleitet wird. Sie können die Dienstports auswählen, die Sie für diese VIP freigeben möchten.