Optionale Features aktivieren

Wenn Sie Anthos Service Mesh installieren, unterscheiden sich die Features der Steuerungsebene, die standardmäßig aktiviert sind, je nach Plattform. Sie können optional Features aktivieren und dazu beim Installieren oder beim Upgrade von Anthos Service Mesh eine Overlay-Datei einfügen. Eine Overlay-Datei ist eine YAML-Datei, die eine benutzerdefinierte IstioOperator-Ressource (Custom Resource, CR) enthält, mit der Sie die Steuerungsebene konfigurieren. Sie können die Standardkonfiguration überschreiben und ein optionales Feature in einer Overlay-Datei aktivieren. Dabei haben Sie die Möglichkeit, mehrere Overlays ebenenweise zu platzieren. Jede Overlay-Datei überschreibt die Konfiguration auf den vorherigen Ebenen.

Informationen zu Overlay-Dateien

Die Overlay-Dateien auf dieser Seite befinden sich im anthos-service-mesh-Paket in GitHub. Diese Dateien enthalten gängige Anpassungen der Standardkonfiguration. Sie können diese Dateien unverändert anwenden oder weitere Änderungen daran vornehmen.

  • Wenn Sie Anthos Service Mesh mit dem Befehl istioctl install installieren, können Sie mit der Befehlszeilenoption -f eine oder mehrere Overlay-Dateien angeben. Sie haben grundsätzlich die Möglichkeit, die Konfiguration durch Angabe von Konfigurationsparametern in der Befehlszeile mit der Option --set für istioctl install zu ändern. Wir empfehlen aber, eine Overlay-Datei zu verwenden. Diese kann dann zusammen mit Ihren anderen benutzerdefinierten Ressourcendateien in Ihrem Versionsverwaltungssystem gespeichert werden. Sie müssen diese Dateien für das Upgrade von Anthos Service Mesh beibehalten, damit Ihre Steuerungsebene nach dem Upgrade wieder die gleiche Konfiguration hat.

  • Wenn Sie Anthos Service Mesh mit dem von Google bereitgestellten install_asm-Skript installieren, haben Sie die Möglichkeit, eine oder mehrere Overlay-Dateien mit der Option --option oder der Option --custom_overlay anzugeben. Wenn Sie keine Änderungen an den Dateien im anthos-service-mesh-Repository vornehmen müssen, können Sie --option verwenden. Das Skript ruft die Datei von GitHub ab. Sie können aber auch die Overlay-Datei ändern und die Änderungen mit der Option --custom_overlay an das Skript install_asm übergeben. Beispiele für beide Möglichkeiten finden Sie unter install_asm-Beispiele.

Fügen Sie nicht mehrere CRs in eine YAML-Datei ein. Separate YAML-Dateien für jede CR erstellen
Mehrere CRs in einer YAML-Datei Separate YAML-Dateien für jede CR

anthos-service-mesh-Paket herunterladen

So laden Sie das anthos-service-mesh-Paket herunter:

In den folgenden Schritten wird kpt verwendet, um das asm-Paket aus dem GitHub-Repository herunterzuladen. Sie können stattdessen auch git clone verwenden.

  1. Installieren Sie kpt, falls noch nicht geschehen:

    gcloud components install kpt
    
  2. Laden Sie das Paket herunter, das die Dateien enthält:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.8-asm asm
    

    In den folgenden Beispielen wird davon ausgegangen, dass sich das asm-Paket in Ihrem aktuellen Arbeitsverzeichnis befindet.

Beispiele

Um eine Funktion bei der Installation von Anthos Service Mesh zu aktivieren, variiert der genaue Befehl abhängig von Ihrer Plattform und der Verwendung des Skripts install_asm oder des Befehls istioctl install.

Alle folgenden Befehle legen ein Revisionslabel für istiod fest. Für den istiod-Bereitstellungsnamen wird istiod-asm-186-8 festgelegt. Ein Überarbeitungslabel hat das Format istio.io/rev=asm-186-8. Das Überarbeitungslabel wird vom automatischen Sidecar-Injektor-Webhook verwendet, um eingefügte Sidecars mit einer bestimmten istiod-Überarbeitung zu verknüpfen. Wenn Sie die automatische Sidecar-Einfügung für einen Namespace aktivieren möchten, müssen Sie ihn mit einer Überarbeitung versehen, die einem Überarbeitungslabel für istiod entspricht.

Ausgangsgateway für GKE On-Prem aktivieren

In diesem Beispiel wird davon ausgegangen, dass Sie die Schritte im Leitfaden Anthos Service Mesh lokal installieren bis zu dem Punkt ausgeführt haben, an dem Sie Anthos Service Mesh installieren. Sie erfahren hier, wie Sie die Umgebungsvariable CTX_CLUSTER1 festlegen und cluster.yaml konfigurieren. Eine der Einstellungen, die Sie in cluster.yaml konfigurieren, ist jene für die Überarbeitung. Die Datei egressgateways.yaml enthält die Konfiguration zum Aktivieren eines optionalen Ausgangsgateways.

  1. Installieren Sie Anthos Service Mesh auf GKE on VMware:

    istioctl install --context="${CTX_CLUSTER1}" \
      -f cluster.yaml \
      -f asm/istio/options/egressgateways.yaml
    
  2. Kehren Sie zur Installationsanleitung für GKE on VMware zurück, um den validierenden Webhook zu konfigurieren. Dieser ist für neue Installationen erforderlich.

Die Reihenfolge der Dateien in der Befehlszeile spielt eine wichtige Rolle. Geben Sie zuerst die Datei cluster.yaml an, die die erforderliche Konfiguration für die Standard-Features enthält, gefolgt von den Overlay-Dateien.

Ausgangsgateway in GKE in Google Cloud aktivieren

Wir empfehlen die Verwendung des Skripts install_asm zum Einrichten eines oder mehrerer Cluster im selben Projekt. Das Skript richtet ein Überarbeitungslabel für istiod ein. In diesem Beispiel wird davon ausgegangen, dass Sie die Anleitung unter Anthos Service Mesh in GKE installieren zum Herunterladen der Version des Skripts install_asm im Branch release-1.8-asm ausgeführt haben, um das Anthos Service Mesh 1.8.6 zu installieren.

So installieren Sie mit dem install_asm-Skript ein Ausgangsgateway:

./install_asm \
  --project_id PROJECT_ID \
  --cluster_name CLUSTER_NAME \
  --cluster_location CLUSTER_LOCATION \
  --mode install \
  --enable_all \
  --option egressgateways

Mit diesem Befehl wird das Skript für eine neue Installation ausgeführt und Mesh-CA, die Standardzertifizierungsstelle für neue Installationen, aktiviert. Mit dem Flag --enable_all kann das Skript die erforderlichen Google APIs aktivieren, Berechtigungen zur Identitäts- und Zugriffsverwaltung festlegen und die erforderlichen Aktualisierungen an Ihrem Cluster vornehmen. Dazu gehört die Aktivierung von GKE Workload Identity. Das Skript ruft aus GitHub die Datei egressgateways.yaml ab, mit der die Steuerungsebene konfiguriert wird.

Ausgangsgateway für GKE-Cluster in verschiedenen Projekten aktivieren

Derzeit wird vom install_asm-Skript die Installation von Anthos Service Mesh in Clustern von verschiedenen Projekten nicht unterstützt.

Für die folgenden Befehle der Befehlszeile wird davon ausgegangen, dass Sie alle Schritte unter Installation und Migration mehrerer Projekte bis zu dem Punkt ausgeführt haben, an dem Sie Anthos Service Mesh installieren.

  1. Installieren Sie Anthos Service Mesh:

    istioctl install \
     -f asm/istio/istio-operator.yaml \
     -f asm/istio/options/multiproject.yaml \
     -f asm/istio/options/multicluster.yaml\
     -f asm/istio/options/egressgateways.yaml \
     --set revision=asm-186-8
    

    Die folgenden Dateien überlagern die Einstellungen in der Datei istio-operator.yaml:

    • Mit der Datei multiproject.yaml werden die Standard-Features für ein Mesh mit mehreren Projekten festgelegt. Sie muss vor den anderen Overlay-Dateien angegeben werden.

    • Mit der Datei multicluster.yaml werden die Einstellungen konfiguriert, die Anthos Service Mesh für eine Konfiguration mit mehreren Clustern benötigt.

    • Mit der Datei egressgateways.yaml wird das Ausgangsgateway konfiguriert.

  2. Gehen Sie zurück zum Installationsleitfaden für mehrere Projekte, um den Validierungs-Webhook zu konfigurieren, der für neue Installationen erforderlich ist.

YAML für optionale Features

Die folgenden Abschnitte enthalten die YAML-Datei, um optionale und unterstützte Funktionen zu aktivieren.

mTLS-STRICT-Modus

Die Konfiguration global.mtls.enabled wurde entfernt, um Probleme mit Upgrades zu vermeiden und eine flexiblere Installation zu ermöglichen. Konfigurieren Sie zum Aktivieren von STRICT mTLS stattdessen eine Peer-Authentifizierungsrichtlinie.

Envoy an stdout weiterleiten

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    accessLogFile: "/dev/stdout"

Weitere Informationen finden Sie unter Zugriffs-Logging von Envoy aktivieren.

Cloud Trace

Für Installationen in GKE können Sie Cloud Trace aktivieren. Ausführliche Preisinformationen finden Sie auf der Seite "Cloud Trace – Preise".

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
  values:
    global:
      proxy:
        tracer: stackdriver

Die Standardabtastrate beträgt 1 %. Sie können den Standardwert aber durch Angabe eines tracing.sampling-Werts überschreiben. Der Wert muss zwischen 0,0 und 100,0 mit einer Genauigkeit von 0,01 liegen. Wenn Sie beispielsweise fünf Anfragen pro 10.000 Anfragen verfolgen möchten, verwenden Sie 0,05.

Das folgende Beispiel zeigt eine Abtastrate von 100 % (nur für Demozwecke oder zur Fehlerbehebung).

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing:
        sampling: 100
  values:
    global:
      proxy:
        tracer: stackdriver

Beachten Sie, dass die Tracer-Konfiguration derzeit Teil der Proxy-Bootstrap-Konfiguration ist. Deshalb muss der Pod neu gestartet und wieder eingefügt werden, um die Tracer-Aktualisierung zu übernehmen. Sie können beispielsweise mit dem folgenden Befehl die Pods für ein Deployment neu starten:

kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME

Weitergabe von Trace-Kontext

Auch wenn die Sidecar-Proxys automatisch Trace-Spans senden können, benötigen sie einige Hinweise, um den gesamten Trace zu verknüpfen. Anwendungen müssen die entsprechenden HTTP-Header weiterleiten, sodass die Spans einem einzigen Trace korrekt zugeordnet werden können, wenn die Proxys die Spaninformationen senden.

Dazu muss eine Anwendung die folgenden Header aus der eingehenden Anfrage erfassen und an alle ausgehenden Anfragen weiterleiten:

  • x-request-id
  • x-b3-traceid
  • x-b3-spanid
  • x-b3-parentspanid
  • x-b3-sampled
  • x-b3-flags
  • x-ot-span-context
  • x-cloud-trace-context
  • traceparent
  • grpc-trace-bin

Beispiele für die Weitergabe der Header finden Sie unter Weitergabe von Trace-Kontext.

Trace von einem Client mit benutzerdefinierter ID erstellen

Verwenden Sie zum Erstellen eines Trace von einem Client mit einer benutzerdefinierten ID den Befehl curl, um eine Anfrage mit einem externen Client zu erstellen und die Anzeige eines Trace zu erzwingen. Beispiel:

curl $URL --header "x-client-trace-id: 105445aa7843bc8bf206b12000100000"

Weitere Informationen zu x-client-trace-id finden Sie in der Envoy-Dokumentation.

Ausgehender Traffic über Egress-Gateways

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    egressGateways:
    - name: istio-egressgateway
      enabled: true

Weitere Informationen finden Sie unter Egress-Gateways.

Container-Netzwerkschnittstelle von Istio

Wie Sie die Container-Netzwerkschnittstelle (CNI) von Istio aktivieren, hängt von der Umgebung ab, in der Anthos Service Mesh installiert ist. Außerdem müssen Sie eine Netzwerkrichtlinie aktivieren.

CNI in GKE aktivieren

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    cni:
      enabled: true
      namespace: kube-system
  values:
    cni:
      cniBinDir: /home/kubernetes/bin
      excludeNamespaces:
      - istio-system
      - kube-system

CNI in GKE on VMware aktivieren

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    cni:
      enabled: true
      namespace: kube-system
  values:
    cni:
      cniBinDir: /opt/cni/bin
      excludeNamespaces:
      - istio-system
      - kube-system
      - gke-system

Internen Load-Balancer aktivieren

Bei Installationen in GKE können Sie einen internen Load-Balancer für das Istio-Ingress-Gateway aktivieren.

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    ingressGateways:
    - name: istio-ingressgateway
      enabled: true
      k8s:
        serviceAnnotations:
          cloud.google.com/load-balancer-type: "internal"
        service:
          ports:
          - name: status-port
            port: 15020
          - name: http2
            port: 80
            targetPort: 8080
          - name: https
            port: 443
            targetPort: 8443

Externe Zertifikatsverwaltung auf dem Ingress-Gateway

Informationen zum Aktivieren der externen Zertifikatsverwaltung auf dem Ingress-Gateway mit Envoy SDS finden Sie unter Sichere Gateways.