Optionen für die Einrichtung des Google Kubernetes Engine-Pods mit automatischer Envoy-Einfügung

Diese Anleitung enthält Informationen zu zusätzlichen Optionen und Aufgaben für den automatischen Envoy-Sidecar-Injektor.

Sidecar-Proxys vorhandenen Arbeitslasten hinzufügen

Nachdem Sie den Sidecar-Injektor in Ihren Clustern installiert haben, werden Sidecar-Proxys automatisch in neu erstellte Pods in aktivierten Namespaces eingefügt. Wenn Sie bereits Arbeitslasten ausgeführt haben, bevor Sie den Sidecar-Injektor aktivieren, müssen Sie die Arbeitslasten neu starten, damit sie eingefügt werden können.

Für Pods, die von Deployment-, DaemonSet- oder StatefulSet-Controllern verwaltet werden, können Sie Folgendes ausführen:

# Deployment
kubectl rollout restart deployment/DEPLOYMENT_NAME --namespace NAMESPACE

# DaemonSet
kubectl rollout restart daemonset/DAEMONSET_NAME --namespace NAMESPACE

# StatefulSet
kubectl rollout restart statefulset/STATEFULSET_NAME --namespace NAMESPACE

Wenn Sie keinen der oben genannten Controller zum Bereitstellen Ihrer Pods verwendet haben, müssen Sie die Pods einzeln löschen. Anschließend werden sie automatisch mit neuen Sidecar-Proxys neu erstellt.

kubectl delete pod POD_NAME -n NAMESPACE

Prüfen Sie, ob in jeden Ihrer Pods ein Sidecar-Proxy-Container eingefügt wurde:

kubectl get pods -n NAMESPACE

Für den oben erstellten busybox-Client sollten beispielsweise 2/2 Pods ausgeführt werden – einer für die busybox-Anwendung selbst und ein weiterer für den eingefügten Envoy-Sidecar-Proxy:

NAME                      READY   STATUS    RESTARTS   AGE
busybox-c54f578c9-c9fk4   2/2     Running   183        7d15h

Einfügungsüberschreibungen

Standardmäßig wird beim Aktivieren eines Namespace die Sidecar-Proxy-Einfügung für alle residenten Pods aktiviert. Die Einfügung kann auch gezielt für verschiedene Bereiche nach Bedarf konfiguriert werden. Zum Beispiel soll mit Überschreibungen verhindert werden, dass die Sidecar-Proxy-Einfügung für proxylose gRPC-Dienste verwendet wird.

Beachten Sie, dass die Einfügungsüberschreibungen nur angewendet werden, wenn der Namespace aktiviert ist, und mit der folgenden Priorität wirksam werden: Pod-Annotationen > NeeInjectSelector > AlwaysInjectSelector > Standardrichtlinie

Einfügung für bestimmte Pods aktivieren/deaktivieren

Verwenden Sie die folgende Pod-Annotation, um die Injektion für einen bestimmten Pod in einem aktivierten Namespace zu aktivieren bzw. zu deaktivieren:

...
metadata:
  annotations:
    sidecar.istio.io/inject: "true" / "false"

Einfügung für bestimmte Gruppen von Pods aktivieren/deaktivieren

Der Sidecar-Injektor kann so konfiguriert werden, dass Pods basierend auf einem Array von Kubernetes-Labelselektoren immer oder nie in aktivierte Namespaces eingefügt werden. Mit den folgenden Befehlen konfigurieren Sie beispielsweise den Sidecar-Injektor so, dass er einen Sidecar-Proxy nicht einfügt, wenn der Pod das Label "run=client" hat:

kubectl edit configmap -n istio-control istio-sidecar-injector

...
config: |-
  policy: enabled
  alwaysInjectSelector:
    []

  neverInjectSelector:
    - matchLabels:
        run: client
...

Vorhandene Sidecar-Injektor-Deployments müssen neu gestartet werden, damit diese Konfiguration wirksam wird.

Sidecar-Proxy-Metadaten konfigurieren

Zur Unterstützung zusätzlicher Traffic Director-Features können Sidecar-Proxys bestimmte Metadaten aus den kapselnden Pods übernehmen. Nehmen Sie beispielsweise die folgende Annotation in Ihre Spezifikation der Pod-Vorlage auf, um das Label „version=dev“ auf die eingefügten Sidecar-Proxys anzuwenden.

...
metadata:
  annotations:
    cloud.google.com/proxyMetadata: '{"version": "dev"}'

Mit der Config-Filterung kann Traffic Director eine Teilmenge der Konfiguration nur mit den Proxys teilen, die mit diesem Label "version=dev" übereinstimmen.

Vorhandene Deployments müssen neu gestartet werden, damit diese Konfiguration wirksam wird.

Unterstützte Pod-Annotationen

Traffic Director unterstützt die folgenden Pod-Annotationen für die Sidecar-Einfügung. Obwohl weitere Sidecar-Injektor-Annotationen funktionieren können, enthält die folgende Liste Annotationen, die von Traffic Director unterstützt werden. Erstellen Sie keine Abhängigkeiten von anderen Annotationen in Ihrer Produktionsbereitstellung, um Fehler oder Instabilität zu vermeiden.

Annotationsname Wert Beschreibung
sidecar.istio.io/inject Boolesch, als String dargestellt. Beispiel: "true" Gibt an, ob ein Envoy-Sidecar automatisch in die Arbeitslast eingefügt werden soll.
cloud.google.com/proxyMetadata JSON-Zuordnung von Schlüssel/Wert-Paaren. Beispiel: "'{"version": "dev"}'" Gibt die Schlüssel/Wert-Paare in einer JSON-Zuordnung an, die an Envoy-Metadaten angehängt werden sollten.

Sidecar-Injektor deinstallieren

Deinstallieren Sie den Sidecar-Injektor mit den folgenden Befehlen:

kubectl delete -f specs/
kubectl label namespace default istio-injection-