Skip to content

Conversation

@silvi-t
Copy link
Contributor

@silvi-t silvi-t commented Jan 5, 2026

Description

  • Add distributed tracing support for Kuadrant components (Authorino, Limitador, wasm-shim, and gateway)
  • Implement trace collection and verification infrastructure to validate end-to-end request flows across all Kuadrant services
  • Enhance tracing infrastructure with new helper methods for querying and analyzing trace spans
  • Enable observability configuration in Kuadrant CR with tracing options and custom request ID tracking

New Features

  • Istio Tracing Configuration (testsuite/istio/__init__.py): New module with IstioCR and Telemetry classes to configure Istio mesh-level tracing via Sail Operator
  • Component Tracing Support:
    • AuthorinoCR.set_tracing() and reset_tracing() methods in testsuite/kuadrant/authorino.py
    • LimitadorCR.set_tracing() and reset_tracing() methods in testsuite/kuadrant/limitador.py
  • Enhanced Observability Options (testsuite/kuadrant/__init__.py): New dataclasses ObservabilityTracingOptions, DataPlaneOptions, and DataPlaneDefaultLevels for granular observability configuration
  • KuadrantCR Observability: Updated set_observability() to accept both simple bool and full ObservabilityOptions configuration

Tests

  • New Test Suite (testsuite/tests/singlecluster/tracing/test_kuadrant_tracing.py):
    • test_trace_includes_all_kuadrant_services(): Validates traces include wasm-shim, authorino, limitador, and gateway services
    • test_spans_have_correct_policy_source_references(): Verifies auth and ratelimit spans reference correct AuthPolicy/RateLimitPolicy sources
    • test_send_reply_span_on_request_rejection(): Tests send_reply spans capture correct status codes for 401/429 rejections
  • Test Configuration (testsuite/tests/singlecluster/tracing/conftest.py): Module-scoped fixtures for configuring Authorino, Limitador, Istio, and Kuadrant observability with automatic cleanup

Refactoring

  • Tracing Client Improvements (testsuite/tracing/jaeger.py, testsuite/tracing/tempo.py):
    • Renamed search() to get_trace() with configurable tag_name parameter for better flexibility
    • Added get_spans(), get_spans_by_operation(), and get_tags_dict() helper methods to JaegerClient
    • Updated Tempo client to support new get_trace() signature
  • Authorino Tests: Updated test_tracing.py and test_tracing_tags.py to use new get_trace() method

Verification steps

poetry run pytest -vv  testsuite/tests/singlecluster/tracing/test_kuadrant_tracing.py
poetry run pytest -vv --standalone testsuite/tests/singlecluster/authorino/operator/tracing/test_tracing.py testsuite/tests/singlecluster/authorino/operator/tracing/test_tracing_tags.py

Signed-off-by: Silvia Tarabova <starabov@redhat.com>
Signed-off-by: Silvia Tarabova <starabov@redhat.com>
Signed-off-by: Silvia Tarabova <starabov@redhat.com>
@silvi-t silvi-t self-assigned this Jan 5, 2026
@github-project-automation github-project-automation bot moved this to 🆕 New in Kuadrant QE Jan 5, 2026
@silvi-t silvi-t moved this to Ready For Review in Kuadrant Jan 5, 2026
@silvi-t silvi-t moved this from 🆕 New to In Review in Kuadrant QE Jan 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Ready For Review
Status: In Review

Development

Successfully merging this pull request may close these issues.

1 participant