Auf dieser Seite wird beschrieben, wie Sie optionale Features auf einer Steuerungsebene im Cluster aktivieren Informationen zur von Google verwalteten Steuerungsebene finden Sie unter Verwaltetes Anthos Service Mesh konfigurieren.
Wenn Sie Anthos Service Mesh installieren, unterscheiden sich die standardmäßig aktivierten Features 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 aktivieren oder ein Standardfeature in einer Overlay-Datei deaktivieren. Geben Sie pro Overlay-Datei ein Feature an. Sie können mehr Overlays übereinander legen. 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 von Google bereitgestellten asmcli
-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 asmcli
übergeben.
Fügen Sie nicht mehrere CRs in eine Overlay-Datei ein. | Separate Overlay-Dateien für jede CR erstellen |
---|---|
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.
Installieren Sie
kpt
, falls noch nicht geschehen:gcloud components install kpt
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.11 asm
In den folgenden Beispielen wird davon ausgegangen, dass sich das
asm
-Paket in Ihrem aktuellen Arbeitsverzeichnis befindet.
So aktivieren Sie optionale Features
Die folgenden Beispiele sind vereinfacht, damit nur die benutzerdefinierten Overlays zur Aktivierung optionaler Features angezeigt werden. Ersetzen Sie OTHER_FLAGS
durch die anderen Befehlszeilenoptionen.
Der Befehl asmcli install
bietet zwei Möglichkeiten zum Aktivieren eines optionalen Features. Welche Methode Sie verwenden, hängt davon ab, ob Sie Änderungen an der Overlay-Datei vornehmen müssen.
Verwenden Sie
--option
, wenn Sie keine Änderungen an der Overlay-Datei vornehmen müssen. Mit--option
ruftasmcli
die Datei aus dem GitHub-Repository für Sie ab. Dazu benötigen Sie eine Internetverbindung../asmcli install \ OTHER_FLAGS \ --option OPTION_NAME
Ersetzen Sie
OPTION_NAME
durch die Option, die Sie aktivieren möchten. Eine Liste der Optionen finden Sie im Paketanthos-service-mesh
.Verwenden Sie
--custom_overlay
, wenn Sie die Overlay-Datei anpassen müssen../asmcli install \ OTHER_FLAGS \ --custom_overlay PATH_TO_FILE
Ersetzen Sie
PATH_TO_FILE
durch den Pfad zur Overlay-Datei, die Sie verwenden möchten.
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 aus der IstioOperator
-CR 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
Weitere Informationen finden Sie unter Zugriffs-Logging von Envoy aktivieren.
Cloud Trace
Cloud Trace ist mit Anthos Service Mesh-Installationen auf den folgenden Plattformen verfügbar:
- GKE in Google Cloud
- Lokale GKE Enterprise-Cluster, wenn Sie mit der Anthos Service Mesh-Zertifizierungsstelle (Mesh CA) installieren
Ausführliche Preisinformationen finden Sie auf der Seite "Cloud Trace – Preise".
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 erforderlichen Header aus der eingehenden Anfrage erfassen und an alle ausgehenden Anfragen weiterleiten. Die Stackdriver-Tracing-Konfiguration von Anthos Service Mesh akzeptiert alle folgenden Headerformate und gibt alle folgende Formate weiter:
- B3 (
x-b3-traceid
,x-b3-spanid
,x-b3parentspanid
,x-b3-sampled
,x-b3-flags
) - W3C TraceContext (
traceparent
) - Google Cloud Trace (
x-cloud-trace-context
) - gRPC TraceBin (
grpc-trace-bin
)
Dies bedeutet, dass Ihre Anwendungen ein beliebiges dieser Formate nutzen können, um Tracing-Kontext zu übertragen; die Traces werden generiert und korrekt auf Stackdriver eingestellt.
Beispiel
Hier ist ein Beispiel für eine HTTP-Get-Anfrage mit einem traceparent
-Header in der ursprünglichen Anfrage. Beachten Sie die zusätzlichen Trace-Kontextheader, die vom Proxy hinzugefügt wurden.
$ kubectl exec -it sleep-557747455f-n6flv -- curl "httpbin:8000/anything?freeform=" -H "accept: application/json" -H "Traceparent: 00-7543d15e09e5d61801d4f74cde1269b8-604ef051d35c5b3f-01" -vv
* Trying 10.12.3.52:8000...
* Connected to httpbin (10.12.3.52) port 8000 (#0)
> GET /anything?freeform= HTTP/1.1
> Host: httpbin:8000
> User-Agent: curl/7.80.0-DEV
> accept: application/json
> Traceparent: 00-7543d15e09e5d61801d4f74cde1269b8-604ef051d35c5b3f-01
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< server: envoy
< date: Wed, 10 Nov 2021 20:36:04 GMT
< content-type: application/json
< content-length: 1032
< access-control-allow-origin: *
< access-control-allow-credentials: true
< x-envoy-upstream-service-time: 5
<
{
"args": {
"freeform": ""
},
"data": "",
"files": {},
"form": {},
"headers": {
"Accept": "application/json",
"Grpc-Trace-Bin": "AAB1Q9FeCeXWGAHU90zeEmm4AaDHmGRtdM7wAgE",
"Host": "httpbin:8000",
"Traceparent": "00-7543d15e09e5d61801d4f74cde1269b8-a0c798646d74cef0-01",
"User-Agent": "curl/7.80.0-DEV",
"X-B3-Sampled": "1",
"X-B3-Spanid": "a0c798646d74cef0",
"X-B3-Traceid": "7543d15e09e5d61801d4f74cde1269b8",
"X-Cloud-Trace-Context": "7543d15e09e5d61801d4f74cde1269b8/11585396123534413552;o=1",
"X-Envoy-Attempt-Count": "1",
"X-Forwarded-Client-Cert": "<REDACTED>"
},
"json": null,
"method": "GET",
"origin": "127.0.0.6",
"url": "http://httpbin:8000/anything?freeform="
}
Beachten Sie, dass der vollständige Satz an Trace-Kontext-Headern im zurückgegebenen Satz an Anfrageheadern vorhanden ist.
Weitere 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
Wir empfehlen, ein injiziertes Gateway zu installieren, wie unter Gateways installieren und aktualisieren beschrieben.
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.
Wählen Sie die Overlay-Datei aus, die Ihrer Plattform entspricht.
CNI in GKE aktivieren
CNI lokal aktivieren
Internen Load-Balancer aktivieren
Wir empfehlen, ein injiziertes Gateway zu installieren, wie unter Gateways installieren und aktualisierenbeschrieben, um einen internen Load-Balancer in GKE einzurichten. Beim Konfigurieren des Gateway-Dienstes geben Sie die Annotation cloud.google.com/load-balancer-type: "internal"
an.
Externe Zertifikatsverwaltung auf dem Ingress-Gateway
Informationen zum Aktivieren der externen Zertifikatsverwaltung auf dem Ingress-Gateway mit Envoy SDS finden Sie unter Sichere Gateways.