feat(k8s): make the OTLP trace endpoint a chart value (closes #186) (#187)
CI / k8s (push) Successful in 12s
CI / lint (push) Successful in 1m50s
CI / build (push) Successful in 1m25s
CI / docs (push) Successful in 52s
CI / unit (push) Successful in 1m36s
CI / frontend (push) Successful in 2m27s
Deploy to Talos / deploy (push) Successful in 2m31s
CI / mutation (push) Successful in 5m1s
CI / verify-stack (push) Successful in 10m31s

closes #186

- New `otelEndpoint` value (default `http://tempo:4317`, unchanged behaviour), rendered into the `otel` env group via `tpl`.
- `deploy.yaml` passes `--set otelEndpoint=$OTEL_ENDPOINT` only when the repo variable is set.

Verified: `helm template` renders the default, and with `--set otelEndpoint=http://tempo.monitoring.svc:4317` it renders that override. No new dependency, no ADR needed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)Reviewed-on: #187
This commit was merged in pull request #187.
This commit is contained in:
not
2026-09-28 13:47:47 +00:00
parent b444e0c680
commit eba1381ef2
2 changed files with 14 additions and 4 deletions
+4 -1
View File
@@ -34,6 +34,9 @@ jobs:
# `true` fills in the medewerker OTP step for the public demo (chart value
# demo.otpAutofill). The fixture secret is committed: demo only.
OTP_AUTOFILL: ${{ vars.OTP_AUTOFILL }}
# Tempo for the services' traces, e.g. http://tempo.monitoring.svc:4317 (the
# cluster monitoring stack, Infra repo). Empty = the chart default.
OTEL_ENDPOINT: ${{ vars.OTEL_ENDPOINT }}
steps:
- uses: https://github.com/actions/checkout@v4
@@ -100,7 +103,7 @@ jobs:
make k8s-reseed \
TALOS_HOST=${TALOS_HOST:-localhost} \
K8S_REGISTRY=${TALOS_VM_IP:-192.168.122.173}:30500 \
K8S_SET="${KEYCLOAK_URL:+--set keycloakUrl=$KEYCLOAK_URL} --set demo.otpAutofill=${OTP_AUTOFILL:-false}"
K8S_SET="${KEYCLOAK_URL:+--set keycloakUrl=$KEYCLOAK_URL} --set demo.otpAutofill=${OTP_AUTOFILL:-false}${OTEL_ENDPOINT:+ --set otelEndpoint=$OTEL_ENDPOINT}"
# `dev` is a mutable tag and helm sees an unchanged pod template, so the
# new images only land on a restart (pullPolicy is already Always).
+10 -3
View File
@@ -30,6 +30,12 @@ host: 192.168.122.100
# portals' authority (runbook, "Publishing through the labs Caddy").
keycloakUrl: ""
# Where the .NET services send traces (OTLP gRPC). The default is the chart's own
# `tempo` workload (off by default, like compose). Point it at a Tempo outside the
# release, e.g. the cluster monitoring stack's http://tempo.monitoring.svc:4317 —
# with no Tempo at all, every export fails and is counted as a .NET exception.
otelEndpoint: http://tempo:4317
demo:
# Fill in and submit the medewerker OTP step from the fixture secret, so a public
# demo shows MFA enforced without an authenticator: makes the big-demo theme
@@ -160,10 +166,11 @@ envGroups:
NOTIFICATIONS_DISABLED: "false"
RUN_SETUP_CONFIG: "true"
# Traces for the .NET services. Always set, like compose: the exporter fails
# harmlessly when Tempo is absent (services/*/Program.cs).
# Traces for the .NET services. Always set, like compose. With no Tempo behind
# `otelEndpoint` the exporter fails quietly but throws on every batch, which
# shows up as HttpRequestException/SocketException in dotnet_exceptions_total.
otel:
OTEL_EXPORTER_OTLP_ENDPOINT: http://tempo:4317
OTEL_EXPORTER_OTLP_ENDPOINT: '{{ .Values.otelEndpoint }}'
OTEL_EXPORTER_OTLP_PROTOCOL: grpc
# ── Workloads ──────────────────────────────────────────────────────────────────