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
- Debe estar en revisión
asm-1-22
o una versión superior. Para obtener información sobre cómo realizar actualizaciones de versiones secundarias, consulte la documentación de actualización del complemento de Istio.
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. |
Azure Kubernetes Service