Skip to content

Commit 124dfc1

Browse files
controller: Add migration label to pause reconciliation
To support migrating CockroachDB clusters from the public operator to the CockroachDB operator through coexistence, we need to prevent the operator from reverting manual changes made during the migration process. This includes preventing the scale-up of StatefulSet pods after manual scale-down and allowing modifications to Service labels (e.g., public service) which would otherwise be reset by the operator. This commit introduces a new migration label (`crdb.io/skip-reconcile`) in the v1alpha1 API. When this label is set to "true" on the CrdbCluster resource, the controller stops the entire reconciliation loop. This ensures the operator does not interfere with any resources during the migration phase.
1 parent d134dd3 commit 124dfc1

File tree

10 files changed

+207
-3
lines changed

10 files changed

+207
-3
lines changed

Makefile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,4 +373,3 @@ publish-operator-openshift:
373373
.PHONY: release/publish-openshift-bundle
374374
release/publish-openshift-bundle:
375375
./build/release/teamcity-publish-openshift-bundle.sh
376-

apis/v1alpha1/cluster_types.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ import (
2222
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2323
)
2424

25+
const (
26+
// CrdbOperatorMigrationLabel is the label used to indicate that the cluster is migrating.
27+
// If this label is set to "true", the operator will stop reconciling the
28+
// entire cluster.
29+
CrdbOperatorMigrationLabel = "crdb.io/skip-reconcile"
30+
)
31+
2532
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
2633
// Important: Run "make dev/generate" to regenerate code after modifying this file
2734

config/manager/patches/image.yaml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,35 @@ spec:
342342
value: cockroachdb/cockroach:v25.2.0
343343
- name: RELATED_IMAGE_COCKROACH_v25_2_1
344344
value: cockroachdb/cockroach:v25.2.1
345+
- name: RELATED_IMAGE_COCKROACH_v25_2_2
346+
value: cockroachdb/cockroach:v25.2.2
347+
- name: RELATED_IMAGE_COCKROACH_v25_2_3
348+
value: cockroachdb/cockroach:v25.2.3
349+
- name: RELATED_IMAGE_COCKROACH_v25_2_4
350+
value: cockroachdb/cockroach:v25.2.4
351+
- name: RELATED_IMAGE_COCKROACH_v25_2_5
352+
value: cockroachdb/cockroach:v25.2.5
353+
- name: RELATED_IMAGE_COCKROACH_v25_2_6
354+
value: cockroachdb/cockroach:v25.2.6
355+
- name: RELATED_IMAGE_COCKROACH_v25_2_7
356+
value: cockroachdb/cockroach:v25.2.7
357+
- name: RELATED_IMAGE_COCKROACH_v25_2_8
358+
value: cockroachdb/cockroach:v25.2.8
345359
- name: RELATED_IMAGE_COCKROACH_v25_2_10
346360
value: cockroachdb/cockroach:v25.2.10
361+
- name: RELATED_IMAGE_COCKROACH_v25_3_0
362+
value: cockroachdb/cockroach:v25.3.0
363+
- name: RELATED_IMAGE_COCKROACH_v25_3_1
364+
value: cockroachdb/cockroach:v25.3.1
365+
- name: RELATED_IMAGE_COCKROACH_v25_3_2
366+
value: cockroachdb/cockroach:v25.3.2
367+
- name: RELATED_IMAGE_COCKROACH_v25_3_3
368+
value: cockroachdb/cockroach:v25.3.3
369+
- name: RELATED_IMAGE_COCKROACH_v25_3_4
370+
value: cockroachdb/cockroach:v25.3.4
371+
- name: RELATED_IMAGE_COCKROACH_v25_3_6
372+
value: cockroachdb/cockroach:v25.3.6
373+
- name: RELATED_IMAGE_COCKROACH_v25_4_1
374+
value: cockroachdb/cockroach:v25.4.1
347375
- name: RELATED_IMAGE_COCKROACH_v25_4_2
348376
value: cockroachdb/cockroach:v25.4.2

config/manifests/bases/cockroach-operator.clusterserviceversion.yaml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -515,8 +515,36 @@ spec:
515515
name: RELATED_IMAGE_COCKROACH_v25_2_0
516516
- image: registry.connect.redhat.com/cockroachdb/cockroach@sha256:3b78a4d3864e16d270979d9d7756012abf09e6cdb7f1eb4832f6497c26281099
517517
name: RELATED_IMAGE_COCKROACH_v25_2_1
518+
- image: registry.connect.redhat.com/cockroachdb/cockroach@sha256:f42fa22aac3cc41ce72e144a72530ffbee765a392b24593dafd06cc098f8410b
519+
name: RELATED_IMAGE_COCKROACH_v25_2_2
520+
- image: registry.connect.redhat.com/cockroachdb/cockroach@sha256:ace6130bc3492ce826fdb2363a20c7b9dea8ad307e2893b81a4ff7172d0bde6a
521+
name: RELATED_IMAGE_COCKROACH_v25_2_3
522+
- image: registry.connect.redhat.com/cockroachdb/cockroach@sha256:77b933878faae575e2b8df45a2a7580da204f6de6ed40c6c0b7d4ae753287e60
523+
name: RELATED_IMAGE_COCKROACH_v25_2_4
524+
- image: registry.connect.redhat.com/cockroachdb/cockroach@sha256:53ff9416353d211d6f02ac7b4e28f29a593a4773217b545a61b7f0d6cd5c90aa
525+
name: RELATED_IMAGE_COCKROACH_v25_2_5
526+
- image: registry.connect.redhat.com/cockroachdb/cockroach@sha256:9277c11fcc8cedff0d9843cefe1c5e8560d10f2b89146a24cdba55c67596bf8d
527+
name: RELATED_IMAGE_COCKROACH_v25_2_6
528+
- image: registry.connect.redhat.com/cockroachdb/cockroach@sha256:33370557f65035b46e0e42bcea79905aeff96951ab454012aaa5559a8edd4fd9
529+
name: RELATED_IMAGE_COCKROACH_v25_2_7
530+
- image: registry.connect.redhat.com/cockroachdb/cockroach@sha256:e54f78d844efd4082757cd4e3c6ea458b5418b157034d990a0a8d904eb423c02
531+
name: RELATED_IMAGE_COCKROACH_v25_2_8
518532
- image: registry.connect.redhat.com/cockroachdb/cockroach@sha256:51a717edb6cb122b933d30bbddda8e65dd6312f521ccacacf4b014437d3128b9
519533
name: RELATED_IMAGE_COCKROACH_v25_2_10
534+
- image: registry.connect.redhat.com/cockroachdb/cockroach@sha256:80183c72761fb64ed665c6e7699b499b08f96ae66e6a97027216dd1aa805b0aa
535+
name: RELATED_IMAGE_COCKROACH_v25_3_0
536+
- image: registry.connect.redhat.com/cockroachdb/cockroach@sha256:35dfe947b4f4a834013e8a975460d994db3b23fd47c87e3291ee032a44d6866f
537+
name: RELATED_IMAGE_COCKROACH_v25_3_1
538+
- image: registry.connect.redhat.com/cockroachdb/cockroach@sha256:d89ee6224c624abc7cdbfb0d21a758dec0198e8e08c7847c840872529adbc6bd
539+
name: RELATED_IMAGE_COCKROACH_v25_3_2
540+
- image: registry.connect.redhat.com/cockroachdb/cockroach@sha256:5f758b398f1d1807fbdf67833472459c3016d1759824ad4582b635c820774588
541+
name: RELATED_IMAGE_COCKROACH_v25_3_3
542+
- image: registry.connect.redhat.com/cockroachdb/cockroach@sha256:1cea4c986232b08180ce3ae620774901510c45d762aaa32e875a0b0dcc27f836
543+
name: RELATED_IMAGE_COCKROACH_v25_3_4
544+
- image: registry.connect.redhat.com/cockroachdb/cockroach@sha256:456e6562fb23cd6fab563aba396215777f062c725de6f0e1f8d9db722ae16791
545+
name: RELATED_IMAGE_COCKROACH_v25_3_6
546+
- image: registry.connect.redhat.com/cockroachdb/cockroach@sha256:513010c88566e851b51012047174f9bde41a53e1be8b0712f8452d316d001611
547+
name: RELATED_IMAGE_COCKROACH_v25_4_1
520548
- image: registry.connect.redhat.com/cockroachdb/cockroach@sha256:edbb7d2cf46a6704182e5e7fc19e396f17e6c3a67f1e4cb374751f344f9b8e70
521549
name: RELATED_IMAGE_COCKROACH_v25_4_2
522550
- image: RH_COCKROACH_OP_IMAGE_PLACEHOLDER

config/manifests/patches/deployment_patch.yaml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,8 +351,36 @@ spec:
351351
value: registry.connect.redhat.com/cockroachdb/cockroach@sha256:c74cf927a2b2c5098ad74ad0880996f8b042186a9911d888a231ef5b9e2a0715
352352
- name: RELATED_IMAGE_COCKROACH_v25_2_1
353353
value: registry.connect.redhat.com/cockroachdb/cockroach@sha256:3b78a4d3864e16d270979d9d7756012abf09e6cdb7f1eb4832f6497c26281099
354+
- name: RELATED_IMAGE_COCKROACH_v25_2_2
355+
value: registry.connect.redhat.com/cockroachdb/cockroach@sha256:f42fa22aac3cc41ce72e144a72530ffbee765a392b24593dafd06cc098f8410b
356+
- name: RELATED_IMAGE_COCKROACH_v25_2_3
357+
value: registry.connect.redhat.com/cockroachdb/cockroach@sha256:ace6130bc3492ce826fdb2363a20c7b9dea8ad307e2893b81a4ff7172d0bde6a
358+
- name: RELATED_IMAGE_COCKROACH_v25_2_4
359+
value: registry.connect.redhat.com/cockroachdb/cockroach@sha256:77b933878faae575e2b8df45a2a7580da204f6de6ed40c6c0b7d4ae753287e60
360+
- name: RELATED_IMAGE_COCKROACH_v25_2_5
361+
value: registry.connect.redhat.com/cockroachdb/cockroach@sha256:53ff9416353d211d6f02ac7b4e28f29a593a4773217b545a61b7f0d6cd5c90aa
362+
- name: RELATED_IMAGE_COCKROACH_v25_2_6
363+
value: registry.connect.redhat.com/cockroachdb/cockroach@sha256:9277c11fcc8cedff0d9843cefe1c5e8560d10f2b89146a24cdba55c67596bf8d
364+
- name: RELATED_IMAGE_COCKROACH_v25_2_7
365+
value: registry.connect.redhat.com/cockroachdb/cockroach@sha256:33370557f65035b46e0e42bcea79905aeff96951ab454012aaa5559a8edd4fd9
366+
- name: RELATED_IMAGE_COCKROACH_v25_2_8
367+
value: registry.connect.redhat.com/cockroachdb/cockroach@sha256:e54f78d844efd4082757cd4e3c6ea458b5418b157034d990a0a8d904eb423c02
354368
- name: RELATED_IMAGE_COCKROACH_v25_2_10
355369
value: registry.connect.redhat.com/cockroachdb/cockroach@sha256:51a717edb6cb122b933d30bbddda8e65dd6312f521ccacacf4b014437d3128b9
370+
- name: RELATED_IMAGE_COCKROACH_v25_3_0
371+
value: registry.connect.redhat.com/cockroachdb/cockroach@sha256:80183c72761fb64ed665c6e7699b499b08f96ae66e6a97027216dd1aa805b0aa
372+
- name: RELATED_IMAGE_COCKROACH_v25_3_1
373+
value: registry.connect.redhat.com/cockroachdb/cockroach@sha256:35dfe947b4f4a834013e8a975460d994db3b23fd47c87e3291ee032a44d6866f
374+
- name: RELATED_IMAGE_COCKROACH_v25_3_2
375+
value: registry.connect.redhat.com/cockroachdb/cockroach@sha256:d89ee6224c624abc7cdbfb0d21a758dec0198e8e08c7847c840872529adbc6bd
376+
- name: RELATED_IMAGE_COCKROACH_v25_3_3
377+
value: registry.connect.redhat.com/cockroachdb/cockroach@sha256:5f758b398f1d1807fbdf67833472459c3016d1759824ad4582b635c820774588
378+
- name: RELATED_IMAGE_COCKROACH_v25_3_4
379+
value: registry.connect.redhat.com/cockroachdb/cockroach@sha256:1cea4c986232b08180ce3ae620774901510c45d762aaa32e875a0b0dcc27f836
380+
- name: RELATED_IMAGE_COCKROACH_v25_3_6
381+
value: registry.connect.redhat.com/cockroachdb/cockroach@sha256:456e6562fb23cd6fab563aba396215777f062c725de6f0e1f8d9db722ae16791
382+
- name: RELATED_IMAGE_COCKROACH_v25_4_1
383+
value: registry.connect.redhat.com/cockroachdb/cockroach@sha256:513010c88566e851b51012047174f9bde41a53e1be8b0712f8452d316d001611
356384
- name: RELATED_IMAGE_COCKROACH_v25_4_2
357385
value: registry.connect.redhat.com/cockroachdb/cockroach@sha256:edbb7d2cf46a6704182e5e7fc19e396f17e6c3a67f1e4cb374751f344f9b8e70
358386
- name: RELATED_IMAGE_COCKROACH_OPERATOR

crdb-versions.yaml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -496,9 +496,51 @@ CrdbVersions:
496496
- image: cockroachdb/cockroach:v25.2.1
497497
redhatImage: registry.connect.redhat.com/cockroachdb/cockroach@sha256:3b78a4d3864e16d270979d9d7756012abf09e6cdb7f1eb4832f6497c26281099
498498
tag: v25.2.1
499+
- image: cockroachdb/cockroach:v25.2.2
500+
redhatImage: registry.connect.redhat.com/cockroachdb/cockroach@sha256:f42fa22aac3cc41ce72e144a72530ffbee765a392b24593dafd06cc098f8410b
501+
tag: v25.2.2
502+
- image: cockroachdb/cockroach:v25.2.3
503+
redhatImage: registry.connect.redhat.com/cockroachdb/cockroach@sha256:ace6130bc3492ce826fdb2363a20c7b9dea8ad307e2893b81a4ff7172d0bde6a
504+
tag: v25.2.3
505+
- image: cockroachdb/cockroach:v25.2.4
506+
redhatImage: registry.connect.redhat.com/cockroachdb/cockroach@sha256:77b933878faae575e2b8df45a2a7580da204f6de6ed40c6c0b7d4ae753287e60
507+
tag: v25.2.4
508+
- image: cockroachdb/cockroach:v25.2.5
509+
redhatImage: registry.connect.redhat.com/cockroachdb/cockroach@sha256:53ff9416353d211d6f02ac7b4e28f29a593a4773217b545a61b7f0d6cd5c90aa
510+
tag: v25.2.5
511+
- image: cockroachdb/cockroach:v25.2.6
512+
redhatImage: registry.connect.redhat.com/cockroachdb/cockroach@sha256:9277c11fcc8cedff0d9843cefe1c5e8560d10f2b89146a24cdba55c67596bf8d
513+
tag: v25.2.6
514+
- image: cockroachdb/cockroach:v25.2.7
515+
redhatImage: registry.connect.redhat.com/cockroachdb/cockroach@sha256:33370557f65035b46e0e42bcea79905aeff96951ab454012aaa5559a8edd4fd9
516+
tag: v25.2.7
517+
- image: cockroachdb/cockroach:v25.2.8
518+
redhatImage: registry.connect.redhat.com/cockroachdb/cockroach@sha256:e54f78d844efd4082757cd4e3c6ea458b5418b157034d990a0a8d904eb423c02
519+
tag: v25.2.8
499520
- image: cockroachdb/cockroach:v25.2.10
500521
redhatImage: registry.connect.redhat.com/cockroachdb/cockroach@sha256:51a717edb6cb122b933d30bbddda8e65dd6312f521ccacacf4b014437d3128b9
501522
tag: v25.2.10
523+
- image: cockroachdb/cockroach:v25.3.0
524+
redhatImage: registry.connect.redhat.com/cockroachdb/cockroach@sha256:80183c72761fb64ed665c6e7699b499b08f96ae66e6a97027216dd1aa805b0aa
525+
tag: v25.3.0
526+
- image: cockroachdb/cockroach:v25.3.1
527+
redhatImage: registry.connect.redhat.com/cockroachdb/cockroach@sha256:35dfe947b4f4a834013e8a975460d994db3b23fd47c87e3291ee032a44d6866f
528+
tag: v25.3.1
529+
- image: cockroachdb/cockroach:v25.3.2
530+
redhatImage: registry.connect.redhat.com/cockroachdb/cockroach@sha256:d89ee6224c624abc7cdbfb0d21a758dec0198e8e08c7847c840872529adbc6bd
531+
tag: v25.3.2
532+
- image: cockroachdb/cockroach:v25.3.3
533+
redhatImage: registry.connect.redhat.com/cockroachdb/cockroach@sha256:5f758b398f1d1807fbdf67833472459c3016d1759824ad4582b635c820774588
534+
tag: v25.3.3
535+
- image: cockroachdb/cockroach:v25.3.4
536+
redhatImage: registry.connect.redhat.com/cockroachdb/cockroach@sha256:1cea4c986232b08180ce3ae620774901510c45d762aaa32e875a0b0dcc27f836
537+
tag: v25.3.4
538+
- image: cockroachdb/cockroach:v25.3.6
539+
redhatImage: registry.connect.redhat.com/cockroachdb/cockroach@sha256:456e6562fb23cd6fab563aba396215777f062c725de6f0e1f8d9db722ae16791
540+
tag: v25.3.6
541+
- image: cockroachdb/cockroach:v25.4.1
542+
redhatImage: registry.connect.redhat.com/cockroachdb/cockroach@sha256:513010c88566e851b51012047174f9bde41a53e1be8b0712f8452d316d001611
543+
tag: v25.4.1
502544
- image: cockroachdb/cockroach:v25.4.2
503545
redhatImage: registry.connect.redhat.com/cockroachdb/cockroach@sha256:edbb7d2cf46a6704182e5e7fc19e396f17e6c3a67f1e4cb374751f344f9b8e70
504546
tag: v25.4.2

install/operator.yaml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -701,8 +701,36 @@ spec:
701701
value: cockroachdb/cockroach:v25.2.0
702702
- name: RELATED_IMAGE_COCKROACH_v25_2_1
703703
value: cockroachdb/cockroach:v25.2.1
704+
- name: RELATED_IMAGE_COCKROACH_v25_2_2
705+
value: cockroachdb/cockroach:v25.2.2
706+
- name: RELATED_IMAGE_COCKROACH_v25_2_3
707+
value: cockroachdb/cockroach:v25.2.3
708+
- name: RELATED_IMAGE_COCKROACH_v25_2_4
709+
value: cockroachdb/cockroach:v25.2.4
710+
- name: RELATED_IMAGE_COCKROACH_v25_2_5
711+
value: cockroachdb/cockroach:v25.2.5
712+
- name: RELATED_IMAGE_COCKROACH_v25_2_6
713+
value: cockroachdb/cockroach:v25.2.6
714+
- name: RELATED_IMAGE_COCKROACH_v25_2_7
715+
value: cockroachdb/cockroach:v25.2.7
716+
- name: RELATED_IMAGE_COCKROACH_v25_2_8
717+
value: cockroachdb/cockroach:v25.2.8
704718
- name: RELATED_IMAGE_COCKROACH_v25_2_10
705719
value: cockroachdb/cockroach:v25.2.10
720+
- name: RELATED_IMAGE_COCKROACH_v25_3_0
721+
value: cockroachdb/cockroach:v25.3.0
722+
- name: RELATED_IMAGE_COCKROACH_v25_3_1
723+
value: cockroachdb/cockroach:v25.3.1
724+
- name: RELATED_IMAGE_COCKROACH_v25_3_2
725+
value: cockroachdb/cockroach:v25.3.2
726+
- name: RELATED_IMAGE_COCKROACH_v25_3_3
727+
value: cockroachdb/cockroach:v25.3.3
728+
- name: RELATED_IMAGE_COCKROACH_v25_3_4
729+
value: cockroachdb/cockroach:v25.3.4
730+
- name: RELATED_IMAGE_COCKROACH_v25_3_6
731+
value: cockroachdb/cockroach:v25.3.6
732+
- name: RELATED_IMAGE_COCKROACH_v25_4_1
733+
value: cockroachdb/cockroach:v25.4.1
706734
- name: RELATED_IMAGE_COCKROACH_v25_4_2
707735
value: cockroachdb/cockroach:v25.4.2
708736
- name: OPERATOR_NAME

pkg/controller/cluster_controller.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,12 @@ func (r *ClusterReconciler) Reconcile(ctx context.Context, req reconcile.Request
142142
}
143143
}
144144

145+
// If the cluster is migrating, we stop reconciliation
146+
if val, ok := cluster.Unwrap().Labels[api.CrdbOperatorMigrationLabel]; ok && val == "true" {
147+
log.Info("cluster is migrating, stopping reconciliation")
148+
return noRequeue()
149+
}
150+
145151
actorToExecute, err := r.Director.GetActorToExecute(ctx, &cluster, log)
146152
if err != nil {
147153
return requeueAfter(30*time.Second, nil)

pkg/controller/cluster_controller_test.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,5 +147,44 @@ func TestReconcile(t *testing.T) {
147147
assert.Equal(t, tt.want, actual)
148148
})
149149
}
150+
}
151+
152+
func TestReconcileMigrationLabel(t *testing.T) {
153+
scheme := testutil.InitScheme(t)
154+
155+
ns := &corev1.Namespace{
156+
ObjectMeta: metav1.ObjectMeta{
157+
Name: "test-namespace",
158+
},
159+
}
160+
161+
cluster := testutil.NewBuilder("cluster").Namespaced(ns.Name).WithNodeCount(1).Cr()
162+
// Set status so we skip the "first reconcile" block
163+
cluster.Status.ClusterStatus = "Running"
164+
// Set the migration label
165+
cluster.Labels = map[string]string{
166+
api.CrdbOperatorMigrationLabel: "true",
167+
}
168+
169+
objs := []runtime.Object{
170+
ns,
171+
cluster,
172+
}
173+
174+
cl := fake.NewClientBuilder().WithScheme(scheme).WithRuntimeObjects(objs...).WithStatusSubresource(cluster).Build()
175+
log := zapr.NewLogger(zaptest.NewLogger(t)).WithName("cluster-controller-test")
176+
req := ctrl.Request{NamespacedName: types.NamespacedName{Namespace: cluster.Namespace, Name: cluster.Name}}
177+
178+
r := &controller.ClusterReconciler{
179+
Client: cl,
180+
Log: log,
181+
Scheme: scheme,
182+
Director: &fakeDirector{
183+
actorToExecute: &fakeActor{},
184+
},
185+
}
150186

187+
actual, err := r.Reconcile(context.TODO(), req)
188+
require.NoError(t, err)
189+
assert.Equal(t, ctrl.Result{}, actual)
151190
}

pkg/resource/statefulset_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"fmt"
2323
"os"
2424
"path/filepath"
25+
"testing"
2526

2627
api "github.com/cockroachdb/cockroach-operator/apis/v1alpha1"
2728
"github.com/cockroachdb/cockroach-operator/pkg/labels"
@@ -32,8 +33,6 @@ import (
3233
"github.com/stretchr/testify/assert"
3334
"github.com/stretchr/testify/require"
3435
appsv1 "k8s.io/api/apps/v1"
35-
36-
"testing"
3736
)
3837

3938
var update = flag.Bool("update", false, "update the golden files of this test")

0 commit comments

Comments
 (0)