As a platform engineer managing observability infrastructure,
I want to define telemetry configuration once in an MCPTelemetryConfig resource,
so that all MCP servers share consistent collector endpoints and sampling settings without duplication.
Size: L
Dependencies: None
Labels: operator, api, telemetry
Context
Telemetry configurations (collector endpoint, sampling rate, headers) are duplicated across MCPServer resources. This story creates a dedicated MCPTelemetryConfig CRD with a nested structure matching RFC THV-0023.
The CRD uses nested openTelemetry and prometheus sub-objects (not a flat inline embedding of telemetry.Config), with a conversion layer that maps the nested CRD fields to the flat telemetry.Config at runtime.
Target Structure
spec:
openTelemetry:
enabled: true
endpoint: otel-collector:4318
headers: {}
sensitiveHeaders: []
resourceAttributes: {}
tracing:
enabled: true
samplingRate: "0.1"
metrics:
enabled: true
prometheus:
enabled: true
status:
referencingWorkloads:
- kind: MCPServer
name: server-a
configHash: "sha256:..."
conditions:
- type: Valid
status: "True"
Acceptance Criteria
As a platform engineer managing observability infrastructure,
I want to define telemetry configuration once in an
MCPTelemetryConfigresource,so that all MCP servers share consistent collector endpoints and sampling settings without duplication.
Size: L
Dependencies: None
Labels:
operator,api,telemetryContext
Telemetry configurations (collector endpoint, sampling rate, headers) are duplicated across MCPServer resources. This story creates a dedicated
MCPTelemetryConfigCRD with a nested structure matching RFC THV-0023.The CRD uses nested
openTelemetryandprometheussub-objects (not a flat inline embedding oftelemetry.Config), with a conversion layer that maps the nested CRD fields to the flattelemetry.Configat runtime.Target Structure
Acceptance Criteria
MCPTelemetryConfigCRD uses nestedopenTelemetry/prometheusstructure per RFC THV-0023serviceNameexcluded from shared config (per-server viaMCPTelemetryConfigReference)Headersusesmap[string]stringsensitiveHeadersfield supportsSecretKeyReffor credential headersresourceAttributesreplacescustomAttributesfor shared OTel resource attributesobservedGeneration,configHash,referencingWorkloads(structured), andconditionsoperator-crdsHelm charttelemetry.Configexamples/operator/mcp-servers/mcpserver_fetch_otel.yaml