Skip to content

Add Envoy Gateway (Gateway API) ingress support for Kafka external listeners#187

Open
amuraru wants to merge 1 commit into
masterfrom
istio
Open

Add Envoy Gateway (Gateway API) ingress support for Kafka external listeners#187
amuraru wants to merge 1 commit into
masterfrom
istio

Conversation

@amuraru

@amuraru amuraru commented Sep 27, 2025

Copy link
Copy Markdown

What

Adds a new Envoy Gateway ingress controller for exposing Kafka external
listeners, built on the Kubernetes Gateway API (https://gateway.envoyproxy.io/).
Enable it per external listener with spec.ingressController: envoygateway and
configure it via the new envoyGatewayConfig field. The ingressController
enum is now envoy;contour;envoygateway.

Why

The previous istio-based ingress relied on banzaicloud/istio-operator, which is
EOL/unmaintained (already removed on master). Envoy Gateway is a CNCF-backed,
actively maintained Gateway API implementation.

Changes

  • New envoygateway resource reconciler (pkg/resources/envoygateway):
    generates Gateway + TCPRoute, with optional TLS.
  • New EnvoyGatewayIngressConfig API type + ingressController: envoygateway.
  • Sample manifests for ZooKeeper and KRaft modes.

Testing

  • Unit: Gateway/TCPRoute/TLS generation, controller reconcile (envtest),
    webhook port-collision validation.
  • e2e: full install → produce/consume → JMX → uninstall with Envoy Gateway
    ingress in both ZooKeeper and KRaft modes (Envoy Gateway Helm chart v1.5.4).

@amuraru amuraru force-pushed the istio branch 3 times, most recently from 0b05088 to e520182 Compare September 27, 2025 09:37
Comment thread pkg/resources/kafka/kafka.go Fixed
@amuraru amuraru force-pushed the istio branch 2 times, most recently from ad885c0 to 11ccd59 Compare September 27, 2025 16:38
@amuraru amuraru changed the title use upstream istio operator and not deprecated banzaicloud istio oper… WIP: Use upstream istio operator and not deprecated banzaicloud istio oper… Sep 28, 2025
@amuraru amuraru marked this pull request as draft September 28, 2025 10:39
@amuraru amuraru force-pushed the master branch 3 times, most recently from 04d55a5 to 432ff85 Compare September 29, 2025 07:02
@amuraru amuraru force-pushed the master branch 2 times, most recently from 939d351 to b1caf52 Compare September 29, 2025 11:00
@amuraru amuraru force-pushed the istio branch 14 times, most recently from 4c7d095 to 1fa2195 Compare October 3, 2025 18:26
@amuraru amuraru force-pushed the master branch 2 times, most recently from 4150c01 to 994e42a Compare November 3, 2025 07:48
@amuraru amuraru force-pushed the istio branch 13 times, most recently from b5fd1af to ba9ea8f Compare November 4, 2025 06:03
@amuraru amuraru changed the title WIP: Use upstream istio operator and not deprecated banzaicloud istio oper… Replace legacy banzaicloud istio ingress with the new envoy gateway Nov 4, 2025
@amuraru amuraru force-pushed the istio branch 3 times, most recently from bb3e82c to f17e79e Compare November 4, 2025 14:06
@amuraru amuraru marked this pull request as ready for review November 4, 2025 14:28
@amuraru amuraru force-pushed the istio branch 6 times, most recently from c7133f0 to 99522b7 Compare November 7, 2025 19:39
…steners

Adds a new "envoygateway" ingress controller for exposing Kafka external
listeners, built on the Kubernetes Gateway API (https://gateway.envoyproxy.io/).
Enable it per external listener with `spec.ingressController: envoygateway` and
configure it via the new `envoyGatewayConfig` field. The `ingressController`
enum is now `envoy;contour;envoygateway`.

The previous istio-based ingress relied on banzaicloud/istio-operator, which is
EOL/unmaintained (already removed on master); Envoy Gateway is a CNCF-backed,
actively maintained Gateway API implementation.

Changes:
- New envoygateway resource reconciler (pkg/resources/envoygateway): generates
  Gateway + TCPRoute, with optional TLS.
- New EnvoyGatewayIngressConfig API type + `ingressController: envoygateway`.
- Refactor external listener status handling into a per-listener dispatcher
  (createListenerStatuses) so ingress types plug in cleanly.
- Sample manifests for ZooKeeper and KRaft modes.
- Additional unit tests (envoy resource, k8sutil, nodeport external access) and
  e2e coverage (install/produce/consume/uninstall with Envoy Gateway ingress in
  both ZooKeeper and KRaft modes, Envoy Gateway Helm chart v1.5.4).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants