Anthos Service Mesh lokal installieren

Anthos Service Mesh ist ein mit Istio kompatibles Framework zum Verbinden, Überwachen und Sichern von Diensten, die in Google Kubernetes Engine (GKE) und GKE on VMware ausgeführt werden. Sie können damit ein Netzwerk aus bereitgestellten Diensten mit Load-Balancing, Dienst-zu-Dienst-Authentifizierung, Monitoring und weiteren Funktionen erstellen, ohne Änderungen am Dienstcode vorzunehmen. Anthos Service Mesh fügt automatisch einen Sidecar-Proxy für jeden Pod Ihrer Anwendung ein. Der Sidecar-Proxy fängt den gesamten Netzwerktraffic zu und von den Pods ab. Anthos Service Mesh konfiguriert außerdem ein Ingress-Gateway, um im Mesh-Netzwerk eingehenden Traffic zu verwalten. Mit Open-Source-APIs für Istio können Sie Richtlinien konfigurieren, die für Sidecars und Gateways erzwungen werden.

In dieser Anleitung wird die saubere Installation der Anthos Service Mesh-Version 1.4.10-asm.18 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 auf GKE auf VMware ausführen.

Durch die Installation werden die unterstützten wichtigsten Istio-Features in GKE on VMware aktiviert. Beachten Sie, dass die von Anthos Service Mesh verwalteten Komponenten derzeit in GKE on VMware nicht unterstützt werden.

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 Anforderungen und Beschränkungen, bevor Sie mit der Einrichtung beginnen.

Voraussetzungen

  • Sie benötigen eine GKE Enterprise-Testlizenz oder ein -Abo. Weitere Informationen finden Sie in der Preisübersicht für GKE Enterprise.

  • Achten Sie darauf, dass der Nutzercluster, auf dem Sie Anthos Service Mesh installieren, mindestens 4 vCPUs, 15 GB Arbeitsspeicher und 4 Replikate hat.

  • Prüfen Sie die Anforderungen für Pods und Dienste, bevor Sie Arbeitslasten bereitstellen.

  • Achten Sie darauf, dass Ihre Clusterversion unter Unterstützte Umgebungen aufgeführt ist. So prüfen Sie, welche Clusterversion Sie verwenden:

    gkectl version
    

    Die Ausgabe sollte so aussehen:

    1.2.0-gke.6 (git-0912663b0)
    

Einschränkungen

Nur eine Installation von Anthos Service Mesh pro Google Cloud-Projekt wird unterstützt. Mehrere Mesh-Bereitstellungen in einem einzelnen Projekt werden nicht unterstützt.

Umgebung einrichten

Installieren und initialisieren Sie Google Cloud CLI auf Ihrem lokalen Computer.

Wenn die gcloud CLI bereits installiert ist:

  1. Authentifizieren Sie sich über die gcloud CLI:

    gcloud auth login
    
  2. Aktualisieren Sie die Komponenten:

    gcloud components update
    
  3. Installieren Sie kubectl:

    gcloud components install kubectl
    
  4. Rufen Sie die Projekt-ID des Projekts ab, in dem der Cluster erstellt wurde:

    gcloud

    gcloud projects list

    Console

    1. Öffnen Sie in der Google Cloud Console die Seite Dashboard:

      Zur Seite "Dashboard"

    2. Klicken Sie oben auf der Seite auf das Drop-down Auswählen aus. Wählen Sie im angezeigten Fenster Auswählen aus Ihr Projekt aus. Die Projekt-ID wird auf der Dashboard-Karte Projektinformationen des Projekts angezeigt.

  5. Legen Sie das Standardprojekt-ID für das Google Cloud CLI fest:

    gcloud config set project PROJECT_ID

Anmeldedaten und Berechtigungen festlegen

Bevor Sie fortfahren, prüfen Sie, ob alle erforderlichen APIs aktiviert sind. Wenn Sie sich nicht sicher sind, führen Sie den Befehl gcloud services enable noch einmal aus.

  1. Achten Sie darauf, dass kubectl für den Nutzercluster vorhanden ist, in dem Sie Anthos Service Mesh installieren möchten. Sie können Anthos Service Mesh nur in einem Nutzercluster und nicht in einem Administratorcluster installieren.
  2. 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.

Installation von Anthos Service Mesh vorbereiten

    Linux

  1. Laden Sie die Anthos Service Mesh-Installationsdatei in Ihr aktuelles Arbeitsverzeichnis herunter:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-linux.tar.gz
  2. Laden Sie die Signaturdatei herunter und bestätigen Sie die Signatur mit openssl:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-linux.tar.gz.1.sig
    openssl dgst -verify - -signature istio-1.4.10-asm.18-linux.tar.gz.1.sig istio-1.4.10-asm.18-linux.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Die erwartete Ausgabe ist Verified OK.

  3. macOS

  4. Laden Sie die Anthos Service Mesh-Installationsdatei in Ihr aktuelles Arbeitsverzeichnis herunter:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-osx.tar.gz
  5. Laden Sie die Signaturdatei herunter und bestätigen Sie die Signatur mit openssl:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.4.10-asm.18-osx.tar.gz.1.sig istio-1.4.10-asm.18-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Die erwartete Ausgabe ist Verified OK.

  6. Windows

  7. Laden Sie die Anthos Service Mesh-Installationsdatei in Ihr aktuelles Arbeitsverzeichnis herunter:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-win.zip
  8. Laden Sie die Signaturdatei herunter und bestätigen Sie die Signatur mit openssl:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.4.10-asm.18-win.zip.1.sig istio-1.4.10-asm.18-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Die erwartete Ausgabe ist Verified OK.

  9. 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.4.10-asm.18-linux.tar.gz

    Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis istio-1.4.10-asm.18 ein Installationsverzeichnis erstellt, das Folgendes enthält:

    • Beispielanwendungen in samples
    • Die folgenden Tools im Verzeichnis bin:
      • istioctl: Sie verwenden istioctl, um Anthos Service Mesh zu installieren.
      • asmctl: Sie verwenden asmctl, um Ihre Sicherheitskonfiguration nach der Installation von Anthos Service Mesh zu validieren. (Derzeit wird asmctl in GKE on VMware nicht unterstützt.)

  10. Prüfen Sie, ob Sie sich im Stammverzeichnis der Anthos Service Mesh-Installation befinden.
    cd istio-1.4.10-asm.18
  11. Fügen Sie die Tools der Einfachheit halber im Verzeichnis /bin Ihrem PATH hinzu.
    export PATH=$PWD/bin:$PATH

Namespace istio-system erstellen

Erstellen Sie einen Namespace namens "istio-system" für die Komponenten der Steuerungsebene:

kubectl create namespace istio-system

Anthos Service Mesh installieren

In diesem Abschnitt wird erläutert, wie Sie Anthos Service Mesh installieren und die unterstützten Standardfeatures aktivieren, die auf der Seite Unterstützte Features aufgeführt sind. Informationen zum Aktivieren der unterstützten optionalen Features finden Sie unter Optionale Features aktivieren.

So installieren Sie Anthos Service Mesh:

Wählen Sie einen der folgenden Befehle aus, um Anthos Service Mesh im mTLS-Authentifizierungsmodus (mutual TLS, gegenseitiges TLS) PERMISSIVE oder im mTLS-Modus STRICT zu konfigurieren.

PERMISSIVE-mTLS

istioctl manifest apply --set profile=asm-onprem

STRICT-mTLS

istioctl manifest apply --set profile=asm-onprem \
  --set values.global.mtls.enabled=true

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 Ausgabe sollte in etwa so aussehen:

NAME                                      READY   STATUS      RESTARTS   AGE
istio-citadel-85f4d775cd-dmpj2            1/1     Running     0          18m
istio-galley-5c65896ff7-m2pls             2/2     Running     0          18m
istio-ingressgateway-587cd459f-q6hqt      2/2     Running     0          18m
istio-pilot-9db77b99f-7wfb6               2/2     Running     0          18m
istio-sidecar-injector-69c4d9f875-dt8rn   1/1     Running     0          18m
promsd-55f464d964-lqs7w                   2/2     Running     0          18m

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.

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.

Sie können das automatische Einfügen der Sidecar-Datei mit einem Befehl aktivieren. Beispiel:

kubectl label namespace NAMESPACE istio-injection=enabled --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.

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:

Integrierter Load-Balancing-Modus

  1. Ö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.

  2. 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
    
  3. Speichern Sie die Datei.

Manueller Load-Balancing-Modus

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:

  1. 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
     ...
    
  2. Machen Sie diese Ports über Ihren Load-Balancer verfügbar.

    Der Dienstport http2 hat beispielsweise port 80 und nodePort 31380. Angenommen, die Knotenadressen für Ihren Nutzercluster lauten 192.168.0.10, 192.168.0.11 und 192.168.0.12 und die VIP Ihres Load-Balancers ist 203.0.113.1.

    Konfigurieren Sie dann Ihren Load-Balancer so, dass der an 203.0.113.1:80 gesendete Traffic an 192.168.0.10:31380, 192.168.0.11:31380 oder 192.168.0.12:31380 weitergeleitet wird. Sie können die Dienstports auswählen, die Sie für diese VIP freigeben möchten.

Nächste Schritte