From 02a78b382305db40cecf0248a3394acb75a69bb5 Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Thu, 13 Aug 2026 13:59:54 +0200 Subject: [PATCH 1/5] remove version from pvc listener labels, correct operator name --- .../src/controller/build/mod.rs | 2 +- .../controller/build/resource/statefulset.rs | 6 ++- rust/operator-binary/src/crd/mod.rs | 2 +- tests/templates/kuttl/smoke/30-assert.yaml.j2 | 48 +++++++++---------- 4 files changed, 31 insertions(+), 27 deletions(-) diff --git a/rust/operator-binary/src/controller/build/mod.rs b/rust/operator-binary/src/controller/build/mod.rs index aa735900..ad76660b 100644 --- a/rust/operator-binary/src/controller/build/mod.rs +++ b/rust/operator-binary/src/controller/build/mod.rs @@ -245,7 +245,7 @@ mod tests { ("app.kubernetes.io/instance", "my-hbase".to_string()), ( "app.kubernetes.io/managed-by", - "hbase.stackable.com_hbasecluster".to_string(), + "hbase.stackable.tech_hbasecluster".to_string(), ), ("app.kubernetes.io/name", "hbase".to_string()), ("app.kubernetes.io/role-group", "none".to_string()), diff --git a/rust/operator-binary/src/controller/build/resource/statefulset.rs b/rust/operator-binary/src/controller/build/resource/statefulset.rs index ce189e7a..16068353 100644 --- a/rust/operator-binary/src/controller/build/resource/statefulset.rs +++ b/rust/operator-binary/src/controller/build/resource/statefulset.rs @@ -299,8 +299,12 @@ pub fn build_rolegroup_statefulset( )); } + // Listener PVC labels should stay stable across upgrades and so should not + // include the version field (see HDFS for a similar pattern). + let unversioned_labels = cluster.role_group_selector(hbase_role, role_group_name); + let listener_pvc = - super::listener::build_listener_pvc(hbase_role, merged_config, &recommended_labels); + super::listener::build_listener_pvc(hbase_role, merged_config, &unversioned_labels); if let Some(listener_volume) = super::listener::build_listener_volume(hbase_role, merged_config, &recommended_labels) diff --git a/rust/operator-binary/src/crd/mod.rs b/rust/operator-binary/src/crd/mod.rs index b398c860..0535b077 100644 --- a/rust/operator-binary/src/crd/mod.rs +++ b/rust/operator-binary/src/crd/mod.rs @@ -44,7 +44,7 @@ pub mod security; pub const APP_NAME: &str = "hbase"; pub const FIELD_MANAGER: &str = "hbase-operator"; -pub const OPERATOR_NAME: &str = "hbase.stackable.com"; +pub const OPERATOR_NAME: &str = "hbase.stackable.tech"; // This constant is hard coded in hbase-entrypoint.sh // You need to change it there too. diff --git a/tests/templates/kuttl/smoke/30-assert.yaml.j2 b/tests/templates/kuttl/smoke/30-assert.yaml.j2 index 067fc721..120e46db 100644 --- a/tests/templates/kuttl/smoke/30-assert.yaml.j2 +++ b/tests/templates/kuttl/smoke/30-assert.yaml.j2 @@ -11,7 +11,7 @@ metadata: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -46,7 +46,7 @@ metadata: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default prometheus.io/scrape: "true" @@ -73,7 +73,7 @@ metadata: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -108,7 +108,7 @@ metadata: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default prometheus.io/scrape: "true" @@ -135,7 +135,7 @@ metadata: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -170,7 +170,7 @@ metadata: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default prometheus.io/scrape: "true" @@ -199,7 +199,7 @@ metadata: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default restarter.stackable.tech/enabled: "true" @@ -224,7 +224,7 @@ spec: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -406,7 +406,7 @@ spec: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -430,7 +430,7 @@ metadata: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default restarter.stackable.tech/enabled: "true" @@ -450,7 +450,7 @@ spec: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -641,7 +641,7 @@ spec: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -665,7 +665,7 @@ metadata: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default restarter.stackable.tech/enabled: "true" @@ -690,7 +690,7 @@ spec: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -871,7 +871,7 @@ spec: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -893,7 +893,7 @@ metadata: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: discovery stackable.tech/vendor: Stackable @@ -910,7 +910,7 @@ metadata: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -927,7 +927,7 @@ metadata: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -944,7 +944,7 @@ metadata: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -960,7 +960,7 @@ kind: ServiceAccount metadata: labels: app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase name: test-hbase-serviceaccount ownerReferences: @@ -974,7 +974,7 @@ kind: RoleBinding metadata: labels: app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase name: test-hbase-rolebinding ownerReferences: @@ -1023,7 +1023,7 @@ metadata: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -1056,7 +1056,7 @@ metadata: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -1089,7 +1089,7 @@ metadata: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.com_hbasecluster + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable From de3a191bef74449e501755f8003b98f7fbb7aad0 Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Thu, 13 Aug 2026 14:13:13 +0200 Subject: [PATCH 2/5] changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f772b97a..f29153fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,12 +18,17 @@ - Fix a longstanding problem of including empty `categories`, `shortNames` and `additionalPrinterColumns` in the CRDs, which could cause problems with GitOps tools (e.g. ArgoCD) reporting a diff in the custom resources. See [our internal issue](https://github.com/stackabletech/hdfs-operator/issues/626) and [the fix](https://github.com/kube-rs/kube/pull/2042) for details ([#792]). +- BREAKING: The app.kubernetes.io/managed-by label value changed from hbase.stackable.com_hbasecluster to + hbase.stackable.tech_hbasecluster, aligning with all other operators. +- BREAKING: The rest-server listener PVC template now carries only the unversioned selector labels. + Existing rest-server StatefulSets must be deleted once before the new operator can reconcile them ([#795]). [#776]: https://github.com/stackabletech/hbase-operator/pull/776 [#782]: https://github.com/stackabletech/hbase-operator/pull/782 [#786]: https://github.com/stackabletech/hbase-operator/pull/786 [#787]: https://github.com/stackabletech/hbase-operator/pull/787 [#792]: https://github.com/stackabletech/hbase-operator/pull/792 +[#795]: https://github.com/stackabletech/hbase-operator/pull/795 ## [26.7.0] - 2026-07-21 From 6a5165d8cff020b891fcc986f8b34c72fea50979 Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Thu, 13 Aug 2026 15:12:48 +0200 Subject: [PATCH 3/5] add vendor label manually, adjust test assert --- .../controller/build/resource/statefulset.rs | 5 +++- tests/templates/kuttl/smoke/30-assert.yaml.j2 | 24 ------------------- 2 files changed, 4 insertions(+), 25 deletions(-) diff --git a/rust/operator-binary/src/controller/build/resource/statefulset.rs b/rust/operator-binary/src/controller/build/resource/statefulset.rs index 16068353..86bef023 100644 --- a/rust/operator-binary/src/controller/build/resource/statefulset.rs +++ b/rust/operator-binary/src/controller/build/resource/statefulset.rs @@ -19,6 +19,7 @@ use stackable_operator::{ }, apimachinery::pkg::{apis::meta::v1::LabelSelector, util::intstr::IntOrString}, }, + kvp::Label, product_logging, v2::{ builder::pod::container::{EnvVarName, EnvVarSet, new_container_builder}, @@ -301,7 +302,9 @@ pub fn build_rolegroup_statefulset( // Listener PVC labels should stay stable across upgrades and so should not // include the version field (see HDFS for a similar pattern). - let unversioned_labels = cluster.role_group_selector(hbase_role, role_group_name); + let mut unversioned_labels = cluster.role_group_selector(hbase_role, role_group_name); + // Vendor is not included in role_group_selector labels, so add it. + unversioned_labels.insert(Label::stackable_vendor()); let listener_pvc = super::listener::build_listener_pvc(hbase_role, merged_config, &unversioned_labels); diff --git a/tests/templates/kuttl/smoke/30-assert.yaml.j2 b/tests/templates/kuttl/smoke/30-assert.yaml.j2 index 120e46db..b2243107 100644 --- a/tests/templates/kuttl/smoke/30-assert.yaml.j2 +++ b/tests/templates/kuttl/smoke/30-assert.yaml.j2 @@ -11,7 +11,6 @@ metadata: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -46,7 +45,6 @@ metadata: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default prometheus.io/scrape: "true" @@ -73,7 +71,6 @@ metadata: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -108,7 +105,6 @@ metadata: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default prometheus.io/scrape: "true" @@ -135,7 +131,6 @@ metadata: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -170,7 +165,6 @@ metadata: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default prometheus.io/scrape: "true" @@ -199,7 +193,6 @@ metadata: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default restarter.stackable.tech/enabled: "true" @@ -224,7 +217,6 @@ spec: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -406,7 +398,6 @@ spec: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -430,7 +421,6 @@ metadata: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default restarter.stackable.tech/enabled: "true" @@ -450,7 +440,6 @@ spec: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -641,7 +630,6 @@ spec: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -665,7 +653,6 @@ metadata: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default restarter.stackable.tech/enabled: "true" @@ -690,7 +677,6 @@ spec: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -871,7 +857,6 @@ spec: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -893,7 +878,6 @@ metadata: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: discovery stackable.tech/vendor: Stackable @@ -910,7 +894,6 @@ metadata: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -927,7 +910,6 @@ metadata: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -944,7 +926,6 @@ metadata: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -960,7 +941,6 @@ kind: ServiceAccount metadata: labels: app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase name: test-hbase-serviceaccount ownerReferences: @@ -974,7 +954,6 @@ kind: RoleBinding metadata: labels: app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase name: test-hbase-rolebinding ownerReferences: @@ -1023,7 +1002,6 @@ metadata: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -1056,7 +1034,6 @@ metadata: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -1089,7 +1066,6 @@ metadata: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase - app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable From c1b4366869390eb0b238335378634d33f0f1bdbb Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Thu, 13 Aug 2026 15:25:45 +0200 Subject: [PATCH 4/5] added in wrongly removed labels --- .../controller/build/resource/statefulset.rs | 3 ++- tests/templates/kuttl/smoke/30-assert.yaml.j2 | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/rust/operator-binary/src/controller/build/resource/statefulset.rs b/rust/operator-binary/src/controller/build/resource/statefulset.rs index 86bef023..db926cd6 100644 --- a/rust/operator-binary/src/controller/build/resource/statefulset.rs +++ b/rust/operator-binary/src/controller/build/resource/statefulset.rs @@ -303,7 +303,8 @@ pub fn build_rolegroup_statefulset( // Listener PVC labels should stay stable across upgrades and so should not // include the version field (see HDFS for a similar pattern). let mut unversioned_labels = cluster.role_group_selector(hbase_role, role_group_name); - // Vendor is not included in role_group_selector labels, so add it. + // Neither vendor nor managed-by are included in role_group_selector + // labels: vendor is a required and so add it back. unversioned_labels.insert(Label::stackable_vendor()); let listener_pvc = diff --git a/tests/templates/kuttl/smoke/30-assert.yaml.j2 b/tests/templates/kuttl/smoke/30-assert.yaml.j2 index b2243107..7dbf9d9b 100644 --- a/tests/templates/kuttl/smoke/30-assert.yaml.j2 +++ b/tests/templates/kuttl/smoke/30-assert.yaml.j2 @@ -11,6 +11,7 @@ metadata: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -45,6 +46,7 @@ metadata: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default prometheus.io/scrape: "true" @@ -71,6 +73,7 @@ metadata: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -105,6 +108,7 @@ metadata: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default prometheus.io/scrape: "true" @@ -131,6 +135,7 @@ metadata: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -165,6 +170,7 @@ metadata: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default prometheus.io/scrape: "true" @@ -193,6 +199,7 @@ metadata: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default restarter.stackable.tech/enabled: "true" @@ -217,6 +224,7 @@ spec: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -398,6 +406,7 @@ spec: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -421,6 +430,7 @@ metadata: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default restarter.stackable.tech/enabled: "true" @@ -440,6 +450,7 @@ spec: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -630,6 +641,7 @@ spec: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -653,6 +665,7 @@ metadata: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default restarter.stackable.tech/enabled: "true" @@ -677,6 +690,7 @@ spec: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -878,6 +892,7 @@ metadata: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: discovery stackable.tech/vendor: Stackable @@ -894,6 +909,7 @@ metadata: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -910,6 +926,7 @@ metadata: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -926,6 +943,7 @@ metadata: labels: app.kubernetes.io/component: restserver app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -941,6 +959,7 @@ kind: ServiceAccount metadata: labels: app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase name: test-hbase-serviceaccount ownerReferences: @@ -954,6 +973,7 @@ kind: RoleBinding metadata: labels: app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase name: test-hbase-rolebinding ownerReferences: @@ -1002,6 +1022,7 @@ metadata: labels: app.kubernetes.io/component: master app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable @@ -1034,6 +1055,7 @@ metadata: labels: app.kubernetes.io/component: regionserver app.kubernetes.io/instance: test-hbase + app.kubernetes.io/managed-by: hbase.stackable.tech_hbasecluster app.kubernetes.io/name: hbase app.kubernetes.io/role-group: default stackable.tech/vendor: Stackable From 83ca24e43d4ddf8a588cfa6bf6a45a1e81ac00c9 Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Fri, 14 Aug 2026 14:38:23 +0200 Subject: [PATCH 5/5] added missing PR number to changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f29153fc..051a8e3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,7 @@ which could cause problems with GitOps tools (e.g. ArgoCD) reporting a diff in the custom resources. See [our internal issue](https://github.com/stackabletech/hdfs-operator/issues/626) and [the fix](https://github.com/kube-rs/kube/pull/2042) for details ([#792]). - BREAKING: The app.kubernetes.io/managed-by label value changed from hbase.stackable.com_hbasecluster to - hbase.stackable.tech_hbasecluster, aligning with all other operators. + hbase.stackable.tech_hbasecluster, aligning with all other operators ([#795]). - BREAKING: The rest-server listener PVC template now carries only the unversioned selector labels. Existing rest-server StatefulSets must be deleted once before the new operator can reconcile them ([#795]).