Skip to content

Commit a9ad15f

Browse files
feat!: Add ListenerClass.spec.serviceOverrides field (#1142)
* feat!: Add `ListenerClass.spec.serviceOverrides` field * changelog * Update crates/stackable-operator/CHANGELOG.md Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> --------- Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com>
1 parent a49088c commit a9ad15f

5 files changed

Lines changed: 40 additions & 6 deletions

File tree

crates/stackable-operator/CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file.
44

55
## [Unreleased]
66

7+
### Added
8+
9+
- Add `serviceOverrides` field of type `Service` to `ListenerClass.spec.serviceOverrides` ([#1142]).
10+
11+
### Changed
12+
13+
- BREAKING: `ListenerClassSpec` no longer implements `Eq` ([#1142]).
14+
15+
[#1142]: https://github.com/stackabletech/operator-rs/pull/1142
16+
717
## [0.103.0] - 2026-01-16
818

919
### Changed

crates/stackable-operator/crds/DummyCluster.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ spec:
407407
default: {}
408408
description: |-
409409
In the `podOverrides` property you can define a
410-
[PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core)
410+
[PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podtemplatespec-v1-core)
411411
to override any property that can be set on a Kubernetes Pod.
412412
Read the
413413
[Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides)
@@ -695,7 +695,7 @@ spec:
695695
default: {}
696696
description: |-
697697
In the `podOverrides` property you can define a
698-
[PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core)
698+
[PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podtemplatespec-v1-core)
699699
to override any property that can be set on a Kubernetes Pod.
700700
Read the
701701
[Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides)

crates/stackable-operator/crds/ListenerClass.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,20 @@ spec:
8989
- Local
9090
nullable: true
9191
type: string
92+
serviceOverrides:
93+
default:
94+
apiVersion: v1
95+
kind: Service
96+
metadata: {}
97+
description: |-
98+
In the `serviceOverrides` property you can define a
99+
[Service](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#service-v1-core)
100+
to override any property that can be set on a Kubernetes Service.
101+
102+
This mechanism is similar to the `podOverrides`, which are documented in the
103+
[Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides).
104+
type: object
105+
x-kubernetes-preserve-unknown-fields: true
92106
serviceType:
93107
description: The method used to access the services.
94108
enum:

crates/stackable-operator/src/crd/listener/class/mod.rs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,26 @@
77
88
use std::collections::BTreeMap;
99

10-
#[cfg(doc)]
1110
use k8s_openapi::api::core::v1::Service;
1211
use kube::CustomResource;
1312
use schemars::JsonSchema;
1413
use serde::{Deserialize, Serialize};
1514
use stackable_versioned::versioned;
1615

17-
use crate::crd::listener::core::v1alpha1 as core_v1alpha1;
1816
#[cfg(doc)]
1917
use crate::crd::listener::listeners::v1alpha1::Listener;
18+
use crate::{crd::listener::core::v1alpha1 as core_v1alpha1, utils::crds::raw_object_schema};
2019

2120
mod v1alpha1_impl;
2221

2322
#[versioned(version(name = "v1alpha1"))]
2423
pub mod versioned {
24+
2525
/// Defines a policy for how [Listeners](DOCS_BASE_URL_PLACEHOLDER/listener-operator/listener) should be exposed.
2626
/// Read the [ListenerClass documentation](DOCS_BASE_URL_PLACEHOLDER/listener-operator/listenerclass)
2727
/// for more information.
2828
#[versioned(crd(group = "listeners.stackable.tech"))]
29-
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq, Eq)]
29+
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
3030
#[serde(rename_all = "camelCase")]
3131
pub struct ListenerClassSpec {
3232
pub service_type: core_v1alpha1::ServiceType,
@@ -93,5 +93,15 @@ pub mod versioned {
9393
/// Because of this we don't enable pinning by default to support all environments.
9494
#[serde(default)]
9595
pub pinned_node_ports: bool,
96+
97+
/// In the `serviceOverrides` property you can define a
98+
/// [Service](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#service-v1-core)
99+
/// to override any property that can be set on a Kubernetes Service.
100+
///
101+
/// This mechanism is similar to the `podOverrides`, which are documented in the
102+
/// [Pod overrides documentation](DOCS_BASE_URL_PLACEHOLDER/concepts/overrides#pod-overrides).
103+
#[serde(default)]
104+
#[schemars(schema_with = "raw_object_schema")]
105+
pub service_overrides: Service,
96106
}
97107
}

crates/stackable-operator/src/role_utils.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ pub struct CommonConfiguration<T, ProductSpecificCommonConfig> {
152152
pub cli_overrides: BTreeMap<String, String>,
153153

154154
/// In the `podOverrides` property you can define a
155-
/// [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core)
155+
/// [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podtemplatespec-v1-core)
156156
/// to override any property that can be set on a Kubernetes Pod.
157157
/// Read the
158158
/// [Pod overrides documentation](DOCS_BASE_URL_PLACEHOLDER/concepts/overrides#pod-overrides)

0 commit comments

Comments
 (0)