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
- Vous devez être en révision
asm-1-22
ou une version ultérieure. Pour plus d’informations sur la façon d’effectuer des mises à niveau de version mineures, consultez la documentation sur la mise à niveau du module complémentaire Istio.
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. |
Azure Kubernetes Service