Compartir a través de


API de telemetría para el complemento de malla de servicio basado en Istio para Azure Kubernetes Service

Istio puede generar métricas, seguimientos distribuidos y registros de acceso para todas las cargas de trabajo de la malla. El complemento de malla del servicio basado en Istio para Azure Kubernetes Service (AKS) proporciona opciones de personalización de telemetría a través de MeshConfig compartido y la API de telemetría v1 de Istio para revisiones secundarias del complemento de Istio asm-1-22 y versiones posteriores.

Nota:

Aunque Istio MeshConfig también proporciona opciones para configurar la telemetría globalmente en la malla, la API de telemetría ofrece un control más granular sobre la configuración de telemetría por servicio o por carga de trabajo. Como la comunidad de Istio continúa invirtiendo en la API de telemetría, ahora es el método preferido para la configuración de telemetría. Se recomienda migrar a la API de telemetría para configurar la telemetría que se recopilará en la malla.

Requisitos previos

Configurar recursos de telemetría

En el ejemplo siguiente se muestra cómo se puede habilitar el registro de acceso de Envoy en la malla del complemento de Istio a través de la API de telemetría mediante asm-1-22 (ajuste la revisión según sea necesario). Para obtener instrucciones sobre otras personalizaciones de la API de telemetría para el complemento, consulte la sección Ámbito de compatibilidad de la API de telemetría y la documentación de Istio.

Implementar aplicaciones de ejemplo

Etiquete el espacio de nombres para la inyección de sidecar:

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

Implemente la aplicación sleep y establezca la variable de entorno 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})

A continuación, implemente la aplicación httpbin:

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

Habilitar registro de acceso de Envoy con la API de telemetría de Istio

Implemente el siguiente recurso de API de telemetría de Istio v1 para habilitar el registro de acceso de Envoy para toda la malla:

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

Probar los registros de acceso

Enviar una solicitud de sleep a httpbin:

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

Comprobar que los registros de acceso están visibles para el pod sleep:

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

Debería ver la salida siguiente:

[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

Ahora, compruebe que los registros de acceso están visibles para el pod httpbin:

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

Debería ver la salida siguiente:

[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

Ámbito de compatibilidad de API de telemetría

Para el complemento de malla de servicio de Istio para AKS, los campos de la API de telemetría se clasifican como valores allowed, supported y blocked. Para obtener más información sobre la directiva de soporte técnico del complemento de Istio para las características y las configuraciones de malla, consulte el documento de directiva de compatibilidad del complemento de Istio.

Las siguientes configuraciones de la API de telemetría son allowed o supported para el complemento de Istio. Cualquier campo no incluido en esta tabla es blocked.

Campo de la API de telemetría Admitidos o permitidos Notas
accessLogging.match Compatible -
accessLogging.disabled Compatible -
accessLogging.providers Permitidas Se admite el proveedor de registro de acceso predeterminado envoy. Para obtener una experiencia administrada para la recopilación y consulta de registros, consulte Log Analytics de Container Insights de Azure Monitor. Las soluciones de análisis y recopilación de registros de código abierto o de terceros son allowed pero no son compatibles.
metrics.overrides Compatible -
metrics.providers Permitidas Se admite la recopilación de métricas con Prometheus administrado de Azure Monitor. Las soluciones de extracción de métricas de código abierto o de terceros son allowed pero no son compatibles.
tracing.* Permitidas Todas las configuraciones de seguimiento son allowed pero no son compatibles.