Skip to content

feat: Add OpenShift Route support for Listeners - #435

Draft
marc-merino wants to merge 1 commit into
stackabletech:mainfrom
marc-merino:knit/openshift-route-listeners
Draft

marc-merino wants to merge 1 commit into
stackabletech:mainfrom
marc-merino:knit/openshift-route-listeners

Conversation

@marc-merino

@marc-merino marc-merino commented Oct 2, 2026 •

Copy link
Copy Markdown

Draft — blocked on stackabletech/operator-rs (linked below). Cargo.toml temporarily patches stackable-operator to the contributor branch. Once operator-rs is merged and released, this will be bumped to the release tag and the [patch] removed.

Description

Closes #303.

Adds the OpenShiftRoute ListenerClass service type. For a Listener using such a class, the operator:

  • Creates the usual Service as ClusterIP, plus a route.openshift.io/v1 Route with the same name, labels and owner reference. The labels matter because they also decide which router shards will accept the Route.
  • Exposes one TCP port. It is chosen with openshiftRoute.port, or picked automatically when the Listener has only one port.
  • Defaults to TLS passthrough on port 443. tls: None exposes plain HTTP on port 80.
  • Publishes only the hostnames the Route has been accepted for (its Admitted status condition) into Listener.status.ingressAddresses as Hostname addresses. Hostnames that are not yet accepted, or were rejected, may be claimed by other Routes and are not published.
  • Deletes its own Route when the ListenerClass switches to another service type. It refuses to overwrite or delete Routes owned by anything else, and deletes are guarded by UID.

The Route API is detected once at startup. On clusters without it, nothing changes: no Route watch and no Route API calls. A Listener whose class uses OpenShiftRoute reports an error saying Routes aren't supported on the cluster.

Routes are managed outside ClusterResources, because that requires every managed resource type to exist on every cluster.

Definition of Done Checklist

Author

  • Changes are OpenShift compatible
  • CRD changes approved (CRD change is in operator-rs)
  • CRD documentation for all fields
  • Helm chart can be installed and deployed operator works
  • Integration tests passed — new openshift-route kuttl test (OpenShift dimension only); not yet run on an OpenShift cluster
  • Changes need to be "offline" compatible
  • Links to generated (nightly) docs added
  • Release note snippet added

Reviewer

  • Code contains useful comments
  • Code contains useful logging statements
  • (Integration-)Test cases added
  • Documentation added or updated
  • Changelog updated
  • Cargo.toml only contains references to git tags (not specific commits or branches) — blocked on the operator-rs release

Knit Bundle

View bundle

This PR is part of Knit bundle openshift-route-listeners.

See the other review objects in this bundle:

Blocked on operator-rs #1291

Bundle id: openshift-route-listeners
Bundle title: Add OpenShift Route support to Listeners

@stackable-cla

stackable-cla Bot commented Oct 2, 2026 •

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

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.

OpenShift Route backend

1 participant