[CONTP-1782] Add appProtocol to OTLP gRPC services#3208
Merged
Conversation
|
wdhif
approved these changes
Jul 1, 2026
mackjmr
approved these changes
Jul 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Adds
appProtocol: kubernetes.io/h2cto Service ports that expose OTLP/gRPC traffic:This intentionally leaves non-gRPC and OTLP/HTTP service ports unchanged.
Motivation
Fixes #2145.
Some gateways and service mesh integrations use
ServicePort.appProtocolas a hint to configure upstream protocol handling. Without an HTTP/2 hint, OTLP/gRPC traffic can be proxied as HTTP/1.1 and fail with protocol errors.This PR uses
kubernetes.io/h2cinstead of kgateway'shttp2alias because it is the Kubernetes-definedappProtocolvalue for cleartext HTTP/2. OTLP/gRPC uses gRPC over HTTP/2, and these service ports are cleartext in-cluster endpoints, sokubernetes.io/h2cis both more explicit and more portable across Kubernetes-aware consumers.References:
appProtocoldocs: https://kubernetes.io/docs/concepts/services-networking/service/#application-protocolAdditional Notes
appProtocolis only a protocol hint. It does not enforce traffic at the Kubernetes Service layer and does not change kube-proxy forwarding behavior.Minimum Agent Versions
Are there minimum versions of the Datadog Agent and/or Cluster Agent required?
Describe your test plan
Deploy DDA with gateway and otelAgent enabled:
Assert the Agent and gateway k8s services (note the service names might be different as they depend on your DatadogAgent name and override) expose the appProtocol
kubernetes.io/h2cfor the gRPC port 4317:Checklist
bug,enhancement,refactoring,documentation,tooling, and/ordependenciesqa/skip-qalabel