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.

Unterstützte Laufzeiten

Der Webhook Instana AutoTrace unterstützt die folgenden Technologien:

  • Python

  • .NET Core

  • NGINX

    Für die automatische Instrumentierung wird nur NGINX 1.19 oder höher unterstützt.

    Instana AutoTrace WebHook unterstützt OpenResty noch nicht.

  • Node.js

  • Ruby

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:

  1. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die instana-autotrace-webhook im Namensbereich instana-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
    
  2. 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:

  1. Aktualisieren Sie das Helm -Diagrammrepository in Ihrer lokalen Helm -Installation mit dem folgenden Befehl:

    helm repo update
    
  2. 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=falseverwenden. 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 ClusterRoleBindinggeschü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 42650gebunden.

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_inberü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=truefestlegen. 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=truefestlegen. 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=truefestlegen. 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=truefest. 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-webhookerhalten 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.