Partager via


API de télémétrie pour le module complémentaire de maillage de service basé sur Istio pour Azure Kubernetes Service

Istio peut générer des métriques, des traces distribuées et des journaux d’accès pour toutes les charges de travail du maillage. Le module complémentaire de maillage de service basé sur Istio pour Azure Kubernetes Service (AKS) fournit des options de personnalisation de télémétrie via le MeshConfig partagé et l’API Istio Telemetry v1 pour les révisions mineures du module complémentaire Istio asm-1-22 et les versions ultérieures.

Remarque

Bien que le Istio MeshConfig offre également des options de configuration de la télémétrie globalement sur le maillage, l’API Telemetry offre un contrôle plus granulaire des paramètres de télémétrie par service ou par charge de travail. La communauté Istio continuant d’investir dans l’API Telemetry, il s’agit désormais de la méthode préférée pour la configuration de la télémétrie. Nous encourageons la migration vers l’API Telemetry pour configurer la télémétrie à collecter dans le maillage.

Prérequis

Configurer les ressource de télémétrie

L’exemple suivant montre comment la journalisation d’accès Envoy peut être activée sur le maillage du module complémentaire Istio via l’API Telemetry en utilisant asm-1-22 (ajustez la révision si nécessaire). Pour obtenir des conseils sur les autres personnalisations de l’API Telemetry pour le module complémentaire, consultez Étendue de prise en charge de l’API Telemetry et la Documentation Istio.

Déployer des exemples d’applications

Étiquetez l’espace de noms pour l’injection du sidecar :

kubectl label ns default istio.io/rev=asm-1-22

Déployez l’application sleep et définissez la variable d’environnement SOURCE_POD :

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})

Puis, déployez l’application httpbin :

kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.22/samples/httpbin/httpbin.yaml

Activer la journalisation des accès Envoy avec l’API Telemetry Istio

Déployez la ressource API Telemetry v1 Istio suivante pour activer la journalisation des accès Envoy pour l’ensemble du maillage :

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

Tester les journaux d’accès

Envoyez une requête de sleep à httpbin :

kubectl exec "$SOURCE_POD" -c sleep -- curl -sS -v httpbin:8000/status/418

Vérifiez que les journaux d’accès sont visibles pour le pod sleep :

kubectl logs -l app=sleep -c istio-proxy

Vous devez normalement voir la sortie suivante :

[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

Vérifiez maintenant que les journaux d’accès sont visibles pour le pod httpbin :

kubectl logs -l app=httpbin -c istio-proxy

Vous devez normalement voir la sortie suivante :

[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

Étendue de prise en charge de l’API Telemetry

Pour le module complémentaire de maillage de service Istio pour AKS, les champs de l’API Telemetry sont classés en tant que valeurs allowed, supported et blocked. Pour plus d’informations sur la stratégie de prise en charge du module complémentaire Istio pour les fonctionnalités et les configurations de maillage, consultez le document de stratégie de prise en charge du module complémentaire Istio.

Les configurations de l’API Telemetry suivantes sont soit allowed, soit supported, pour le module complémentaire Istio. Tout champ non inclus dans ce tableau est blocked.

Champ de l’API Telemetry Pris en charge/autorisé Notes
accessLogging.match Prise en charge -
accessLogging.disabled Pris en charge -
accessLogging.providers Autorisé Le fournisseur de journaux d’accès par défaut envoy est pris en charge. Pour une expérience managée pour la collecte et l’interrogation des journaux, consultez Log Analytics d’information Azure Monitor Container. La collecte de journaux tierce ou open source et les solutions analytique sont allowed mais non prises en charge.
metrics.overrides Pris en charge -
metrics.providers Autorisé La collection de métriques avec Azure Monitor Managed Prometheus est prise en charge. Les solutions de métriques de scraping tierces ou open source sont allowed mais non prises en charge.
tracing.* Autorisé Toutes les configurations de suivi sont allowed mais non prises en charge.