Add E2E test verifying OTEL tracing across Zenko services#2378
Conversation
Hello delthas,My role is to assist you with the merge of this Available options
Available commands
Status report is not available. |
Waiting for approvalThe following approvals are needed before I can proceed with the merge:
|
c362986 to
9a3a251
Compare
9a3a251 to
f32a16b
Compare
f32a16b to
a7b196c
Compare
Waiting for approvalThe following approvals are needed before I can proceed with the merge:
|
a7b196c to
c9ae52e
Compare
c9ae52e to
79d656d
Compare
francoisferrand
left a comment
There was a problem hiding this comment.
overall not sure where to stand here: there is a fundamental compromise: do we want to test the "production" case first and foremost (i.e. without tracing), or is it safe-enough to enable Otel all the time (i.e. not testing production anymore, which could hide crashes or introduce subtle delays...)
SylvainSenechal
left a comment
There was a problem hiding this comment.
side question, here the jaeger server will be killed at the end the ci run, but would it be possible to have the traces data retained, so that maybe we could export these traces data in the artifact, and spin up a server to explore them with a ui ?
79d656d to
648091c
Compare
8f05574 to
5160774
Compare
|
Moved to a ratio of 0% (no traces, but enabled); and injecting a forcefully enabled trace using a This should bring no performance overhead, no overlay reconfiguration, and nicely isolate our test trace. |
- Deploy Jaeger all-in-one (memory-only, OTLP-enabled) in the kind CI cluster alongside existing dependencies - Patch the Zenko CR with `spec.otel` (enabled, sampling ratio 1.0) so every request is traced during CI — also acts as a smoke test that OTEL doesn't break existing @premerge tests - Add a new @premerge CTST scenario that puts an S3 object and then polls the Jaeger query API to assert a trace exists with spans from both cloudserver and vault Issue: ZENKO-5258
5160774 to
4a072e5
Compare
Summary
1.76.0)in the kind CI cluster alongside existing dependencies (Keycloak,
Prometheus, etc.)
spec.tracing(enabled, sampling ratio1.0)so every request is traced during CI — this also acts as a smoke test
that OTEL doesn't break existing
@PreMergetests@PreMergeCTST scenario that puts an S3 object and thenpolls the Jaeger query API to assert a trace exists with spans from
both connector-cloudserver and connector-vault (matching the
OTEL_SERVICE_NAMEvalues emitted by the operator)What changed
install-kind-dependencies.shjaegertracing/all-in-one:1.76.0)configure-e2e-ctst.shkubectl patch zenkowithspec.tracing, wait for cloudserver + vault rolloutsetup-e2e-env.shJaegerQueryEndpointin world paramsworld/Zenko.tsJaegerQueryEndpointadded toZenkoWorldParametersfeatures/otel-tracing.feature@PreMergescenariosteps/otel-tracing.tsWhy
Parent ticket OS-1072
tracks adding OpenTelemetry tracing across the Zenko stack. This PR
adds CI coverage to verify that traces actually propagate end-to-end
(cloudserver → vault) once tracing is enabled on the CR.
Dependencies
Requires zenko-operator PR #607 (ZKOP-539)
to be merged and the bundled operator version bumped in
solution/deps.yaml— it adds thespec.tracingCRD field andpropagates
ENABLE_OTEL/OTEL_*env vars to the manageddeployments. Without it, the
kubectl patchhere will be rejectedas an unknown field.
Issue: ZENKO-5258