Udostępnij za pośrednictwem


Dodatek siatki usługi opartej na technologii Istio dla interfejsu API telemetrii dla usługi Azure Kubernetes Service

Istio może generować metryki, rozproszone ślady i dzienniki dostępu dla wszystkich obciążeń w siatce. Dodatek siatki usług oparty na systemie Istio dla usługi Azure Kubernetes Service (AKS) udostępnia opcje dostosowywania telemetrii za pośrednictwem udostępnionej aplikacji MeshConfig i interfejsu API v1 telemetrii Istio dla dodatku Istio w wersji pomocniczej i nowszych asm-1-22 .

Uwaga

Chociaż funkcja Istio MeshConfig udostępnia również opcje konfigurowania telemetrii globalnie w obrębie siatki, interfejs API telemetrii oferuje bardziej szczegółową kontrolę nad ustawieniami telemetrii dla poszczególnych usług lub dla poszczególnych obciążeń. Ponieważ społeczność Istio nadal inwestuje w interfejs API telemetrii, jest to teraz preferowana metoda konfiguracji telemetrii. Zachęcamy do migracji do interfejsu API telemetrii w celu skonfigurowania telemetrii do zbierania w siatkach.

Wymagania wstępne

  • Musisz być w wersji asm-1-22 lub nowszej. Aby uzyskać informacje na temat wykonywania uaktualnień wersji pomocniczych, zobacz dokumentację dodatku Istio.

Konfigurowanie zasobów telemetrii

W poniższym przykładzie pokazano, jak można włączyć rejestrowanie dostępu aplikacji Envoy w całej siatce dodatku Istio za pośrednictwem interfejsu API telemetrii przy użyciu polecenia asm-1-22 (dostosuj poprawkę zgodnie z potrzebami). Aby uzyskać wskazówki dotyczące innych dostosowań interfejsu API telemetrii dla dodatku, zobacz sekcję Zakres pomocy technicznej interfejsu API telemetrii i dokumentację istio.

Wdrażanie przykładowych aplikacji

Oznacz przestrzeń nazw pod kątem wstrzykiwania przyczepki:

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

Wdróż aplikację sleep i ustaw zmienną środowiskową 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})

Następnie wdróż aplikację httpbin :

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

Włączanie rejestrowania dostępu do usługi Envoy za pomocą interfejsu API telemetrii Istio

Wdróż następujący zasób interfejsu API telemetrii Istio v1 , aby włączyć rejestrowanie dostępu usługi Envoy dla całej siatki:

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

Testowanie dzienników dostępu

Wyślij żądanie z sleep do :httpbin

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

Sprawdź, czy dzienniki dostępu są widoczne dla zasobnika sleep :

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

Powinny zostać wyświetlone następujące dane wyjściowe:

[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

Teraz sprawdź, czy dzienniki dostępu są widoczne dla zasobnika httpbin :

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

Powinny zostać wyświetlone następujące dane wyjściowe:

[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

Zakres obsługi interfejsu API telemetrii

W przypadku dodatku siatki usługi Istio dla usługi AKS pola interfejsu API telemetrii są klasyfikowane jako allowed, supportedi blocked wartości. Aby uzyskać więcej informacji na temat zasad pomocy technicznej dodatku Istio dla funkcji i konfiguracji siatki, zobacz dokument Zasady pomocy technicznej dodatku Istio.

Następujące konfiguracje interfejsu API telemetrii są albo allowed supported dla dodatku Istio. Każde pole, które nie znajduje się w tej tabeli, to blocked.

Pole interfejsu API telemetrii Obsługiwane/dozwolone Uwagi
accessLogging.match Obsługiwane -
accessLogging.disabled Obsługiwane -
accessLogging.providers Dozwolone Domyślny envoy dostawca dziennika dostępu jest obsługiwany. Aby uzyskać zarządzane środowisko zbierania dzienników i wykonywania zapytań, zobacz Azure Monitor Container Insights Log Analytics. Rozwiązania do zbierania i analizy dzienników innych firm lub typu open source są allowed nieobsługiwane.
metrics.overrides Obsługiwane -
metrics.providers Dozwolone Kolekcja metryk z usługą Azure Monitor Managed Prometheus jest obsługiwana. Rozwiązania do złomowania metryk innych firm lub open source są allowed nieobsługiwane.
tracing.* Dozwolone Wszystkie konfiguracje śledzenia są allowed nieobsługiwane.