Instanziierung AutoTrace WebHook

Der Instana AutoTrace WebHook 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 Instana AutoTrace WebHook wird für neue Kubernetes -Ressourcen wirksam. Möglicherweise müssen Sie Ihre Pods löschen,ReplicaSets,StatefulStes, Bereitstellungen undDeploymentConfigs, und erstellen Sie sie dann erneut für die InstanaAutoTraceWebHook um die Konfiguration abzuschließen.
  • Es werden nur linux/amd64 Kubernetes -Knoten unterstützt.
  • Instana AutoTrace WebHook aktualisiert nicht automatisch die Instrumentierung, die installiert wird. Daher ist Instana AutoTrace WebHook standardmäßig nicht aktiviert.
  • Wenn Instana Autotrace WebHook in IBM Cloud Paks (Cloud Pak for Business Automation und Cloud Pak for Integration) installiert ist, muss Zen von der Instrumentierung ausgeschlossen werden.

Unterstützte Laufzeiten

Der Instana AutoTrace WebHook 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

Bevor Sie Instana AutoTrace WebHook in einem Kubernetes-basierten Cluster installieren, stellen Sie 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 installieren AutoTrace WebHook

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.

Instana Autotrace WebHook in IBM Cloud Paks installieren

Anweisungen zur Installation von Instana Autotrace WebHook in IBM Cloud Paks finden Sie unter Instana konfigurieren AutoTrace WebHook in einer Cloud Pak -Umgebung.

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.

So installieren Sie InstanaAutoTraceWebHook, Führen Sie den folgenden Befehl aus:

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-Registrierung erfordert,imagePullSecret Ressource, sie muss 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 Instana AutoTrace WebHook. Wenn Instana AutoTrace WebHook ausgeführt wird, stellen Sie einen Node.js -Pod bereit. Instana AutoTrace wird im Node.js -Pod automatisch aktiviert. Im Protokoll für den Pod sehen Sie eine Bezeichnung, 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.

Instana aktualisieren AutoTrace WebHook und Instrumentierung

Instana AutoTrace WebHook verfügt nicht über eine automatisierte Methode zur Aktualisierung der von ihm 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.

Gehen Sie wie folgt vor, um Instana AutoTrace WebHook und die Instrumentierung 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 deinstallieren AutoTrace WebHook

So deinstallieren Sie InstanaAutoTraceWebHook, Führen Sie den folgenden Befehl aus:

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, ob der Instana AutoTrace WebHook ordnungsgemäß deinstalliert wurde. Sie können dies überprüfen, indem Sie auf Kubernetes > Cluster in der Instana-Benutzerschnittstelle 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)
  • Node.js (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" .

Derinstana-autotrace: "false" Label wird in den Metadaten vonDaemonSets, Bereitstellungen,DeploymentConfigs,ReplicaSets, UndStatefulSets, wie in verschachtelten Pod-Vorlagen und in eigenständigen Pods.

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.

Derinstana-autotrace Label wird in den Metadaten vonDaemonSets, Bereitstellungen,DeploymentConfigs,ReplicaSets, UndStatefulSets, wie in verschachtelten Pod-Vorlagen und in eigenständigen Pods.

Ressourcen ignorieren

Ressourcen mit der Bezeichnung instana-autotrace: "false" werden unabhängig von anderen Einstellungen ignoriert.

Derinstana-autotrace Label wird in den Metadaten vonDaemonSets, Bereitstellungen,DeploymentConfigs,ReplicaSets, UndStatefulSets, wie in verschachtelten Pod-Vorlagen und in eigenständigen Pods.

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 Instana AutoTrace WebHook 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

Der ECMAScript-Module befinden sich in der Experimentalphase.

In AutotraceWebHook1.272.2 , eine neue Konfigurationsoptionautotrace.nodejs.application_type wird hinzugefügt aufgrund der Wichtige Änderungen eingeführt inNode.js18.19.0 . Um sicherzustellen, dass Sie die neueste Version desAutoTraceWebHook, siehe die Leitfaden für Updates .

  • Legen Sie für Node.js 18.19.0 und höher autotrace.nodejs.application_type auf module_v2fest:

    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.application_type=module_v2
    
  • Für Versionen vor Node.js 18.19.0setzen Sie autotrace.nodejs.application_type auf module_v1:

    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.application_type=module_v1
    
  • Um zum Standardverhalten zurückzukehren oder die Konfigurationsoption vollständig zu entfernen, setzen Sie autotrace.nodejs.application_type auf commonjs:

    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.application_type=commonjs
    

Die vorherige Konfigurationsoption autotrace.nodejs.esm ist jetzt veraltet. Sie müssen zur neuen Konfigurationsoption autotrace.nodejs.application_typewechseln.

Fehlerbehebung

Wenn Sie die Instanziierung AutoTrace WebHook nicht sehen, die sich auf Ihre neuen Kubernetes -Ressourcen auswirkt, führen Sie die folgenden Schritte aus, um Fehler zu beheben:

Prüfen, ob Instana AutoTrace WebHook Anforderungen empfängt

Um zu überprüfen, ob der Instana AutoTrace WebHook 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 Instana AutoTrace WebHook 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 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 AutoTrace WebHook 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.