Skip to content

Commit 3693c43

Browse files
authored
1 parent 7e0d1d0 commit 3693c43

9 files changed

Lines changed: 654 additions & 9 deletions

File tree

.github/workflows/otel-integration-e2e-test.yml

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
- name: Install Go
1919
uses: actions/setup-go@v6
2020
with:
21-
go-version: 1.23.x
21+
go-version: 1.25.x
2222
- name: Setup cluster
2323
uses: ./.github/actions/setup
2424
with:
@@ -58,7 +58,37 @@ jobs:
5858
run: |
5959
cd ./otel-integration/k8s-helm/e2e-test/
6060
go clean -testcache
61-
go test -v -run='^TestE2E.*' -skip='^TestE2E_TargetAllocator_ServiceMonitorMetrics$' $(go list ./... | rg -v '/supervisor$')
61+
go test -v -run='^TestE2E.*' -skip='^(TestE2E_TargetAllocator_ServiceMonitorMetrics|TestE2E_InstrumentationWebhookNoCRDs)$' $(go list ./... | rg -v '/supervisor$')
62+
- name: Pods logs
63+
if: failure()
64+
run: |
65+
for pod in $(kubectl get pods -l "app.kubernetes.io/instance=otel-integration-agent-e2e" -o jsonpath='{.items[*].metadata.name}'); do
66+
echo "===== Last 25 log lines for pod: $pod ====="
67+
kubectl logs --tail=25 $pod
68+
echo
69+
done
70+
71+
otel-integration-instrumentation-webhook-test:
72+
runs-on: ubuntu-latest
73+
steps:
74+
- name: Checkout
75+
uses: actions/checkout@v6
76+
with:
77+
fetch-depth: 0
78+
- name: Install Go
79+
uses: actions/setup-go@v6
80+
with:
81+
go-version: 1.25.x
82+
- name: Setup cluster
83+
uses: ./.github/actions/setup
84+
with:
85+
create-kind-cluster: "true"
86+
cluster-name: "otel-integration-agent-e2e"
87+
- name: Run Instrumentation Webhook E2E test
88+
run: |
89+
cd ./otel-integration/k8s-helm/e2e-test/
90+
chmod +x ./run-all.sh
91+
./run-all.sh --test TestE2E_InstrumentationWebhookNoCRDs
6292
- name: Pods logs
6393
if: failure()
6494
run: |
@@ -78,7 +108,7 @@ jobs:
78108
- name: Install Go
79109
uses: actions/setup-go@v6
80110
with:
81-
go-version: 1.23.x
111+
go-version: 1.25.x
82112
- name: Setup cluster
83113
uses: ./.github/actions/setup
84114
with:
@@ -108,7 +138,7 @@ jobs:
108138
- name: Install Go
109139
uses: actions/setup-go@v6
110140
with:
111-
go-version: 1.23.x
141+
go-version: 1.25.x
112142
- name: Setup cluster
113143
uses: ./.github/actions/setup
114144
with:
@@ -188,7 +218,7 @@ jobs:
188218
- name: Install Go
189219
uses: actions/setup-go@v6
190220
with:
191-
go-version: 1.23.x
221+
go-version: 1.25.x
192222
- name: Setup cluster
193223
uses: ./.github/actions/setup
194224
with:
@@ -250,7 +280,7 @@ jobs:
250280
- name: Install Go
251281
uses: actions/setup-go@v6
252282
with:
253-
go-version: 1.23.x
283+
go-version: 1.25.x
254284
- name: Setup cluster
255285
uses: ./.github/actions/setup
256286
with:
@@ -310,7 +340,7 @@ jobs:
310340
- name: Install Go
311341
uses: actions/setup-go@v6
312342
with:
313-
go-version: 1.23.x
343+
go-version: 1.25.x
314344
- name: Setup cluster
315345
uses: ./.github/actions/setup
316346
with:

.mdox.validate.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,8 @@ validators:
1313
# Ignore links that includes 'assets' because the generated content will resolve them correctly.
1414
- regex: '.+/assets/.+'
1515
type: ignore
16+
# Ignore remote docs pages that reject or drop validator requests.
17+
- regex: '^https:\/\/dev\.mysql\.com\/doc\/refman\/8\.0\/en\/server-logs\.html$'
18+
type: ignore
19+
- regex: '^https:\/\/opentelemetry\.io\/docs\/collector\/configuration\/$'
20+
type: ignore

otel-integration/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
### v0.0.320 / 2026-06-30
1313

1414
- [Chore] Bump chart dependency to opentelemetry-collector 0.134.1
15+
- [Feat] Add optional `opentelemetry-autoinstrumentation` support for Java, Python, and .NET workload auto-instrumentation.
1516

1617
#### Changes from opentelemetry-collector 0.134.1:
1718
- [Fix] Use the ECS Coralogix distribution header for all ECS signals and centralize the header mapping in a shared template helper.

otel-integration/k8s-helm/Chart.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ dependencies:
1414
version: "0.134.2"
1515
repository: https://cgx.jfrog.io/artifactory/coralogix-charts-virtual
1616
condition: opentelemetry-agent.enabled
17+
- name: opentelemetry-operator
18+
alias: opentelemetry-autoinstrumentation
19+
version: "0.115.1"
20+
repository: https://open-telemetry.github.io/opentelemetry-helm-charts
21+
condition: opentelemetry-autoinstrumentation.enabled
1722
- name: opentelemetry-collector
1823
alias: opentelemetry-agent-windows
1924
version: "0.134.2"

otel-integration/k8s-helm/README.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,31 @@ helm upgrade --install otel-coralogix-integration coralogix-charts-virtual/otel-
188188
--render-subchart-notes -f values-crd-override.yaml --set global.clusterName=<cluster_name> --set global.domain=<domain>
189189
```
190190

191+
### OpenTelemetry AutoInstrumentation without Instrumentation CRDs
192+
193+
The chart can deploy an OpenTelemetry Operator webhook that injects OpenTelemetry auto-instrumentation into annotated application pods without requiring `Instrumentation` CRDs. This mode uses one static instrumentation configuration from Helm values and sends traces to the `opentelemetry-agent` DaemonSet on the same node as the application pod.
194+
195+
Enable it with:
196+
197+
```yaml
198+
opentelemetry-autoinstrumentation:
199+
enabled: true
200+
```
201+
202+
Supported annotations:
203+
204+
```yaml
205+
instrumentation.opentelemetry.io/inject-java: "true"
206+
instrumentation.opentelemetry.io/inject-python: "true"
207+
instrumentation.opentelemetry.io/inject-dotnet: "true"
208+
```
209+
210+
Java and .NET use OTLP/gRPC to `http://$(OTEL_NODE_IP):4317`. Python uses OTLP HTTP/protobuf to `http://$(OTEL_NODE_IP):4318`.
211+
212+
> [!IMPORTANT]
213+
>
214+
> Do not enable `opentelemetry-autoinstrumentation` in a cluster that already has another OpenTelemetry Operator webhook installed, unless the webhook names and selectors are configured to avoid collisions.
215+
191216
### Troubleshooting
192217

193218
During installation, you may encounter warning messages about missing namespace rules (`get`, `list`, `watch`). This is a known issue in OpenTelemetry (see [issue #2685](https://github.com/open-telemetry/opentelemetry-operator/issues/2685)) and does not impact the successful installation of the chart.

0 commit comments

Comments
 (0)