Die von dir gepostete `Pod`-Definition zeigt, dass der **Instana Mutation Admission Webhook** den Pod automatisch verändert hat, um **Traces, Metriken und Logs** für Instana zu sammeln. Hier ist eine Aufschlüsselung, **was genau der Webhook tut und warum**:
---
## 🔧 **Was hat der Instana Mutating Admission Webhook geändert?**
### 1. **Init Container hinzugefügt: `instana-instrumentation-init`**
```yaml
initContainers:
- name: instana-instrumentation-init
image: icr.io/instana/instrumentation@sha256:...
```
✅ Lädt und kopiert die benötigten Instrumentierungsbibliotheken in ein Shared Volume (`/opt/instana/instrumentation`).
➡️ Das ermöglicht die Laufzeit-Instrumentierung ohne Änderungen am Containerimage.
---
### 2. **Shared Volume hinzugefügt: `instana-instrumentation-volume`**
```yaml
volumes:
- emptyDir: {}
name: instana-instrumentation-volume
```
✅ Wird vom Init-Container beschrieben und vom Hauptcontainer gelesen (→ für die Instana-Bibliotheken).
---
### 3. **VolumeMount im App-Container**
```yaml
volumeMounts:
- mountPath: /opt/instana/instrumentation
name: instana-instrumentation-volume
```
✅ Der App-Container bekommt Zugriff auf die Injected Libraries.
---
### 4. **Environment-Variablen im App-Container**
```yaml
env:
- name: LD_PRELOAD
value: /opt/instana/instrumentation/libinstana_init/libinstana_init.so
- name: NODE_OPTIONS
value: --require /opt/instana/instrumentation/nodejs/...
- name: INSTANA_AGENT_HOST
valueFrom:
fieldRef:
fieldPath: status.hostIP
```
✅ Diese Variablen aktivieren die automatische **Sprach-Runtime-Instrumentierung** (z. B. C/C++, Node.js).
➡️ `LD_PRELOAD` wird z. B. in C/C++ genutzt, um Funktionen wie `malloc` zu intercepten.
---
### 5. **Instana-spezifische Labels**
```yaml
labels:
instana-autotrace-applied: "true"
instana-autotrace-transformation: DefaultDeploymentTransformation
instana-autotrace-version: 1.294.0
```
✅ Markieren, dass der Mutating Webhook Instana-Autotrace angewendet hat.
➡️ Nützlich für spätere Debugging-, Monitoring- oder Policy-Zwecke.
---
## 🧠 **Was bewirkt das konkret?**
- Automatische Traces (OpenTelemetry-kompatibel)
- Service-, API- und Infrastrukturmetriken
- Verbindung zur Instana Agent-Instanz via `INSTANA_AGENT_HOST`
- Zero-touch Observability ohne manuelle Codeanpassungen
---
## ✅ So kannst du das Verhalten weiter untersuchen
Falls du herausfinden willst, **welcher Webhook** konkret diese Mutation vorgenommen hat:
```bash
kubectl get mutatingwebhookconfiguration | grep instana
```
Dann Details anzeigen lassen:
```bash
kubectl get mutatingwebhookconfiguration <name> -o yaml
```
Dort findest du z. B.:
- Zielgruppen (`rules`)
- welche Ressourcen betroffen sind (`pods`)
- in welchen Namespaces das passiert
- wie die Webhook-URL oder das ClusterService aussieht