Skip to content
Closed
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
4 changes: 4 additions & 0 deletions .changes/unreleased/operator-Fixed-20260129-122815.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
project: operator
kind: Fixed
body: In previous versions of the operator a field manager was unknowingly changed for resources that were synchronized via server-side apply. This can cause problems with modifying fields such as Service and StatefulSet port definitions. A post-upgrade migration job was added to remove any unwanted field managers.
time: 2026-01-29T12:28:15.717527-05:00
97 changes: 97 additions & 0 deletions acceptance/features/upgrade-regressions.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
@operator:none @vcluster
# Note: use the same version of RP across upgrades to minimize
# issues not related to operator upgrade regressions.
Feature: Operator upgrade regressions
@skip:gke @skip:aks @skip:eks
Scenario: Regression - field managers
Given I helm install "redpanda-operator" "redpanda/operator" --version v25.1.3 with values:
"""
crds:
enabled: true
"""
And I apply Kubernetes manifest:
"""
---
apiVersion: cluster.redpanda.com/v1alpha2
kind: Redpanda
metadata:
name: operator-upgrade
spec:
clusterSpec:
image:
repository: redpandadata/redpanda
tag: v25.2.11
console:
enabled: false
statefulset:
replicas: 1
sideCars:
image:
tag: dev
repository: localhost/redpanda-operator
"""
And cluster "operator-upgrade" is available
And service "operator-upgrade" should have field managers:
"""
cluster.redpanda.com/operator
"""
And service "operator-upgrade" should not have field managers:
"""
*kube.Ctl
"""
Then I helm upgrade "redpanda-operator" "redpanda/operator" --version v25.3.1 with values:
"""
crds:
enabled: true
"""
And cluster "operator-upgrade" should be stable with 1 nodes
And service "operator-upgrade" should have field managers:
"""
cluster.redpanda.com/operator
*kube.Ctl
"""
And I apply Kubernetes manifest:
"""
---
apiVersion: cluster.redpanda.com/v1alpha2
kind: Redpanda
metadata:
name: operator-upgrade
spec:
clusterSpec:
image:
repository: redpandadata/redpanda
tag: v25.2.11
listeners:
kafka:
port: 19093
console:
enabled: false
statefulset:
replicas: 1
sideCars:
image:
tag: dev
repository: localhost/redpanda-operator
"""
And cluster "operator-upgrade" should have sync error:
"""
Service "operator-upgrade" is invalid: spec.ports[3].name: Duplicate value: "kafka"
"""
Then I helm upgrade "redpanda-operator" "../operator/chart" with values:
"""
image:
tag: dev
repository: localhost/redpanda-operator
crds:
enabled: true
"""
And service "operator-upgrade" should have field managers:
"""
cluster.redpanda.com/operator
"""
And service "operator-upgrade" should not have field managers:
"""
*kube.Ctl
"""
And cluster "operator-upgrade" should be stable with 1 nodes
33 changes: 33 additions & 0 deletions acceptance/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,14 @@ go 1.24.3
require (
github.com/cockroachdb/errors v1.11.3
github.com/cucumber/godog v0.14.1
<<<<<<< HEAD
github.com/prometheus/common v0.64.0
github.com/redpanda-data/common-go/rpadmin v0.1.14
=======
github.com/prometheus/common v0.66.1
github.com/redpanda-data/common-go/kube v0.0.0-20260129210004-d6a0f302216d
github.com/redpanda-data/common-go/rpadmin v0.2.0
>>>>>>> f1112cbe (Add migration job to handle mismatched field managers (#1249))
github.com/redpanda-data/redpanda-operator/harpoon v0.0.0-00010101000000-000000000000
github.com/redpanda-data/redpanda-operator/operator v0.0.0-20250528175436-e8cca0053dc6
github.com/redpanda-data/redpanda-operator/pkg v0.0.0-20250528175436-e8cca0053dc6
Expand Down Expand Up @@ -49,7 +55,12 @@ require (
github.com/Masterminds/semver/v3 v3.3.1 // indirect
github.com/Masterminds/sprig/v3 v3.3.0 // indirect
github.com/Masterminds/squirrel v1.5.4 // indirect
<<<<<<< HEAD
github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
=======
github.com/NYTimes/gziphandler v1.1.1 // indirect
github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
>>>>>>> f1112cbe (Add migration job to handle mismatched field managers (#1249))
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
github.com/aws/aws-sdk-go-v2 v1.32.3 // indirect
github.com/aws/aws-sdk-go-v2/config v1.28.1 // indirect
Expand Down Expand Up @@ -82,6 +93,8 @@ require (
github.com/containerd/errdefs v1.0.0 // indirect
github.com/containerd/log v0.1.0 // indirect
github.com/containerd/platforms v0.2.1 // indirect
github.com/coreos/go-semver v0.3.1 // indirect
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
github.com/cucumber/gherkin/go/v26 v26.2.0 // indirect
github.com/cucumber/messages/go/v21 v21.0.1 // indirect
github.com/cyphar/filepath-securejoin v0.4.1 // indirect
Expand Down Expand Up @@ -128,7 +141,12 @@ require (
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect
github.com/gosuri/uitable v0.0.4 // indirect
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect
<<<<<<< HEAD
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect
=======
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect
>>>>>>> f1112cbe (Add migration job to handle mismatched field managers (#1249))
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
github.com/hashicorp/go-memdb v1.3.4 // indirect
Expand Down Expand Up @@ -227,7 +245,15 @@ require (
github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect
github.com/x448/float16 v0.8.4 // indirect
github.com/xlab/treeprint v1.2.0 // indirect
<<<<<<< HEAD
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
=======
go.etcd.io/etcd/api/v3 v3.6.4 // indirect
go.etcd.io/etcd/client/pkg/v3 v3.6.4 // indirect
go.etcd.io/etcd/client/v3 v3.6.4 // indirect
go.etcd.io/raft/v3 v3.6.0 // indirect
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
>>>>>>> f1112cbe (Add migration job to handle mismatched field managers (#1249))
go.opentelemetry.io/collector/pdata v1.32.0 // indirect
go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 // indirect
Expand Down Expand Up @@ -270,6 +296,7 @@ require (
google.golang.org/protobuf v1.36.6 // indirect
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
helm.sh/helm/v3 v3.18.5 // indirect
Expand All @@ -278,9 +305,15 @@ require (
k8s.io/cli-runtime v0.33.3 // indirect
k8s.io/component-base v0.33.3 // indirect
k8s.io/klog/v2 v2.130.1 // indirect
<<<<<<< HEAD
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect
=======
k8s.io/kms v0.34.1 // indirect
k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect
>>>>>>> f1112cbe (Add migration job to handle mismatched field managers (#1249))
k8s.io/kubectl v0.33.3 // indirect
oras.land/oras-go/v2 v2.6.0 // indirect
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 // indirect
sigs.k8s.io/gateway-api v1.1.0 // indirect
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
sigs.k8s.io/kustomize/api v0.19.0 // indirect
Expand Down
Loading