Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file.

- Add `/ready` endpoint to the operator Deployment, which reports the CRD installation status ([#434]).
- Add startup probe to the operator Deployment ([#434]).
- Add the `OpenShiftRoute` ListenerClass service type, which exposes Listeners through OpenShift Routes.

### Changed

Expand Down
19 changes: 10 additions & 9 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,6 @@ tracing = "0.1.40"
walkdir = "2.5.0"

[patch."https://github.com/stackabletech/operator-rs.git"]
stackable-operator = { git = "https://github.com/marc-merino/operator-rs.git", branch = "knit/openshift-route-listeners" }
# stackable-operator = { path = "../operator-rs/crates/stackable-operator" }
# stackable-operator = { git = "https://github.com/stackabletech//operator-rs.git", branch = "main" }
11 changes: 11 additions & 0 deletions deploy/helm/listener-operator/templates/roles.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,17 @@ rules:
- create
- patch
- delete
- apiGroups:
- route.openshift.io
resources:
- routes
verbs:
- get
- list
- watch
- create
- patch
- delete
# PersistentVolumes are watched to retrigger Listener reconciliation on node affinity
# changes. The CSI node driver patches PV labels via Server-Side Apply to associate PVs
# with their Listener. The external-provisioner sidecar creates and deletes PVs for PVC
Expand Down
7 changes: 7 additions & 0 deletions docs/modules/listener-operator/pages/listenerclass.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,13 @@ If a pinned node becomes unavailable, the service may become unreachable until t
* **Requirements**: Kubernetes cluster must have a LoadBalancer controller
* **Cost**: Cloud providers typically charge for load balancer usage

[#servicetype-openshift-route]
==== OpenShiftRoute
Exposes a single Listener port through an OpenShift Route, using a hostname assigned by OpenShift.
Set `openshiftRoute.port` to choose the port if the Listener has more than one.
By default (`openshiftRoute.tls: Passthrough`), TLS traffic is forwarded to the application on port 443; `tls: None` forwards plain HTTP on port 80.
Only hostnames that the Route has been admitted for are published.

=== Advanced Configuration

[#servicetype-loadbalancer-class]
Expand Down
17 changes: 17 additions & 0 deletions extra/crds.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,22 @@ spec:
Ignored unless serviceType is LoadBalancer.
nullable: true
type: string
openshiftRoute:
description: Ignored unless `serviceType` is `OpenShiftRoute`.
nullable: true
properties:
port:
description: Required when the Listener has more than one port.
nullable: true
type: string
tls:
default: Passthrough
description: '`Passthrough` (default) uses port 443; `None` serves plain HTTP on port 80.'
enum:
- Passthrough
- None
type: string
type: object
pinnedNodePorts:
default: false
description: |-
Expand Down Expand Up @@ -106,6 +122,7 @@ spec:
- NodePort
- LoadBalancer
- ClusterIP
- OpenShiftRoute
type: string
required:
- serviceType
Expand Down
1 change: 1 addition & 0 deletions rust/operator-binary/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ tonic.workspace = true
tonic-reflection.workspace = true
anyhow.workspace = true
serde.workspace = true
serde_json.workspace = true
serde_yaml.workspace = true
snafu.workspace = true
strum.workspace = true
Expand Down
Loading