In dieser Anleitung wird die saubere Installation der Anthos Service Mesh-Version 1.8.6-asm.8 auf GKE on VMware erläutert. Wenn Sie eine frühere Version von Anthos Service Mesh installiert haben, lesen Sie Upgrade von Anthos Service Mesh GKE auf VMware ausführen.
Mit der Installation werden die unterstützten Funktionen auf Ihrem Cluster aktiviert. In diesem Leitfaden wird der Cluster als cluster1
bezeichnet. Sie können diese Schritte jedoch wiederholen, um viele Cluster einzurichten.
Komponenten der Steuerungsebene
In GKE on VMware sind die folgenden Istio-Komponenten vorinstalliert:
- Die Anthos Service Mesh-Zertifizierungsstelle (Citadel) wird 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, auf dem Sie den Installationsprozess steuern können. 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
Umgebungsvariablen festlegen
Rufen Sie den Kontextnamen für den Cluster ab. Verwenden Sie dazu die Werte in der Spalte
NAME
in der Ausgabe dieses Befehls:kubectl config get-contexts
Legen Sie die Umgebungsvariablen auf den Namen des Clusterkontexts fest, der in dieser Anleitung in vielen Schritten verwendet wird:
export CTX_CLUSTER1=CLUSTER1_CONTEXT_NAME
Clusteradministrator-Berechtigungen erteilen
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 --context="${CTX_CLUSTER1}" 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.8.6-asm.8-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.8.6-asm.8-linux-amd64.tar.gz.1.sig openssl dgst -verify /dev/stdin -signature istio-1.8.6-asm.8-linux-amd64.tar.gz.1.sig istio-1.8.6-asm.8-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.8.6-asm.8-linux-amd64.tar.gz
Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis
istio-1.8.6-asm.8
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.8.6-asm.8
-
Laden Sie die Anthos Service Mesh-Installationsdatei in Ihr aktuelles Arbeitsverzeichnis herunter:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.8.6-asm.8-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.8.6-asm.8-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.8.6-asm.8-osx.tar.gz.1.sig istio-1.8.6-asm.8-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.8.6-asm.8-osx.tar.gz
Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis
istio-1.8.6-asm.8
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.8.6-asm.8
-
Laden Sie die Anthos Service Mesh-Installationsdatei in Ihr aktuelles Arbeitsverzeichnis herunter:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.8.6-asm.8-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.8.6-asm.8-win.zip.1.sig openssl dgst -verify - -signature istio-1.8.6-asm.8-win.zip.1.sig istio-1.8.6-asm.8-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.8.6-asm.8-win.zip
Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis
istio-1.8.6-asm.8
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.8.6-asm.8
Linux
macOS
Windows
Zertifizierungsstelle konfigurieren
In diesem Abschnitt wird erläutert, wie Sie Zertifikate und Schlüssel generieren, mit denen Anthos Service Mesh Ihre Arbeitslasten signiert.
Für eine optimale Sicherheit empfehlen wir dringend, eine Offline-Stamm-CA zu behalten und die untergeordneten Zertifizierungsstellen einzusetzen, um für jeden Cluster CAs auszugeben. Weitere Informationen finden Sie unter CA-Zertifikate anschließen. In dieser Konfiguration verwenden alle Arbeitslasten im Service Mesh dieselbe Stammzertifizierungsstelle (Certificate Authority, CA). Jede Anthos Service Mesh CA verwendet einen Zwischen-CA-Signierschlüssel und ein Zertifikat, das von der Stamm-CA signiert wird. Wenn es in einem Mesh mehrere CAs gibt, wird eine Hierarchie des Vertrauens zwischen den CAs eingerichtet. Sie können diese Schritte wiederholen, um Zertifikate und Schlüssel für eine beliebige Anzahl von Zertifizierungsstellen bereitzustellen.
Erstellen Sie ein Verzeichnis für die Zertifikate und Schlüssel:
mkdir -p certs && \ pushd certs
Generieren Sie ein Root-Zertifikat und einen Root-Schlüssel:
make -f ../tools/certs/Makefile.selfsigned.mk root-ca
Dadurch werden diese Dateien generiert:
- root-cert.pem: Root-Zertifikat
- root-key.pem: Root-Schlüssel
- root-ca.conf: Konfiguration für openssl, um das Root-Zertifikat zu generieren
- root-cert.csr: CSR für das Root-Zertifikat
Generieren Sie ein Zwischenzertifikat und einen Zwischenschlüssel:
make -f ../tools/certs/Makefile.selfsigned.mk cluster1-cacerts
Dadurch werden diese Dateien in einem Verzeichnis namens
cluster1
generiert:- ca-cert.pem: Zwischenzertifikate
- ca-key.pem: Zwischenschlüssel
- cert-chain.pem: Die von Istiod verwendete Zertifikatskette
- root-cert.pem: Root-Zertifikat
Wenn Sie diese Schritte mit einem Offline-Computer ausführen, kopieren Sie das generierte Verzeichnis auf einen Computer mit Zugriff auf die Cluster.
Erstellen Sie ein Secret
cacerts
mit allen Eingabedateienca-cert.pem
,ca- key.pem
,root-cert.pem
undcert-chain.pem
:kubectl --context="${CTX_CLUSTER1}" create namespace istio-system kubectl --context="${CTX_CLUSTER1}" create secret generic cacerts -n istio-system \ --from-file=cluster1/ca-cert.pem \ --from-file=cluster1/ca-key.pem \ --from-file=cluster1/root-cert.pem \ --from-file=cluster1/cert-chain.pem
Anthos Service Mesh lokal erkennt diese Präsenz bzw. Schlüssel und verwendet sie während des Installationsprozesses in späteren Schritten.
Kehren Sie zum vorherigen Verzeichnis zurück:
popd
Anthos Service Mesh installieren
Erstellen Sie eine Umgebungsvariable für die Projekt-ID:
export PROJECT_ID=YOUR_PROJECT_ID
Erstellen Sie eine Umgebungsvariable für die Projektnummer:
export PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} --format="value(projectNumber)")
Erstellen Sie eine Umgebungsvariable für die Mesh-ID: Der Name kann ein beliebiger String sein, sollte aber in einem Format vorliegen, das für alle Cluster einheitlich ist.
export MESH_ID="proj-${PROJECT_NUMBER}"
Erstellen Sie die Konfiguration für die Steuerungsebene des Clusters, die Anthos Service Mesh mithilfe des Profils
asm-multicloud
installiert. 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.Verwenden Sie im folgenden Beispiel das in den vorherigen Schritten definierte
MESH_ID
.cat <<EOF > cluster.yaml apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: profile: asm-multicloud revision: asm-186-8 values: global: meshID: MESH_ID multiCluster: clusterName: CLUSTER_NAME network: NETWORK_ID EOF
Wechseln Sie gegebenenfalls zum Verzeichnis
istio-1.8.6-asm.8
. Deristioctl
-Client ist versionsabhängig. Sie müssen die Version im Verzeichnisistio-1.8.6-asm.8/bin
verwenden.Konfiguration auf den Cluster anwenden:
bin/istioctl install --context="${CTX_CLUSTER1}" -f cluster.yaml
Standardnetzwerk festlegen
Legen Sie das Standardnetzwerk für den Namespace
istio-system
fest.Im folgenden Beispiel kann
NETWORK_ID
ein beliebiger String sein, der das Netzwerk eines Clusters identifiziert. In dieser lokalen Konfiguration befindet sich jeder Cluster in seinem eigenen Netzwerk. Deshalb sollte jeder Cluster einen anderen Wert haben. FürNETWORK_ID
gelten die gleichen Stringeinschränkungen wie für ein Kubernetes-Label, das unter Syntax und Zeichensatz beschrieben ist.kubectl --context="${CTX_CLUSTER1}" label \ namespace istio-system topology.istio.io/network=NETWORK_ID
Validierungs-Webhook 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
:cat <<EOF > istiod-service.yaml apiVersion: v1 kind: Service metadata: name: istiod namespace: istio-system labels: istio.io/rev: asm-186-8 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-186-8 EOF
Konfigurieren Sie den Validierungs-Webhook so, dass er den Dienst
istiod
mit dem Überarbeitungslabel finden kann:kubectl --context="${CTX_CLUSTER1}" 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 --context="${CTX_CLUSTER1}" 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.
Die Installation ist erst abgeschlossen, wenn Sie die automatische Sidecar-Proxy-Einfügung (automatische Injektion) aktivieren und die Pods für alle Arbeitslasten neu starten, die auf dem Cluster ausgeführt wurden, bevor Sie Anthos Service Mesh installiert haben.
Wenn Sie die automatische Injektion aktivieren möchten, versehen Sie Ihre Namespaces mit dem Überarbeitungslabel, das bei der Installation von Anthos Service Mesh auf istiod
festgelegt wurde. Das Überarbeitungslabel wird vom Sidecar-Injektor-Webhook verwendet, um eingefügte Sidecars mit einer bestimmten istiod
-Überarbeitung zu verknüpfen. Nachdem Sie das Label hinzugefügt haben, müssen alle im Namespace vorhandenen Pods neu gestartet werden, damit Sidecars eingefügt werden können.
Bevor Sie neue Arbeitslasten in einem neuen Namespace bereitstellen, müssen Sie die automatische Injektion konfigurieren, damit Anthos Service Mesh den Traffic überwachen und sichern kann.
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-186-8-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-186-8,istio=istiod,pod-template-hash=5788d57586 istiod-asm-186-8-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-186-8,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-186-8
.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
Nächste Schritte
Wenn Sie mehrere Cluster für Ihr lokales Service Mesh verwenden möchten, finden Sie weitere Informationen unter Anthos Service Mesh lokal auf mehreren Clustern und Netzwerken installieren.
Andernfalls lautet der nächste Schritt Externe IP-Adressen konfigurieren.