Webhook Instana AutoTrace
Der Webhook Instana AutoTrace ist ein Kubernetes -und Red Hat OpenShift-kompatibler Webhook für die Mutation des Zugangscontrollers. Der Webhook konfiguriert automatisch die Instana-Traceerstellung für Node.js-, .NET Core-, Ruby-und Python -Anwendungen, die im gesamten Kubernetes -oder Red Hat OpenShift -Cluster ausgeführt werden. Außerdem können Sie die Instana-Traceerstellung für IBM MQ -und App Connect -Bereitstellungen aktivieren, die in IBM Cloud Pak for Integrationausgeführt werden.
Einschränkungen
- Der Webhook AutoTrace von Instana wird für neue Kubernetes -Ressourcen wirksam. Möglicherweise müssen Sie Ihre Pods, ReplicaSets, StatefulStes, Implementierungen und DeploymentConfigslöschen und anschließend erneut erstellen, damit der Instana-Webhook AutoTrace seine Konfiguration abschließen kann.
- Es werden nur
linux/amd64
Kubernetes -Knoten unterstützt. - Instana AutoTrace -Webhook aktualisiert die von ihm installierte Instrumentierung nicht automatisch. Daher ist der Webhook Instana AutoTrace standardmäßig nicht aktiviert.
- Einschränkungen
- Unterstützte Laufzeiten
- Voraussetzungen
- Webhook Instana AutoTrace installieren
- Funktion des Webhooks überprüfen
- Instana AutoTrace -Webhook und -Instrumentierung aktualisieren
- Webhook AutoTrace von Instana deinstallieren
- Konfigurationen
- Fehlerbehebung
Unterstützte Laufzeiten
Der Webhook Instana AutoTrace unterstützt die folgenden Technologien:
Voraussetzungen
Stellen Sie vor der Installation des Webhooks Instana AutoTrace in einem Kubernetes-basierten Cluster sicher, dass die folgenden Voraussetzungen erfüllt sind:
- Kubernetes 1.16+
- Red Hat OpenShift 4.5+
kubectl
1.16+- Helm 3.2+ (Einige Automatisierungsfunktionen basieren auf Helm
lookup
-Funktionen)
Instana-Webhook AutoTrace installieren
Ersetzen Sie < download_key> im folgenden Script durch einen gültigen Instana- Agentenschlüssel oder Downloadschlüsselund führen Sie dann das Script mit Administratorberechtigungen für Ihren Cluster aus:
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>
Wichtig: Bei einer Installation unter Red Hat OpenShiftmüssen Sie die Option --set openshift.enabled=true
im Script angeben.
In einer Air-Gap-Umgebung konfigurieren
Für Air-Gap-Umgebungen müssen Sie das instana-autotrace-webhook
Helm -Diagramm, das instana-autotrace-webhook
-Container-Image und das instrumentation
-Container-Image in Ihrer Umgebung bereitstellen.
Führen Sie den folgenden Befehl aus, um das neueste Release des Helm -Diagramms in Ihr aktuelles Arbeitsverzeichnis herunterzuladen:
helm pull instana-autotrace-webhook --repo https://agents.instana.io/helm instana-autotrace-webhook
Um das Zielverzeichnis dieses Befehls zu ändern, können Sie mit der Option -d <DESTINATION_PATH>
ein anderes Zielverzeichnis angeben.
Führen Sie den folgenden Befehl aus, um das neueste instana-autotrace-webhook
-Image herunterzuladen:
docker pull containers.instana.io/instana/release/agent/instana-autotrace-webhook:latest
Führen Sie den folgenden Befehl aus, um das neueste Instrumentierungsimage herunterzuladen:
docker pull icr.io/instana/instrumentation:latest
Die beiden Container-Images müssen in Ihrer Container-Registry verfügbar sein. Das zuvor heruntergeladene Helm -Diagrammarchiv muss auf dem System verfügbar sein, auf dem der Befehl helm install
ausgeführt wird.
Führen Sie den folgenden Befehl aus, um den Webhook Instana AutoTrace zu installieren:
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>
Container-Registry-Authentifizierung
Das Image instrumentation
in der Container-Registry wird als initContainer in allen Anwendungspods verwendet. Wenn Ihre Container-Registry die Ressource für den geheimen Schlüssel imagePullerfordert, muss sie in allen Anwendungsnamespaces verfügbar sein.
Prüfen, ob der Webhook funktioniert
Gehen Sie wie folgt vor, um zu überprüfen, ob der Webhook funktioniert:
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die
instana-autotrace-webhook
im Namensbereichinstana-autotrace-webhook
wie erwartet ausgeführt wird:kubectl get pods -n instana-autotrace-webhook
Beispielergebnis:
NAME READY STATUS RESTARTS AGE instana-autotrace-webhook-7c5d5bf6df-82w7c 1/1 Running 0 12m
Verwenden Sie den Webhook Instana AutoTrace . Wenn der Webhook Instana AutoTrace ausgeführt wird, stellen Sie einen Node.js -Pod bereit. Instana AutoTrace wird im Pod Node.js automatisch aktiviert. Im Protokoll für den Pod wird eine Bezeichnung angezeigt, die angibt, dass Instana AutoTrace auf den Pod Node.js angewendet wurde:
kubectl get pod test-nodejs -n test-apps -o=jsonpath='{.metadata.labels.instana-autotrace-applied}' true
Wenn Sie den Instana-Hostagenten mithilfe des instana/agent
Helm -Diagramms installiert haben, erscheint der Prozess Node.js in Ihrem Instana-Dashboard. Weitere Informationen finden Sie in der Dokumentation Installing the Host Agent on Kubernetes .
Wenn die instana-autotrace-applied
-Bezeichnungen jedoch nicht auf Ihren Containern angezeigt werden, lesen Sie den Abschnitt Fehlerbehebung.
Webhook und Instrumentierung Updating Instana AutoTrace
Instana AutoTrace -Webhook verfügt nicht über eine automatisierte Methode zum Aktualisieren der installierten Instrumentierung. Die Instrumentierung wird über das icr.io/instana/instrumentation
-Image bereitgestellt. Das instana-autotrace-webhook
Helm -Diagramm wird regelmäßig für die Verwendung des neuesten icr.io/instana/instrumentation
-Image aktualisiert.
Führen Sie die folgenden Schritte aus, um den Webhook und die Instrumentierung für AutoTrace zu aktualisieren:
Aktualisieren Sie das Helm -Diagrammrepository in Ihrer lokalen Helm -Installation mit dem folgenden Befehl:
helm repo update
Führen Sie mit dem folgenden Befehl ein Upgrade für die Bereitstellung des
instana-autotrace-webhook
Helm -Diagramms durch:helm upgrade --namespace instana-autotrace-webhook instana-autotrace-webhook \ --repo https://agents.instana.io/helm instana-autotrace-webhook \ --reuse-values
Instana-Webhook AutoTrace deinstallieren
Führen Sie den folgenden Befehl aus, um den Webhook Instana AutoTrace zu deinstallieren:
helm uninstall instana-autotrace-webhook \
--namespace instana-autotrace-webhook \
--no-hooks
Nach der Ausführung des Befehls helm uninstall
wird die folgende Ausgabe angezeigt: release "instana-autotrace-webhook" uninstalled
.
Überprüfen Sie, dass der Webhook Instana AutoTrace ordnungsgemäß deinstalliert wurde. Sie können dies überprüfen, indem Sie in der Instana-Benutzerschnittstelle auf Kubernetes > Cluster klicken oder indem Sie den folgenden Befehl ausführen:
`kubectl get pods --namespace instana-autotrace-webhook`
Wenn die Deinstallation erfolgreich ist, wird der Pod instana-autotrace-webhook
nicht mehr im Namensbereich angezeigt.
Um AutoTrace aus implementierten Anwendungen zu entfernen und zu verhindern, dass AutoTrace in neue Anwendungen eingeschlossen wird, müssen Sie alle übergeordneten Ressourcen erneut implementieren, die zuvor vom Webhook AutoTrace geändert wurden. Dadurch wird sichergestellt, dass die gesamte AutoTrace -Konfiguration (init-Container und Umgebungsvariablen) aus den Ressourcenspezifikationen und Podvorlagen entfernt wird.
Konfigurationen
Inaktivieren von Tracer
Sie können Tracer einzeln inaktivieren, indem Sie die Option --set autotrace.[technology].enabled=false
verwenden. Die folgenden Technologien sind verfügbar:
- .Net-Kern (netcore)
- Python (Python)
- Nodejs (nodejs)
- Rubin (ruby)
Beispiel:
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.ruby.enabled=false \
Rollenbasierte Zugriffssteuerung
Um den Webhook AutoTrace in einem ServiceAccount
zu implementieren, der von einem ClusterRole
und übereinstimmenden ClusterRoleBinding
geschützt wird, legen Sie das Flag rbac.enabled=true
fest, wenn Sie das Helm -Chart bereitstellen.
Wenn Sie Podsicherheitsrichtlinien verwenden, fügen Sie zusätzlich zur rollenbasierten Zugriffssteuerung rbac.psp.enabled=true
zu den Helm -Argumenten hinzu.
Pod-Sicherheitsstandards können auch über den integrierten Controller für die Aufnahme von Pod-Sicherheit durchgesetzt werden. Weitere Informationen zum Pod Security Admission finden Sie in der Dokumentation zuKubernetes.
Wenn die Flags rbac.enabled=false
und webhook.pod.hostNetwork=false
in der Helm -Installation festgelegt sind, können Sie den Webhook AutoTrace mit dem restriktiven Pod-Sicherheitsstandard ausführen, indem Sie den folgenden Befehl ausführen:
kubectl label --overwrite ns instana-autotrace-webhook pod-security.kubernetes.io/enforce=restricted
Container-Port
Damit der API-Server von Kuberneteserreichbar ist, muss der AutoTrace -Webhook-Pod im Hostnetz gehostet werden und die Bereitstellung muss so konfiguriert werden, dass dies transparent erreicht wird. Standardmäßig ist der Container an Port 42650
gebunden.
Wenn Port 42650
verwendet wird, stürzt der Webhook AutoTrace ab, weil sein Port bereits gebunden ist. Sie können den Port mit der Eigenschaft webhook.pod.port
ändern.
Opt-in oder Opt-out
Der Webhook AutoTrace instrumentiert alle Container in allen Pods. Sie können jedoch besser steuern, welche Features instrumentiert werden und welche nicht. Wenn Sie den Wert für autotrace.opt_in=true
festlegen, wenn Sie das Helm -Diagramm bereitstellen, ändert der Webhook AutoTrace Pods, Replikatgruppen, statusabhängige Gruppen, Dämongruppen und Bereitstellungen mit der Bezeichnung instana-autotrace: "true"
.
Unabhängig vom Wert für autotrace.opt_in
berührt der Webhook AutoTrace keine Pods mit der Bezeichnung instana-autotrace: "false"
.
Die Bezeichnung instana-autotrace: "false"
wird in den Metadaten von DaemonSets, Implementierungen, DeploymentConfigs, ReplicaSetsund StatefulSetswie in verschachtelten Podvorlagen und in eigenständigen Pods berücksichtigt.
Namensbereiche ignorieren
Mithilfe der autotrace.exclude.namespaces
-Konfiguration können Sie vollständige Namensbereiche von der automatischen Instrumentierung ausschließen.
Ressourcen mit der Bezeichnung instana-autotrace: "true"
werden unabhängig vom Ausschluss des Namensbereichs instrumentiert.
Die Bezeichnung instana-autotrace
wird in den Metadaten von DaemonSets, Implementierungen, DeploymentConfigs, ReplicaSetsund StatefulSetswie in verschachtelten Podvorlagen und in eigenständigen Pods berücksichtigt.
Ressourcen ignorieren
Ressourcen mit der Bezeichnung instana-autotrace: "false"
werden unabhängig von anderen Einstellungen ignoriert.
Die Bezeichnung instana-autotrace
wird in den Metadaten von DaemonSets, Implementierungen, DeploymentConfigs, ReplicaSetsund StatefulSetswie in verschachtelten Podvorlagen und in eigenständigen Pods berücksichtigt.
NGINX und ingress-nginx
Zum Aktivieren der automatischen NGINX-und ingress-nginx-Instrumentierung müssen Sie das Opt-in durchführen, indem Sie autotrace.ingress_nginx.enabled=true
festlegen. Lesen Sie anschließend den Abschnitt zur Fehlerbehebung und stellen Sie sicher, dass die relevanten Objekte aktualisiert oder neu erstellt werden.
Der Webhook AutoTrace unterstützt den ingress-nginx Kubernetes Ingress-Controller 0.34.1 oder höher und ist mit dem Helm -Diagramm 2.11.2 oder höher kompatibel.
IBM MQ und ACE
Um die automatische IBM MQ -und ACE-Instrumentierung zu aktivieren, müssen Sie ein Opt-in durchführen, indem Sie autotrace.ibmmq.enable=true
und autotrace.ace.enable=true
festlegen. Der Webhook AutoTrace unterstützt nur IBM MQ und ACE in IBM Cloud Pak for Integration. IBM Cloud Pak for Integration wird im Red Hat OpenShift -Cluster ausgeführt und Sie müssen daher auch openshift.enabled=true
festlegen. Geben Sie den folgenden Befehl ein, um den Webhook Instana AutoTrace mit aktivierter automatischer Instrumentierung von IBM MQ und ACE einzurichten:
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
Node.js ECMAScript-Module
ECMAScript-Module sind in Node.js 18.19.0 und höher nicht verfügbar. Weitere Informationen zu den unterbrechenden Änderungen in Node.js 18.19.0finden Sie in den offiziellen Releaseinformationen. Die ECMAScript-Module befinden sich in der experimentellen Phase.
Wenn Ihre Node.js -Anwendung ECMAScript-Module (ES-Module) verwendet, legen Sie autotrace.nodejs.esm=true
fest. Bevor der Anwendungscode geladen wird, lädt und initialisiert der Webhook AutoTrace den Node.js -Collector mithilfe des Arguments --experimental-loaders
anstelle des Arguments --require
. Befolgen Sie das Aktualisierungshandbuch , um sicherzustellen, dass Sie die neueste Version des Webhooks AutoTrace verwenden.
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
Fehlerbehebung
Wenn der Webhook Instana AutoTrace , der sich auf Ihre neuen Kubernetes -Ressourcen auswirkt, nicht angezeigt wird, führen Sie die folgenden Schritte aus, um Fehler zu beheben:
Prüfen, ob der Instana-Webhook AutoTrace Anforderungen empfängt
Um sicherzustellen, dass der Webhook Instana AutoTrace Anforderungen empfängt, überprüfen Sie die Protokolle des Pods instana-autotrace-webhook
, indem Sie den folgenden Befehl ausführen:
kubectl logs -l app.kubernetes.io/name=instana-autotrace-webhook -n instana-autotrace-webhook
In einer funktionierenden Installation werden die folgenden Protokolle angezeigt:
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'
Wenn Sie solche Protokolle nicht sehen, liegt möglicherweise ein Problem mit der Kubernetes -Konfiguration vor. Fahren Sie mit der Fehlerbehebung fort, indem Sie den folgenden Abschnitt überprüfen.
Protokolle von 'kube-apiserver' überprüfen
Überprüfen Sie die Protokolle von kube-apiserver
. Diese Protokolle geben Aufschluss darüber, ob der Webhook Instana AutoTrace gestartet wird, und enthalten Informationen zum Ergebnis der Ausführung.
Allgemeine Probleme
Keine Netzkonnektivität zwischen den Pods 'kube-apiserver 'und 'instana-autotrace-webhook'
Das häufigste Problem ist, dass der kube-apiserver
die Workerknoten, auf denen die instana-autotrace-webhook
-Pods ausgeführt werden, aufgrund von Sicherheitsrichtlinien nicht erreichen kann. Dies verhindert, dass der Instana-Webhook AutoTrace funktioniert. In diesem Fall besteht die Lösung darin, die Netzeinstellungen zu ändern, damit kube-apiserver
auf die instana-autotrace-webhook
-Pods zugreifen kann. Überprüfen Sie Ihre Netzsicherheitsrichtlinien, um sicherzustellen, dass kubeapi-server
Verbindungen einleiten und Antworten von instana-autotrace-webhook
erhalten kann. Instana kann keine direkte Anleitung zur Lösung dieses Problems bereitstellen, da die Lösungen je nach Ihren Richtlinien und Durchsetzungsmechanismen variieren.
-Pods 'kube-apiserver' und 'instana-autotrace-webhook ' können keine TLS-Sitzung vereinbaren
Ein weiteres sporadisches Problem, das auftreten kann, ist, wenn Verschlüsselungseinschränkungen, insbesondere hinsichtlich der Algorithmen, die für TLS verwendet werden können, verhindern, dass kube-apiserver
eine TLS-Sitzung mit dem instana-autotrace-webhook
-Pod aushandelt. In diesem Fall öffnen Sie ein Ticketund informieren Instana darüber, welche Verschlüsselungsalgorithmen von Ihren Clustern unterstützt werden.