API de telemetria para o complemento de malha de serviço baseado no Istio para o Serviço de Kubernetes do Azure
O Istio pode gerar métricas, rastreamentos distribuídos e logs de acesso para todas as cargas de trabalho da malha. O complemento de malha de serviço baseado no Istio para o AKS (Serviço de Kubernetes do Azure) fornece opções de personalização de telemetria por meio do MeshConfig compartilhado e da API de Telemetria do Istio v1
para revisões secundárias asm-1-22
e versões superiores do complemento do Istio.
Observação
Embora o MeshConfig do Istio também forneça opções para configurar a telemetria globalmente em toda a malha, a API de Telemetria oferece um controle mais granular sobre as configurações de telemetria por serviço ou por carga de trabalho. À medida que a comunidade do Istio continua investindo na API de Telemetria, ela passou a ser o método preferencial para a configuração de telemetria. Incentivamos a migração para a API de Telemetria para configurar a telemetria a ser coletada na malha.
Pré-requisitos
- É preciso usar a revisão
asm-1-22
ou superior. Para obter informações sobre como fazer atualizações de versão secundária, confira a documentação de atualização do complemento do Istio.
Configurar os recursos de telemetria
O exemplo a seguir demonstra como o log de acesso do Envoy pode ser habilitado em toda a malha para o complemento do Istio por meio da API de Telemetria usando o asm-1-22
(ajuste a revisão conforme necessário). Para ver diretrizes sobre outras personalizações da API de Telemetria para o complemento, confira a seção de escopo de suporte da API de Telemetria e a documentação do Istio.
Implantar aplicativos de exemplo
Rotule o namespace para a injeção de sidecar:
kubectl label ns default istio.io/rev=asm-1-22
Implante o aplicativo sleep
e defina a variável de ambiente 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})
Em seguida, implante o aplicativo httpbin
:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.22/samples/httpbin/httpbin.yaml
Habilitar o log de acesso do Envoy com a API de Telemetria do Istio
Implante o seguinte recurso de API de Telemetria v1
do Istio para habilitar o log de acesso do Envoy em toda a malha:
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
Testar os logs de acesso
Envie uma solicitação de sleep
a httpbin
:
kubectl exec "$SOURCE_POD" -c sleep -- curl -sS -v httpbin:8000/status/418
Verifique se os logs de acesso estão visíveis para o pod sleep
:
kubectl logs -l app=sleep -c istio-proxy
Você deve ver o seguinte resultado:
[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
Agora verifique se os logs de acesso estão visíveis para o pod httpbin
:
kubectl logs -l app=httpbin -c istio-proxy
Você deve ver o seguinte resultado:
[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
Escopo de suporte à API de Telemetria
Para o complemento de malha de serviço do Istio para AKS, os campos da API de Telemetria são classificados como os valores allowed
, supported
e blocked
. Para obter mais informações sobre a política de suporte do complemento do Istio para recursos e configurações de malha, confira o documento sobre a política de suporte do complemento do Istio.
As seguintes configurações da API de Telemetria são allowed
ou supported
para o complemento do Istio. Qualquer campo não incluído nesta tabela é blocked
.
Campo da API de Telemetria | Com suporte/Permitido | Observações |
---|---|---|
accessLogging.match |
Com suporte | - |
accessLogging.disabled |
Com suporte | - |
accessLogging.providers |
Permitido | Há suporte para o provedor de log de acesso envoy padrão. Para ter uma experiência gerenciada de coleta e consulta de logs, confira Log Analytics dos Insights de Contêiner do Azure Monitor. Soluções de coleta e análise de logs de terceiros ou de código aberto são allowed , mas não há suporte para elas. |
metrics.overrides |
Com suporte | - |
metrics.providers |
Permitido | Há suporte para a coleção de métricas no Prometheus Gerenciado do Azure Monitor. Soluções de extração de métricas de terceiros ou de código aberto são allowed , mas não há suporte para elas. |
tracing.* |
Permitido | Todas as configurações de rastreamento são allowed , mas não há suporte para elas. |
Azure Kubernetes Service