Instana AutoTrace -hak WWW
Hak WWW Instana AutoTrace to Kubernetes i OpenShiftkompatybilny z kontrolerem dostępu mutujący hak WWW. Automatycznie konfiguruje śledzenie Instana w aplikacjach Node.js, .NET Core, Ruby i Python , które działają w całym klastrze Kubernetes lub Red Hat OpenShift . Ponadto dokumentacja Instana zawiera instrukcje dotyczące włączania śledzenia Instana dla wdrożeń IBM MQ i App Connect , które działają w produkcie IBM Cloud Pak for Integration.
- Wymagania wstępne
- Instalowanie haka WWW Instana AutoTrace
- Sprawdzanie działania haka WWW
- Aktualizowanie programu Instana AutoTrace WebHook i instrumentacji
- Deinstalowanie haka WWW Instana AutoTrace
- Gotchas (Gotchas)
- konfiguracja
- rozwiązywanie problemów
Wymagania wstępne
Przed zainstalowaniem haka WWW Instana AutoTrace w klastrze opartym na systemie Kubernetes należy upewnić się, że spełnione są następujące wymagania wstępne:
- Kubernetes 1.16+
- Red Hat OpenShift 4.5+
kubectl1.16+- Helm 3.2+ (niektóre funkcje automatyzacji bazują na funkcjach Helm
lookup)
Instalowanie haka WWW Instana AutoTrace
Zastąp zmienną <download_key> w poniższym skrypcie poprawną nazwą Instana klucz agenta lub klucz pobierania, a następnie uruchom skrypt z uprawnieniami administratora klastra:
helm install --create-namespace --namespace instana-autotrace-webhook instana-autotrace-webhook \
--repo https://agents.instana.io/helm instana-autotrace-webhook \
--set webhook.imagePullCredentials.password=<download_key>
Ważne: Jeśli instalacja jest przeprowadzana w systemie Red Hat OpenShift, w skrypcie należy podać opcję --set openshift.enabled=true .
Konfigurowanie w środowisku z luką powietrzną
W przypadku środowisk z luką powietrzną należy udostępnić wykres instana-autotrace-webhook Helm , obraz kontenera instana-autotrace-webhook i obraz kontenera instrumentation w danym środowisku.
Aby pobrać najnowszą wersję wykresu Helm do bieżącego katalogu roboczego, uruchom następującą komendę:
helm pull instana-autotrace-webhook --repo https://agents.instana.io/helm instana-autotrace-webhook
Uwaga: Aby zmienić katalog docelowy tej komendy, można użyć opcji -d <DESTINATION_PATH> w celu określenia innego katalogu docelowego.
Aby pobrać najnowszy obraz instana-autotrace-webhook , uruchom następującą komendę:
docker pull containers.instana.io/instana/release/agent/instana-autotrace-webhook:latest
Aby pobrać najnowszy obraz instrumentacji, uruchom następującą komendę:
docker pull icr.io/instana/instrumentation:latest
Dwa obrazy kontenerów muszą być dostępne w rejestrze kontenerów. Wcześniej pobrane archiwum wykresu Helm musi być dostępne w systemie, w którym uruchomiono komendę helm install .
Aby zainstalować program Instana Autotrace WebHook, uruchom następującą komendę:
helm upgrade --install --create-namespace \
--namespace instana-autotrace-webhook \
--set webhook.image=<INSTANA_AUTOTRACE_WEBHOOK_IMAGE_PATH> \
--set autotrace.instrumentation.image=<INSTRUMENTATION_IMAGE_PATH> \
instana-autotrace-webhook <PATH_TO_HELM_CHART_ARCHIVE>
Uwierzytelnianie rejestru kontenera
Obraz instrumentation w rejestrze kontenerów jest używany jako initContainer we wszystkich zasobnikach aplikacji. Jeśli rejestr kontenera wymaga zasobu imagePullSecret, musi być on dostępny we wszystkich przestrzeniach nazw aplikacji.
Sprawdzanie działania haka WWW
Aby sprawdzić, czy hak WWW działa, wykonaj następujące kroki:
- Aby sprawdzić, czy serwer
instana-autotrace-webhookw przestrzeni nazwinstana-autotrace-webhookdziała zgodnie z oczekiwaniami, uruchom następującą komendę:
kubectl get pods -n instana-autotrace-webhook
Przykładowy wynik:
NAME READY STATUS RESTARTS AGE
instana-autotrace-webhook-7c5d5bf6df-82w7c 1/1 Running 0 12m
- Użyj haka WWW Instana AutoTrace . Jeśli hak WWW Instana AutoTrace jest uruchomiony, wdróż zasobnik Node.js , a usługa Instana Autotrace zostanie automatycznie włączona w zasobniku Node.js . W dzienniku zasobnika znajduje się etykieta wskazująca, że usługa Instana Autotrace została zastosowana do zasobnika Node.js :
kubectl get pod test-nodejs -n test-apps -o=jsonpath='{.metadata.labels.instana-autotrace-applied}'
true
Jeśli zainstalowano agenta hosta Instana za pomocą wykresu instana/agent Helm , proces Node.js zostanie wyświetlony w panelu kontrolnym Instana. Więcej informacji na ten temat zawiera dokumentacja Instalowanie agenta hosta w systemie Kubernetes .
Jeśli jednak etykiety instana-autotrace-applied nie są wyświetlane w kontenerach, należy zapoznać się z sekcją Rozwiązywanie problemów.
Aktualizowanie programu Instana AutoTrace WebHook i instrumentacji
Usługa Instana AutoTrace WebHook nie ma zautomatyzowanego sposobu aktualizowania instalowanej przez nią instrumentacji. Instrumentacja jest dostarczana na obrazie icr.io/instana/instrumentation . Wykres instana-autotrace-webhook Helm jest regularnie aktualizowany w celu korzystania z najnowszego obrazu icr.io/instana/instrumentation .
Aby zaktualizować narzędzie Instana AutoTrace WebHook i instrumentację, wykonaj następujące kroki:
Zaktualizuj repozytorium wykresów Helm w lokalnej instalacji Helm za pomocą następującej komendy:
helm repo updateZaktualizuj wdrożenie wykresu
instana-autotrace-webhookHelm za pomocą następującej komendy:helm upgrade --namespace instana-autotrace-webhook instana-autotrace-webhook \ --repo https://agents.instana.io/helm instana-autotrace-webhook \ --reuse-values
Deinstalowanie haka WWW Instana AutoTrace
Hak WWW Instana AutoTrace można zdeinstalować, uruchamiając następującą komendę:
helm uninstall instana-autotrace-webhook \
--namespace instana-autotrace-webhook \
--no-hooks
Po uruchomieniu komendy deinstalacji helm wyświetlane są następujące dane wyjściowe: release "instana-autotrace-webhook" uninstalled.
Sprawdź, czy hak WWW Instana AutoTrace został poprawnie zdeinstalowany. Można to sprawdzić w sekcji Kubernetes > Klastry w interfejsie użytkownika Instana lub uruchamiając następującą komendę:
`kubectl get pods --namespace instana-autotrace-webhook`
W przestrzeni nazw nie powinien być widoczny zasobnik o nazwie instana-autotrace-webhook .
UWAGA: Aby usunąć opcję AutoTrace z wdrożonych aplikacji i zapobiec dołączaniu opcji AutoTrace do nowych aplikacji, należy ponownie wdrożyć wszystkie zasoby wyższego rzędu, które były uprzednio zmutowane przez hak WWW AutoTrace . Dzięki temu cała konfiguracja AutoTrace (kontenery inicjowania i zmienne środowiskowe) zostanie usunięta ze specyfikacji zasobów i szablonów zasobników.
Gotchas (Gotchas)
- Hak WWW Instana AutoTrace jest uwzględniany w nowych zasobach systemu Kubernetes . Konieczne może być usunięcie zasobników, ReplicaSets, StatefulStes, wdrożeń i DeploymentConfigs , a następnie ponowne utworzenie ich dla haka WWW Instana AutoTrace w celu zakończenia konfiguracji.
- Obecnie obsługiwane są tylko węzły systemu
linux/amd64Kubernetes .
Konfiguracja
Kontrola dostępu oparta na rolach
Aby wdrożyć hak WWW AutoTrace na serwerze ServiceAccount strzeżonym przez ClusterRole i zgodnym ClusterRoleBinding, należy ustawić flagę rbac.enabled=true podczas wdrażania wykresu Helm .
Oprócz kontroli dostępu opartej na rolach, jeśli używane są strategie bezpieczeństwa sekcji, należy dodać parametr rbac.psp.enabled=true do argumentów Helm .
Standardy ochrony zasobnika mogą być również wymuszane za pomocą wbudowanego kontrolera Wstęp do ochrony zasobnika. Więcej informacji na temat programu Pod Security Admission zawiera dokumentacja systemuKubernetes.
Jeśli opcje rbac.enabled=false i webhook.pod.hostNetwork=false są ustawione w instalacji Helm , można uruchomić hak WWW AutoTrace z restrykcyjnym standardem zabezpieczeń zasobnika, uruchamiając następującą komendę:
kubectl label --overwrite ns instana-autotrace-webhook pod-security.kubernetes.io/enforce=restricted
Port kontenera
Aby można było uzyskać dostęp z poziomu serwera Kubernetes' apiserver, hak WWW AutoTrace musi być udostępniany w sieci hosta, a wdrożenie musi być skonfigurowane w taki sposób, aby było przezroczyste. Domyślnie kontener jest powiązany z portem 42650.
Jeśli jakiś proces używa już portu 42650, co powoduje, że hak WWW AutoTrace jest zapętlony, ponieważ znajduje swój port, który jest już powiązany, można zmienić port za pomocą właściwości webhook.pod.port .
Opt-in lub opt-out
Hak WWW AutoTrace instrumentuje wszystkie kontenery we wszystkich zasobnikach. Można jednak mieć większą kontrolę nad tym, które funkcje są instrumentowane, a które nie. Ustawienie wartości autotrace.opt_in=true podczas wdrażania wykresu Helm powoduje, że hak WWW AutoTrace modyfikuje zasobniki, zestawy replik, zestawy stanowe, zestawy demonów i wdrożenia z etykietą instana-autotrace: "true" .
Niezależnie od wartości parametru autotrace.opt_inhak WWW AutoTrace nie dotyka zasobników z etykietą instana-autotrace: "false" .
Etykieta instana-autotrace: "false" jest uwzględniana w metadanych zestawów DaemonSets, wdrożeń, DeploymentConfigs, ReplicaSetsi StatefulSets, podobnie jak w zagnieżdżonych szablonach podów i w autonomicznych podach.
Ignorowanie przestrzeni nazw
Za pomocą konfiguracji autotrace.exclude.namespaces można wykluczyć całe przestrzenie nazw z automatycznego instrumentowania.
Zasoby z etykietą instana-autotrace: "true" są instrumentowane niezależnie od wykluczenia przestrzeni nazw.
Etykieta instana-autotrace jest uwzględniana w metadanych zestawów DaemonSets, wdrożeń, DeploymentConfigs, ReplicaSetsi StatefulSets, podobnie jak w zagnieżdżonych szablonach podów i w autonomicznych podach.
Ignorowanie zasobów
Zasoby, które mają etykietę instana-autotrace: "false" , są ignorowane bez względu na inne ustawienia.
Etykieta instana-autotrace jest uwzględniana w metadanych zestawów DaemonSets, wdrożeń, DeploymentConfigs, ReplicaSetsi StatefulSets, podobnie jak w zagnieżdżonych szablonach podów i w autonomicznych podach.
NGINX i ingress-nginx
Aby aktywować automatyczną instrumentację NGINX i ingress-nginx, należy włączyć tę opcję, ustawiając wartość autotrace.ingress_nginx.enabled=true. Przeczytaj sekcję dotyczącą rozwiązywania problemów i upewnij się, że odpowiednie obiekty zostały zaktualizowane lub ponownie utworzone.
Hak WWW AutoTrace obsługuje kontroler ingress-nginx Kubernetes w wersjach > = 0.34.1i jest kompatybilny z wykresem Helm w wersji > = 2.11.2.
IBM MQ i ACE
Aby aktywować produkt IBM MQ i automatyczną instrumentację ACE, należy włączyć tę opcję, ustawiając wartości autotrace.ibmmq.enable=true i autotrace.ace.enable=true. Hak WWW AutoTrace obsługuje tylko produkty IBM MQ i ACE działające w produkcie IBM Cloud Pak for Integration. IBM Cloud Pak for Integration działa w klastrze Red Hat OpenShift . Należy również ustawić parametr openshift.enabledna wartość true. Aby skonfigurować hak WWW Instana AutoTrace z włączoną funkcją automatycznej instrumentacji IBM MQ i ACE, wprowadź następującą komendę:
helm install --create-namespace --namespace instana-autotrace-webhook instana-autotrace-webhook \
--repo https://agents.instana.io/helm instana-autotrace-webhook \
--set webhook.imagePullCredentials.password=<download_key> \
--set openshift.enabled=true \
--set autotrace.ibmmq.enabled=true \
--set autotrace.ace.enabled=true
Moduły ECMAScript
Node.js
Jeśli aplikacja Node.js używa modułów ECMAScript (moduły ES), ustaw wartość autotrace.nodejs.esm=true. Przed załadowaniem kodu aplikacji hak WWW usługi Autotrace ładuje i inicjuje kolektor Node.js , używając argumentu --experimental-loaders zamiast argumentu --require . Postępuj zgodnie z podręcznikiem aktualizacji , aby upewnić się, że używana jest najnowsza wersja haka WWW automatycznego śledzenia.
helm install --create-namespace --namespace instana-autotrace-webhook instana-autotrace-webhook \
--repo https://agents.instana.io/helm instana-autotrace-webhook \
--set webhook.imagePullCredentials.password=<download_key>
--set autotrace.nodejs.esm=true
Rozwiązywanie problemów
Jeśli hak WWW Instana AutoTrace nie ma wpływu na nowe zasoby systemu Kubernetes , należy wykonać następujące czynności.
Upewnij się, że hak WWW Instana AutoTrace odbiera żądania
Aby sprawdzić dzienniki zasobnika instana-autotrace-webhook za pomocą komendy kubectl, uruchom następującą komendę:
kubectl logs -l app.kubernetes.io/name=instana-autotrace-webhook -n instana-autotrace-webhook
W działającej instalacji można wyświetlić następujące dzienniki:
14:41:37.590 INFO |- [AdmissionReview 48556a1a-7d55-497b-aa9c-23634b089cd1] Applied transformation DefaultDeploymentTransformation to the Deployment 'test-netcore-glibc/test-apps'
14:41:37.588 INFO |- [AdmissionReview 1d5877cf-7153-4a95-9bfb-de0af8351195] Applied transformation DefaultDeploymentTransformation to the Deployment 'test-nodejs-12/test-apps'
Jeśli takie dzienniki nie są wyświetlane, może wystąpić problem z konfiguracją systemu Kubernetes , patrz poniższa sekcja.
Sprawdź dzienniki serwera kube-apiserver
Dzienniki kube-apiserverraportuje, czy hak WWW Instana AutoTrace jest uruchamiany, a jeśli tak, to udostępnia informacje o wyniku wykonania.
Typowe problemy
Brak połączenia sieciowego między programem kube-apiserver a zasobnikami instana-autotrace-webhook
Najczęstszym problemem jest to, że kube-apiserver nie może uzyskać dostępu do węzłów roboczych, na których działają zasobniki instana-autotrace-webhook ze względu na strategie bezpieczeństwa, które uniemożliwiają działanie haka WWW Instana AutoTrace . W tym przypadku rozwiązaniem jest zmiana ustawień sieciowych, tak aby program kube-apiserver mógł uzyskać dostęp do zasobników instana-autotrace-webhook . Nie można udostępnić wskazówek dotyczących sposobu rozwiązania tego przypadku, ponieważ osiągnięcie tego celu zależy całkowicie od konfiguracji.
zasobniki Kube-apiserver i instana-autotrace-webhook nie mogą negocjować sesji TLS
Innym sporadycznym problemem, który może wystąpić jest, gdy ograniczenia kryptograficzne, zwłaszcza w zakresie, które algorytmy mogą być używane dla TLS, zapobiec kube-apiserver from negotiating a TLS session with the instana-autotrace-webhook ` pod. W takim przypadku otwórz zgłoszenie i poinformuj dział wsparcia Instana o algorytmach kryptograficznych obsługiwanych przez klastry.