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
, supported
i 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. |
Azure Kubernetes Service