Skip to main content
Version: 8.9 (unreleased)

Configure the Helm chart with Gateway API

Use this guide to configure the Camunda 8 Helm chart with the Kubernetes Gateway API instead of a traditional Ingress controller.

The Gateway API provides a modern way to manage Ingress traffic in Kubernetes clusters. It improves on the Ingress API in the following ways:

  • Separates cluster operators, who manage Gateway resources, from application developers, who manage HTTPRoute resources.
  • Enables configuration of NGINX without relying on labels and annotations, which also helps limit permissions.
note

The Ingress-NGINX controller is planned to reach end of life in March 2026 (see the Kubernetes announcement on Ingress-NGINX retirement). We recommend planning a migration to the Gateway API where it fits your use case.

If you decide not to adopt the Gateway API, you can migrate to a different Ingress controller and continue using the Ingress API. This remains a supported approach.

Prerequisites

Ensure both are installed in your cluster.

  • Gateway API CRDs
  • A Gateway API controller

Gateway controllers

Just like Ingress Controllers, Gateway controllers need to be installed before a cluster can use the Gateway API. See the list of Gateway API implementations for details.

In testing, we use the NGINX Gateway Fabric.

Configure the Helm chart

ParameterTypeDefaultDescription
global.gateway.enabledbooleanfalseEnable creating resources for the Kubernetes Gateway API.
global.gateway.createGatewayResourcebooleantrueCreate the Gateway CustomResource. Do not enable if you already have a Gateway resource.
global.gateway.externalbooleantrueSet this to true if you are using the Gateway API but want to create the resources yourself.
global.gateway.classNamestring""Name of the GatewayClass resource that defines which Gateway controller operates on your Gateway and HTTPRoute resources.
global.gateway.labelsmap{}Labels to add to the Gateway and HTTPRoute resources.
global.gateway.annotationsmap{}Annotations to add to the Gateway and HTTPRoute resources.
global.gateway.hostnamestring""The external-facing URL hostname where Camunda will be installed.
global.gateway.tls.enabledbooleanfalseEnable TLS.
global.gateway.tls.secretNamestring""Name of the Kubernetes Secret resource containing a TLS cert
global.gateway.controllerNamespacestring""The namespace where the Gateway controller is installed.

Example configuration

global:
gateway:
createGatewayResource: true
enabled: true
className: nginx
hostname: "camunda.example.com"
tls:
enabled: true
secretName: camunda-platform
annotations:
external-dns.alpha.kubernetes.io/hostname: "{{ .Values.global.gateway.hostname }}"
external-dns.alpha.kubernetes.io/ttl: "60"