Telemetrie-API für das Istio-basierte Service-Mesh-Add-On für Azure Kubernetes Service
Istio kann Metriken, verteilte Ablaufverfolgungen und Zugriffsprotokolle für alle Workloads im Mesh generieren. Das Istio-basierte Service-Mesh-Add-On für Azure Kubernetes Service (AKS) bietet Optionen für die Telemetriedatenanpassung über die freigegebene MeshConfig-Konfiguration und die Istio-Telemetrie-API v1
für kleinere Revisionen für das Istio-Add-On asm-1-22
und höher.
Hinweis
Während die Istio MeshConfig-Konfiguration auch Optionen zum globalen Konfigurieren von Telemetriedaten im Mesh bietet, ermöglicht die Telemetrie-API eine präzisere Kontrolle der Telemetriedateneinstellungen pro Dienst oder pro Workload. Da die Telemetrie-API weiterhin von der Istio-Community optimiert wird, ist sie jetzt die bevorzugte Methode für die Telemetriedatenkonfiguration. Wir empfehlen die Migration zur Telemetrie-API zum Konfigurieren der Telemetriedaten, die im Mesh erfasst werden sollen.
Voraussetzungen
- Sie müssen Revision
asm-1-22
oder höher verwenden. Informationen zu Nebenversionsupgrades finden Sie in der Dokumentation zu Istio-Add-On-Upgrades.
Konfigurieren von Telemetriedatenressourcen
Im folgenden Beispiel wird veranschaulicht, wie die Envoy-Zugriffsprotokollierung im Mesh mithilfe von asm-1-22
über die Telemetrie-API für das Istio-Add-On aktiviert werden kann (Revision je nach Bedarf anpassen). Anleitungen zu anderen Telemetrie-API-Anpassungen für das Add-On finden Sie im Abschnitt Unterstützungsbereich der Telemetrie-API und in der Istio-Dokumentation.
Bereitstellen von Beispielanwendungen
Bezeichnen Sie den Namespace für die Sidecar-Injektion:
kubectl label ns default istio.io/rev=asm-1-22
Stellen Sie die sleep
-Anwendung bereit, und legen Sie die Umgebungsvariable SOURCE_POD
fest:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.22/samples/sleep/sleep.yaml
export SOURCE_POD=$(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name})
Stellen Sie dann die httpbin
-Anwendung bereit:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.22/samples/httpbin/httpbin.yaml
Aktivieren der Envoy-Zugriffsprotokollierung mit der Istio-Telemetrie-API
Stellen Sie die folgende Istio-Telemetrie-API-Ressource (v1
) bereit, um die Envoy-Zugriffsprotokollierung für das gesamte Mesh zu aktivieren:
cat <<EOF | kubectl apply -n aks-istio-system -f -
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: mesh-logging-default
spec:
accessLogging:
- providers:
- name: envoy
EOF
Testen von Zugriffsprotokollen
Senden Sie eine Anforderung von sleep
an httpbin
:
kubectl exec "$SOURCE_POD" -c sleep -- curl -sS -v httpbin:8000/status/418
Überprüfen Sie, ob Zugriffsprotokolle für den sleep
-Pod sichtbar sind:
kubectl logs -l app=sleep -c istio-proxy
Die folgende Ausgabe wird angezeigt.
[2024-08-13T00:31:47.690Z] "GET /status/418 HTTP/1.1" 418 - via_upstream - "-" 0 135 12 11 "-" "curl/8.9.1" "cdecaca5-5964-48f3-b42d-f474dfa623d5" "httpbin:8000" "10.244.0.13:8080" outbound|8000||httpbin.default.svc.cluster.local 10.244.0.12:53336 10.0.112.220:8000 10.244.0.12:42360 - default
Überprüfen Sie nun, ob Zugriffsprotokolle für den httpbin
-Pod sichtbar sind:
kubectl logs -l app=httpbin -c istio-proxy
Die folgende Ausgabe wird angezeigt.
[2024-08-13T00:31:47.696Z] "GET /status/418 HTTP/1.1" 418 - via_upstream - "-" 0 135 2 1 "-" "curl/8.9.1" "cdecaca5-5964-48f3-b42d-f474dfa623d5" "httpbin:8000" "10.244.0.13:8080" inbound|8080|| 127.0.0.6:55401 10.244.0.13:8080 10.244.0.12:53336 outbound_.8000_._.httpbin.default.svc.cluster.local default
Unterstützungsbereich der Telemetrie-API
Für das Istio-Service-Mesh-Add-On für AKS werden Telemetrie-API-Felder als allowed
-, supported
- und blocked
-Werte klassifiziert. Weitere Informationen zur Unterstützungsrichtlinie des Istio-Add-Ons für Features und Meshkonfigurationen finden Sie im Dokument zur Unterstützungsrichtlinie für das Istio-Add-On.
Die folgenden Telemetrie-API-Konfigurationen sind entweder allowed
oder supported
für das Istio-Add-On. Ein Feld, das in dieser Tabelle nicht enthalten ist, ist blocked
.
Telemetrie-API-Feld | Unterstützt/ Zulässig | Hinweise |
---|---|---|
accessLogging.match |
Unterstützt | - |
accessLogging.disabled |
Unterstützt | - |
accessLogging.providers |
Zulässig | Der envoy -Standardzugriffsprotokollanbieter wird unterstützt. Eine verwaltete Funktion für die Protokollsammlung und -abfrage finden Sie im Artikel Azure Monitor-Containererkenntnisse für Log Analytics. Drittanbieter- oder Open-Source-Protokollsammlungs- und Analyselösungen sind allowed , werden jedoch nicht unterstützt. |
metrics.overrides |
Unterstützt | - |
metrics.providers |
Zulässig | Die Metriksammlung mit Azure Monitor Managed Prometheus wird unterstützt. Drittanbieter- oder Open-Source-Metrikscrapinglösungen sind allowed , werden jedoch nicht unterstützt. |
tracing.* |
Zulässig | Alle Ablaufverfolgungskonfigurationen sind allowed , werden jedoch nicht unterstützt. |
Azure Kubernetes Service