In dieser Anleitung wird die Installation einer sauberen Installation der Anthos Service Mesh-Version 1.6.14-asm.2 in Anthos Clusters on AWS erläutert.
Bei Anthos Service Mesh ist das Istio-Ingress-Gateway vorinstalliert. Wenn Sie jedoch einen Ingress-Controller verwenden möchten, können Sie mit Anthos Service Mesh eine Kubernetes Ingress-Ressource einrichten. In dieser Anleitung erfahren Sie, wie Sie Anthos Service Mesh installieren und optional eine Kubernetes Ingress-Ressource einrichten.
Vorbereitung
Bevor Sie mit der Installation von Anthos Service Mesh beginnen, müssen Sie die folgenden Aufgaben ausgeführt haben:
- Der Verwaltungsdienst muss installiert sein.
- Nutzercluster erstellen
- Sie haben ein AWS-Netzwerk eingerichtet.
- Lesen Sie die folgenden Anforderungen und Beschränkungen, bevor Sie mit der Einrichtung beginnen.
Anforderungen
Achten Sie darauf, dass der Nutzercluster, auf dem Sie Anthos Service Mesh installieren, mindestens 4 vCPUs, 15 GB Arbeitsspeicher und 4 Replikate hat.
Lesen Sie Dienstports benennen, bevor Sie Arbeitslasten bereitstellen.
Achten Sie darauf, dass Ihre Clusterversion unter Unterstützte Umgebungen aufgeführt ist.
Beschränkungen
Mit einem Google Cloud-Projekt kann nur ein Mesh 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- Das Cloud SDK (das
gcloud
-Befehlszeilentool)
Nach der Installation des Cloud SDK:
Authentifizieren Sie sich beim Cloud SDK:
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
Installationsdatei herunterladen
Linux
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
Folgende Ausgabe wird erwartet:
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 diesem 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, mit dem Sie Anthos Service Mesh installieren, 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
macOS
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
Folgende Ausgabe wird erwartet:
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 diesem 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, mit dem Sie Anthos Service Mesh installieren, 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
Windows
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
Folgende Ausgabe wird erwartet:
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 diesem 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, mit dem Sie Anthos Service Mesh installieren, 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
Anthos Service Mesh installieren
In diesem Abschnitt wird erläutert, wie Sie Anthos Service Mesh auf Ihrem Nutzercluster installieren. Dadurch werden die unterstützten Standardfeatures aktiviert, die auf der Seite Unterstützte Features für das Profil asm-multicloud
aufgeführt sind. Sie können Ingress für das öffentliche oder das private Subnetz aktivieren.
Öffentlich
Wechseln Sie gegebenenfalls zum Verzeichnis
istio-1.6.14-asm.2
. Deristioctl
-Client ist versionsabhängig. Sie müssen die Version im Verzeichnisistio-1.6.14-asm.2/bin
verwenden.Führen Sie den folgenden Befehl aus, um Anthos Service Mesh 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.Installieren Sie Anthos Service Mesh:
bin/istioctl install \ -f manifests/profiles/asm-multicloud.yaml \ --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.
Privat
Im Folgenden fügen Sie die Annotation service.beta.kubernetes.io/aws-load-balancer-internal
allen Diensten hinzu, die von Anthos Service Mesh erstellt werden. Wenn diese Annotation vorhanden ist, erstellt Anthos Clusters on AWS private Ingress-Dienste.
Wechseln Sie gegebenenfalls zum Verzeichnis
istio-1.6.14-asm.2
. Deristioctl
-Client ist versionsabhängig. Sie müssen die Version im Verzeichnisistio-1.6.14-asm.2/bin
verwenden.Speichern Sie die folgende YAML-Datei in einer Datei mit dem Namen
istio-operator-internal-lb.yaml
:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: components: ingressGateways: - enabled: true k8s: serviceAnnotations: service.beta.kubernetes.io/aws-load-balancer-internal: "true" name: istio-ingressgateway
Führen Sie den folgenden Befehl aus, um Anthos Service Mesh 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.bin/istioctl install \ -f manifests/profiles/asm-multicloud.yaml \ --set revision=asm-1614-2 \ -f istio-operator-internal-lb.yaml
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.
Ohne Prometheus und Kiali installieren
Standardmäßig werden in Anthos Service Mesh 1.7 und früher Prometheus und Kiali aus ihren ursprünglichen Paket-Repositories in docker.io
und quay.io
installiert. Wenn Sie diese Tools weder installieren noch Verbindungen zu diesen Repositories zulassen möchten, übergeben Sie -set addonComponents.prometheus.enabled=false
und --set addonComponents.kiali.enabled=false
an istioctl install
. Verwenden Sie beispielsweise den folgenden Befehl, um Prometheus und Kiali von der Installation des öffentlichen Subnetzes auszuschließen.
bin/istioctl install \
-f manifests/profiles/asm-multicloud.yaml \
--set addonComponents.prometheus.enabled=false \
--set addonComponents.kiali.enabled=false \
--revision=asm-1614-2
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-74cc894bfd-786rg 1/1 Running 0 7m19s istiod-78cdbbbdb-d7tps 1/1 Running 0 7m36s promsd-576b8db4d6-lqf64 2/2 Running 1 7m19s
Sie haben jetzt die Anthos Service Mesh-Steuerungsebene mit dem vorinstallierten Ingress-Gateway installiert. Wenn Sie nur Ingress-Funktionen mit einem Ingress-Controller benötigen, können Sie Anwendungen auf Ihrem Cluster installieren. Unter Beispiel-Deployment erstellen erfahren Sie, wie Sie eine Ingress-Ressource konfigurieren.
Wenn Sie alle von Anthos Service Mesh bereitgestellten Funktionen nutzen möchten, fahren Sie mit der nächsten Phase der Installation fort, um Sidecar-Proxys einzufügen und Ihre Arbeitslasten neu zu starten.
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.
Auf Ingress-Gateway zugreifen
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 oder den Hostnamen und den Port des externen Load-Balancers abrufen, der für die Verwendung im
istio-ingressgateway
konfiguriert ist.Ihre Anwendung muss ein Gateway und eine VirtualService-Ressource definieren, ähnlich der Datei
frontend-gateway.yaml
der Beispielanwendung für die Online-Boutique.
So rufen Sie die externe IP-Adresse von istio-ingressgateway
ab:
Erstellen Sie die Umgebungsvariable
INGRESS_HOST
:export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
Erstellen Sie die Umgebungsvariable
INGRESS_PORT
:export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
Stellen Sie zum Testen eine Beispielanwendung bereit, z. B. Online Boutique.
Verwenden Sie den Wert
$INGRESS_HOST:$INGRESS_PORT
in der URL, um in Ihrem Browser auf die Anwendung zuzugreifen.
Fehlerbehebung
Anthos Clusters on AWS erfordert Tags für Subnetze, die Endpunkte des Load-Balancers enthalten. Anthos Clusters on AWS kennzeichnet automatisch alle Subnetze im Feld spec.Networking.ServiceLoadBalancerSubnetIDs
der Ressource AWSCluster
mit Tags.
Wenn Sie Ihrem Nutzercluster weitere Subnetze hinzufügen oder Tags auf vorhandene Subnetze anwenden möchten, führen Sie die folgenden Schritte aus:
Verwenden Sie
anthos-gke
im Verzeichnisanthos-aws
, um den Kontext zu Ihrem Verwaltungsdienst zu wechseln.cd anthos-aws anthos-gke aws management get-credentials
Rufen Sie die ID der AWS-VPC des Clusters mit
kubectl
ab und speichern Sie sie als Variable.export VPC_ID=$(\ env HTTP_PROXY=http://localhost:8118 \ kubectl get awscluster cluster-0 -o jsonpath='{.spec.networking.vpcID}')
Prüfen Sie den Inhalt der Variablen mit
echo
. Die Ausgabe ähneltvpc-12345678abcdef0
.echo $VPC_ID
Speichern Sie die Cluster-ID in einer Umgebungsvariablen.
export CLUSTER_ID=$(\ env HTTP_PROXY=http://localhost:8118 \ kubectl get awscluster cluster-0 -o jsonpath='{.status.clusterID}')
Sie können die Variable mit
echo
prüfen:echo $CLUSTER_ID
Die Antwort enthält Ihre Cluster-ID.
gke-12345678
Wenn Sie Anthos-Cluster auf AWS in einer dedizierten VPC installiert haben, können Sie mit dem
aws
-Befehlszeilentool die Subnetz-ID abrufen.Folgende Optionen sind verfügbar:
- Öffentlich, wenn Sie Dienste in Ihrem öffentlichen Subnetz verfügbar machen möchten.
- Privat, wenn Sie Dienste in Ihrem privaten Subnetz verfügbar machen möchten.
Mehrere Subnetze, wenn Sie Dienste in mehreren Subnetzen verfügbar machen möchten.
Öffentlich
export SUBNET_ID=$(aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*public*" \ --query "Subnets[*].SubnetId" \ --output text)
Die Ausgabe ist ein Objekt, das Ihre Subnetz-ID enthält. Sie ähnelt
subnet-1234abcdefg
. Sie können die Variable mitecho
prüfen:echo $SUBNET_ID
Die Antwort enthält Ihre Subnetz-ID.
subnet-012345678abcdef
Privat
export SUBNET_ID=$(aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \ --query "Subnets[*].SubnetId" \ --output text)
Die Ausgabe ist ein Objekt, das Ihre Subnetz-ID enthält. Sie ähnelt
subnet-1234abcdefg
. Sie können die Variable mitecho
prüfen:echo $SUBNET_ID
Die Antwort enthält Ihre Subnetz-ID.
subnet-012345678abcdef
Mehrere Subnetze
Wenn Sie mehrere Subnetze für Ihre AWSNodePools nutzen, z. B. wenn Sie mehrere Verfügbarkeitszonen verwenden, müssen Sie Ihre Subnetz-IDs einzeln taggen.
Rufen Sie die Liste der Subnetz-IDs mit
aws ec2 describe-subnets
ab.Führen Sie den folgenden Befehl aus, um eine Liste aller öffentlichen Subnetze abzurufen:
aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*public*" \ --query "Subnets[*].SubnetId" \ --output text
Führen Sie den folgenden Befehl aus, um eine Liste aller privaten Subnetze abzurufen:
aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \ --query "Subnets[*].SubnetId" \ --output text
Die Antwort enthält Ihre Subnetz-IDs.
subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef
Taggen Sie das Subnetz mit Ihrer Cluster-ID. Wenn Sie mehrere Subnetze haben, wählen Sie die Methode für mehrere Subnetze aus.
Einzelnes Subnetz
aws ec2 create-tags \ --resources $SUBNET_ID \ --tags Key=kubernetes.io/cluster/$CLUSTER_ID,Value=shared
Mehrere Subnetze
Führen Sie für jedes Ihrer Subnetze den folgenden Befehl aus:
aws ec2 create-tags \ --resources subnet-ids \ --tags Key=kubernetes.io/cluster/$CLUSTER_ID,Value=shared
Ersetzen Sie subnet-ids durch die durch Leerzeichen getrennte Liste der Subnetz-IDs. Beispiel:
subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef
Nächste Schritte
Beispielbereitstellung für Anthos Clusters on AWS erstellen