In dieser Anleitung wird die saubere Installation der Anthos Service Mesh-Version 1.6.14-asm.2 auf angehängten GKE Enterprise-Clustern beschrieben. Verwenden Sie diese Anleitung, um Anthos Service Mesh in den folgenden Umgebungen zu installieren:
- Amazon Elastic Kubernetes Service (Amazon EKS) in der Kubernetes-Version 1.16
- Microsoft Azure Kubernetes Service (Microsoft AKS) in der Kubernetes-Version 1.16
Durch die Installation werden die unterstützten Funktionen auf Ihrem Cluster für das Konfigurationsprofil asm-multicloud
aktiviert.
Hinweise
Informationen zum Erstellen Ihres Google Cloud-Projekts und zum Registrieren des Clusters in der Flotte des Projekts finden Sie unter Angehängte GKE Enterprise-Cluster einrichten.
Lesen Sie die folgenden Anforderungen und Beschränkungen.
Voraussetzungen
Der Nutzercluster, auf dem Sie Anthos Service Mesh installieren, hat mindestens 4 vCPUs, 15 GB Arbeitsspeicher und 4 Replikate.
Auf dem Cluster ist weder Anthos Service Mesh noch das Open-Source-Framework Istio installiert.
Für die Aufnahme in das Service Mesh müssen Dienstports benannt werden und der Name muss das Protokoll des Ports in der folgenden Syntax enthalten:
name: protocol[-suffix]
, wobei die eckigen Klammern ein optionales Suffix angeben, das mit einem Bindestrich beginnen muss. Weitere Informationen finden Sie unter Dienstports benennen.
Einschränkungen
Mit einem Google Cloud-Projekt kann nur ein Mesh-Netzwerk verknüpft sein.
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
Installieren Sie die erforderliche Version von
kpt
:curl -L https://github.com/GoogleContainerTools/kpt/releases/download/v0.39.2/kpt_linux_amd64 > kpt_0_39_2 chmod +x kpt_0_39_2 alias kpt="$(readlink -f kpt_0_39_2)"
Wechseln Sie den Kontext zu Ihrem Nutzercluster:
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
Installation von Anthos Service Mesh vorbereiten
-
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
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-1614-2
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-1614-2
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-1614-2
Mit dem Argument
--set revision
wirdistiod
ein Überarbeitungslabel im Formatistio.io/rev=asm-1614-2
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
aktiv sind:
kubectl get pod -n istio-system
Die erwartete Ausgabe sieht in etwa so aus:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-cff9f5c7d-qg4ls 1/1 Running 0 7m5s istio-ingressgateway-cff9f5c7d-vlkzb 1/1 Running 0 7m20s istiod-66b587859c-886gx 1/1 Running 0 7m33s istiod-66b587859c-dfs2j 1/1 Running 0 7m33s
Wenn aus der Ausgabe des Befehls hervorgeht, dass eine oder mehrere Komponenten nicht den Status Running
haben, finden Sie unter Fehlerbehebung für GKE Enterprise auf angehängten Clustern ein Skript, mit dem Sie Details zu den Komponenten abrufen können.
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.
Bevor Sie Arbeitslasten bereitstellen, muss die Sidecar-Proxy-Einfügung konfiguriert werden, um den Traffic mit Anthos Service Mesh überwachen und schützen zu können.
Alle Arbeitslasten, die vor der Installation von Anthos Service Mesh auf Ihrem Cluster ausgeführt wurden, müssen den Sidecar-Proxy enthalten oder aktualisiert haben, damit sie die aktuelle Anthos Service Mesh-Version haben. Bevor Sie neue Arbeitslasten bereitstellen, muss die Sidecar-Proxy-Einfügung konfiguriert werden, um den Traffic mit Anthos Service Mesh überwachen und schützen zu können.
Wenn Sie Sidecar-Injektion aktivieren möchten, müssen Sie Ihre Namespaces mit derselben Überarbeitung kennzeichnen, die sie auf istiod
festgelegt haben. Führen Sie den folgenden Befehl aus, um sich die Labels auf istiod
anzeigen zu lassen:
kubectl -n istio-system get pods -l app=istiod --show-labels
Bestätigen Sie, dass sich das Überarbeitungslabel istio.io/rev=asm-1614-2
in der Ausgabe befindet. Mit diesem Label wird die automatische Einfügung aktiviert. Sie können die automatische Einfügung mit einem einzigen Befehl aktivieren. Beispiel:
kubectl label namespace NAMESPACE istio-injection-istio.io/rev=asm-1614-2 --overwrite
Dabei ist NAMESPACE
der Name des Namespace für die Dienste der Anwendung oder default
, wenn Sie nicht explizit einen Namespace erstellt haben.
Weitere Informationen finden Sie unter Sidecar-Proxys einfügen.
Beispielanwendung bereitstellen
Anthos Service Mesh bietet ein vorkonfiguriertes Ingress-Gateway, istio-ingressgateway
, mit dem Sie eingehenden Traffic zu Anwendungen verwalten können, die in Ihrem Service Mesh ausgeführt werden. So machen Sie Anwendungen zugänglich, die außerhalb des Clusters liegen (z. B. über einen Browser):
Sie müssen die externe IP-Adresse von
istio-ingressgateway
abrufen.Ihre Anwendung muss ein Gateway und eine VirtualService-Ressource definieren, ähnlich der Datei
frontend-gateway.yaml
der Beispielanwendung für die Online-Boutique.
So stellen Sie die Beispielanwendung bereit und führen sie aus
Laden Sie das Beispiel herunter:
kpt pkg get \ https://github.com/GoogleCloudPlatform/microservices-demo.git/release \ microservices-demo
Aktivieren Sie die automatische Sidecar-Einfügung:
kubectl label namespace default istio-injection=enabled
Stellen Sie das Beispiel im Cluster bereit:
kubectl apply -f microservices-demo
So rufen Sie die externe IP-Adresse von istio-ingressgateway
ab:
Erstellen Sie die Umgebungsvariable für den Hostschlüssel:
Microsoft AKS
export HOST_KEY="ip"
Amazon EKS
export HOST_KEY="hostname"
Erstellen Sie die Umgebungsvariable
INGRESS_HOST
:export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].'"$HOST_KEY"'}')
Erstellen Sie die Umgebungsvariable
INGRESS_PORT
:export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
Rufen Sie die Anwendung in Ihrem Browser auf. Ersetzen Sie in der folgenden URL
EXTERNAL_IP
durch$INGRESS_HOST:$INGRESS_PORT
:http://EXTERNAL_IP/
Entfernen Sie das Beispiel, wenn Sie fertig sind:
kubectl delete -f microservices-demo