Local example
We recommend running the local-stack example from our Conduktor Reference Architecture repository. This stack creates a production-like local deployment of the entire Conduktor Platform using k3d as a local Kubernetes cluster. It includes:Helm values
Inspect the helm values for Gateway. The sensitive configurations are provided by reference to a Kubernetes Secret.In production, manage secrets with a dedicated secret manager. Don’t store them unencrypted in a git repository.
Configure listeners with Helm
The Gateway Helm chart defines listeners undergateway.listeners, which has two slots: internal and external. The chart turns them into GATEWAY_LISTENER_* environment variables and creates a Kubernetes Service for each. Don’t try to override these generated listener variables in gateway.env: the chart’s values take precedence.
- The
internallistener is enabled by default and exposed through aClusterIPService. - To expose Gateway outside the Kubernetes cluster, set
gateway.listeners.external.enable: true, setadvertisedHost, and choose the Service type withservice.external.type. - Keep the local ports of both listeners separate. The default internal range
9092-9098overlaps the default external port9092, so move one of them. - Ports use the
ADVERTISED:LOCALformat, for example"443:9092".
SASL_PLAINTEXT listener and an external SASL_SSL listener with SNI routing through an AWS Network Load Balancer:
values.yaml
bootstrap.kafka.example.com and *.kafka.example.com, and your DNS has to point both to the load balancer. With SNI routing, the external listener accepts exactly one port, such as 9092 or 443:9092: port ranges aren’t supported. Find out more about TLS through a network load balancer.
Run Gateway in high availability
The chart deploys two replicas by default. For production, we recommend settinggateway.replicas to 3 or more, so that Gateway keeps serving clients while one pod restarts or its node fails.
The chart prefers to schedule Gateway pods on different nodes but doesn’t require it. To spread pods across availability zones, set topologySpreadConstraints. The chart doesn’t create a PodDisruptionBudget: if your cluster drains nodes, add one with extraDeploy.
Run Gateway on OpenShift
Gateway runs under the defaultrestricted-v2 security context constraint (SCC), without a custom SCC. The Gateway image runs as a non-root user, so let OpenShift assign the user ID (UID):
- Don’t set
runAsUser,runAsGrouporfsGroupingateway.securityContextorpodSecurityContext. The chart leaves them empty by default. - Features that write local files, such as the disk cache of the large message handling Interceptor, need a writable volume.
- If you enable the debug sidecar, set
gateway.debugSidecar.securityContextto a security context without a fixed UID, such as{runAsNonRoot: true, allowPrivilegeEscalation: false, capabilities: {drop: [ALL]}}. When it’s empty, the sidecar runs with the fixed UID1001, whichrestricted-v2rejects. - Expose Kafka traffic with a
LoadBalancerService, as described in Configure listeners with Helm. OpenShift Routes carry HTTP and TLS on ports 80 and 443 by default: we recommend aLoadBalancerService for Gateway’s Kafka traffic.
Preserving client IP address
By default, the Kubernetes load balancer changes the client IP address to its own. See Capturing the client IP address for how to preserve it, usingexternalTrafficPolicy on the Gateway Helm chart or HAProxy Protocol.
Next steps
- Configure environment variables to tune Gateway for your environment
- Inspect the full Helm values.yaml
- Set up Interceptors to apply policies to your traffic
- Configure listener security to define how Kafka clients authenticate to Gateway
- Hands-on tutorial: Deploy Conduktor Gateway with Kubernetes and Host-based Routing with walkthrough video
Chart dependencies
All charts in this repository depend onbitnami-common .
Compatibility matrix
This compatibility matrix is a resource to help you find which versions of Conduktor Gateway work on which version of our Conduktor Gateway Helm chart.We recommend you use the version of Gateway that comes pre-configured with the Helm chart. You can adjust the version in your values property according to the supported Gateway version, if required. Notes column only lists chart-level changes. See Conduktor release notes to determine whether there are breaking changes within the artifacts.