-
Notifications
You must be signed in to change notification settings - Fork 148
Description
Describe the use case:
In Kubernetes environments using service mesh (e.g., Istio Ambient Mesh), protocol detection for service ports is critical for enabling advanced traffic management, security, and observability features. The gRPC port of the Zeebe Gateway is a particular case were explicitly specifying the protocol in the Service definition allows service mesh and other tools to correctly identify HTTP/2 and optimize traffic handling.
Describe the enhancement/feature:
Add the appProtocol field to the ports section of all relevant Service resources in the Camunda Platform Helm chart. For the Zeebe Gateway gRPC port, use:
appProtocol: kubernetes.io/h2cfor cleartext HTTP/2 (gRPC without TLS termination)- explicitly mentioned in Kubernetes and Linderd docs
- should work in Istio too according to https://github.com/istio/istio/blob/4a3e1b75d2d1759a247ef0a65d289b2fc86d0418/pkg/config/kube/conversion.go#L63
appProtocol: httpsif the gateway terminates TLS (gRPC with TLS)
Example:
ports:
- name: grpc
port: 26500
targetPort: 26500
protocol: TCP
appProtocol: kubernetes.io/h2c # or "https" if TLS termination is enabledIn my example on using Istio Ambient Mesh with gRPC Load Balancing for Zeebe Gateway I had to create an additional service to set the correct protocol.
References:
- https://kubernetes.io/docs/concepts/services-networking/service/#application-protocol
- https://istio.io/latest/docs/ops/configuration/traffic-management/protocol-selection/#explicit-protocol-selection
- https://linkerd.io/2-edge/features/protocol-detection/
- Set appProtocol for service resources (compatibility with service mesh) confluentinc/confluent-kubernetes-examples#186