Skip to content

Commit eb135cf

Browse files
committed
Update controller-runtime (v0.15) and K8s (v1.27)
This deals with various breaking changes in controller-runtime, as documented in the release notes: https://github.com/kubernetes-sigs/controller-runtime/releases/tag/v0.15.0 In short: - `Watches` now use a `client.Object` instead of a `source.Kind`. - `handler.MapFunc` signature accepts a Go context, which is used to log any errors, instead of silently ignoring them and/or panicking. - Fake clients used in tests are now configured using `WithStatusSubresource` to enable the correct behavior for status updates and patches. - Max concurrent reconciles is configured on the manager, instead of configuring them per reconciler instance. - Various manager configuration options have been moved to new structures and/or fields. In addition to this, all other dependencies which had updates are updated to their latest (compatible) versions as well. Signed-off-by: Hidde Beydals <[email protected]>
1 parent fc0df4d commit eb135cf

24 files changed

+556
-450
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ FUZZ_TIME ?= 1m
3838
GO_STATIC_FLAGS=-ldflags "-s -w" -tags 'netgo,osusergo,static_build$(addprefix ,,$(GO_TAGS))'
3939

4040
# API (doc) generation utilities
41-
CONTROLLER_GEN_VERSION ?= v0.11.1
41+
CONTROLLER_GEN_VERSION ?= v0.12.0
4242
GEN_API_REF_DOCS_VERSION ?= e327d0730470cbd61b06300f81c5fcf91c23c113
4343

4444
# If gobin not set, create one on ./build and add to path.

config/crd/bases/source.toolkit.fluxcd.io_buckets.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
33
kind: CustomResourceDefinition
44
metadata:
55
annotations:
6-
controller-gen.kubebuilder.io/version: v0.11.1
7-
creationTimestamp: null
6+
controller-gen.kubebuilder.io/version: v0.12.0
87
name: buckets.source.toolkit.fluxcd.io
98
spec:
109
group: source.toolkit.fluxcd.io

config/crd/bases/source.toolkit.fluxcd.io_gitrepositories.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
33
kind: CustomResourceDefinition
44
metadata:
55
annotations:
6-
controller-gen.kubebuilder.io/version: v0.11.1
7-
creationTimestamp: null
6+
controller-gen.kubebuilder.io/version: v0.12.0
87
name: gitrepositories.source.toolkit.fluxcd.io
98
spec:
109
group: source.toolkit.fluxcd.io

config/crd/bases/source.toolkit.fluxcd.io_helmcharts.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
33
kind: CustomResourceDefinition
44
metadata:
55
annotations:
6-
controller-gen.kubebuilder.io/version: v0.11.1
7-
creationTimestamp: null
6+
controller-gen.kubebuilder.io/version: v0.12.0
87
name: helmcharts.source.toolkit.fluxcd.io
98
spec:
109
group: source.toolkit.fluxcd.io

config/crd/bases/source.toolkit.fluxcd.io_helmrepositories.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
33
kind: CustomResourceDefinition
44
metadata:
55
annotations:
6-
controller-gen.kubebuilder.io/version: v0.11.1
7-
creationTimestamp: null
6+
controller-gen.kubebuilder.io/version: v0.12.0
87
name: helmrepositories.source.toolkit.fluxcd.io
98
spec:
109
group: source.toolkit.fluxcd.io

config/crd/bases/source.toolkit.fluxcd.io_ocirepositories.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
33
kind: CustomResourceDefinition
44
metadata:
55
annotations:
6-
controller-gen.kubebuilder.io/version: v0.11.1
7-
creationTimestamp: null
6+
controller-gen.kubebuilder.io/version: v0.12.0
87
name: ocirepositories.source.toolkit.fluxcd.io
98
spec:
109
group: source.toolkit.fluxcd.io

config/rbac/role.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
apiVersion: rbac.authorization.k8s.io/v1
33
kind: ClusterRole
44
metadata:
5-
creationTimestamp: null
65
name: manager-role
76
rules:
87
- apiGroups:

go.mod

Lines changed: 83 additions & 77 deletions
Large diffs are not rendered by default.

go.sum

Lines changed: 171 additions & 166 deletions
Large diffs are not rendered by default.

internal/controller/bucket_controller.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,7 @@ type BucketReconciler struct {
127127
}
128128

129129
type BucketReconcilerOptions struct {
130-
MaxConcurrentReconciles int
131-
RateLimiter ratelimiter.RateLimiter
130+
RateLimiter ratelimiter.RateLimiter
132131
}
133132

134133
// BucketProvider is an interface for fetching objects from a storage provider
@@ -169,8 +168,7 @@ func (r *BucketReconciler) SetupWithManagerAndOptions(mgr ctrl.Manager, opts Buc
169168
For(&bucketv1.Bucket{}).
170169
WithEventFilter(predicate.Or(predicate.GenerationChangedPredicate{}, predicates.ReconcileRequestedPredicate{})).
171170
WithOptions(controller.Options{
172-
MaxConcurrentReconciles: opts.MaxConcurrentReconciles,
173-
RateLimiter: opts.RateLimiter,
171+
RateLimiter: opts.RateLimiter,
174172
}).
175173
Complete(r)
176174
}

internal/controller/bucket_controller_test.go

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ import (
3434
"k8s.io/client-go/tools/record"
3535
kstatus "sigs.k8s.io/cli-utils/pkg/kstatus/status"
3636
"sigs.k8s.io/controller-runtime/pkg/client"
37-
"sigs.k8s.io/controller-runtime/pkg/client/fake"
3837
fakeclient "sigs.k8s.io/controller-runtime/pkg/client/fake"
3938

4039
"github.com/fluxcd/pkg/apis/meta"
@@ -341,7 +340,7 @@ func TestBucketReconciler_reconcileStorage(t *testing.T) {
341340
}()
342341

343342
r := &BucketReconciler{
344-
Client: fakeclient.NewClientBuilder().WithScheme(testEnv.GetScheme()).Build(),
343+
Client: fakeclient.NewClientBuilder().WithScheme(testEnv.GetScheme()).WithStatusSubresource(&bucketv1.Bucket{}).Build(),
345344
EventRecorder: record.NewFakeRecorder(32),
346345
Storage: testStorage,
347346
patchOptions: getPatchOptions(bucketReadyCondition.Owned, "sc"),
@@ -653,25 +652,26 @@ func TestBucketReconciler_reconcileSource_generic(t *testing.T) {
653652
t.Run(tt.name, func(t *testing.T) {
654653
g := NewWithT(t)
655654

656-
builder := fakeclient.NewClientBuilder().WithScheme(testEnv.Scheme())
655+
clientBuilder := fakeclient.NewClientBuilder().
656+
WithScheme(testEnv.Scheme()).
657+
WithStatusSubresource(&bucketv1.Bucket{})
658+
657659
if tt.secret != nil {
658-
builder.WithObjects(tt.secret)
660+
clientBuilder.WithObjects(tt.secret)
659661
}
662+
660663
r := &BucketReconciler{
661664
EventRecorder: record.NewFakeRecorder(32),
662-
Client: builder.Build(),
665+
Client: clientBuilder.Build(),
663666
Storage: testStorage,
664667
patchOptions: getPatchOptions(bucketReadyCondition.Owned, "sc"),
665668
}
666669
tmpDir := t.TempDir()
667670

668671
obj := &bucketv1.Bucket{
669-
TypeMeta: metav1.TypeMeta{
670-
Kind: bucketv1.BucketKind,
671-
},
672672
ObjectMeta: metav1.ObjectMeta{
673-
Name: "test-bucket",
674-
Generation: 1,
673+
GenerateName: "test-bucket-",
674+
Generation: 1,
675675
},
676676
Spec: bucketv1.BucketSpec{
677677
Timeout: &metav1.Duration{Duration: timeout},
@@ -996,26 +996,27 @@ func TestBucketReconciler_reconcileSource_gcs(t *testing.T) {
996996
t.Run(tt.name, func(t *testing.T) {
997997
g := NewWithT(t)
998998

999-
builder := fakeclient.NewClientBuilder().WithScheme(testEnv.Scheme())
999+
clientBuilder := fakeclient.NewClientBuilder().
1000+
WithScheme(testEnv.Scheme()).
1001+
WithStatusSubresource(&bucketv1.Bucket{})
1002+
10001003
if tt.secret != nil {
1001-
builder.WithObjects(tt.secret)
1004+
clientBuilder.WithObjects(tt.secret)
10021005
}
1006+
10031007
r := &BucketReconciler{
10041008
EventRecorder: record.NewFakeRecorder(32),
1005-
Client: builder.Build(),
1009+
Client: clientBuilder.Build(),
10061010
Storage: testStorage,
10071011
patchOptions: getPatchOptions(bucketReadyCondition.Owned, "sc"),
10081012
}
10091013
tmpDir := t.TempDir()
10101014

10111015
// Test bucket object.
10121016
obj := &bucketv1.Bucket{
1013-
TypeMeta: metav1.TypeMeta{
1014-
Kind: bucketv1.BucketKind,
1015-
},
10161017
ObjectMeta: metav1.ObjectMeta{
1017-
Name: "test-bucket",
1018-
Generation: 1,
1018+
GenerateName: "test-bucket-",
1019+
Generation: 1,
10191020
},
10201021
Spec: bucketv1.BucketSpec{
10211022
BucketName: tt.bucketName,
@@ -1191,19 +1192,18 @@ func TestBucketReconciler_reconcileArtifact(t *testing.T) {
11911192
t.Run(tt.name, func(t *testing.T) {
11921193
g := NewWithT(t)
11931194

1195+
clientBuilder := fakeclient.NewClientBuilder().
1196+
WithScheme(testEnv.GetScheme()).
1197+
WithStatusSubresource(&bucketv1.Bucket{})
1198+
11941199
r := &BucketReconciler{
1195-
Client: fakeclient.NewClientBuilder().WithScheme(testEnv.GetScheme()).Build(),
1200+
Client: clientBuilder.Build(),
11961201
EventRecorder: record.NewFakeRecorder(32),
11971202
Storage: testStorage,
11981203
patchOptions: getPatchOptions(bucketReadyCondition.Owned, "sc"),
11991204
}
12001205

1201-
tmpDir := t.TempDir()
1202-
12031206
obj := &bucketv1.Bucket{
1204-
TypeMeta: metav1.TypeMeta{
1205-
Kind: bucketv1.BucketKind,
1206-
},
12071207
ObjectMeta: metav1.ObjectMeta{
12081208
GenerateName: "test-bucket-",
12091209
Generation: 1,
@@ -1214,6 +1214,7 @@ func TestBucketReconciler_reconcileArtifact(t *testing.T) {
12141214
},
12151215
}
12161216

1217+
tmpDir := t.TempDir()
12171218
index := index.NewDigester()
12181219

12191220
if tt.beforeFunc != nil {
@@ -1296,17 +1297,20 @@ func TestBucketReconciler_statusConditions(t *testing.T) {
12961297

12971298
obj := &bucketv1.Bucket{
12981299
TypeMeta: metav1.TypeMeta{
1300+
APIVersion: bucketv1.GroupVersion.String(),
12991301
Kind: bucketv1.BucketKind,
1300-
APIVersion: "source.toolkit.fluxcd.io/v1beta2",
13011302
},
13021303
ObjectMeta: metav1.ObjectMeta{
1303-
Name: "bucket",
1304+
Name: "test-bucket",
13041305
Namespace: "foo",
13051306
},
13061307
}
1307-
clientBuilder := fake.NewClientBuilder()
1308-
clientBuilder.WithObjects(obj)
1309-
c := clientBuilder.Build()
1308+
1309+
c := fakeclient.NewClientBuilder().
1310+
WithScheme(testEnv.Scheme()).
1311+
WithObjects(obj).
1312+
WithStatusSubresource(&bucketv1.Bucket{}).
1313+
Build()
13101314

13111315
serialPatcher := patch.NewSerialPatcher(obj, c)
13121316

internal/controller/gitrepository_controller.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,6 @@ type GitRepositoryReconciler struct {
134134
}
135135

136136
type GitRepositoryReconcilerOptions struct {
137-
MaxConcurrentReconciles int
138137
DependencyRequeueInterval time.Duration
139138
RateLimiter ratelimiter.RateLimiter
140139
}
@@ -161,8 +160,7 @@ func (r *GitRepositoryReconciler) SetupWithManagerAndOptions(mgr ctrl.Manager, o
161160
predicate.Or(predicate.GenerationChangedPredicate{}, predicates.ReconcileRequestedPredicate{}),
162161
)).
163162
WithOptions(controller.Options{
164-
MaxConcurrentReconciles: opts.MaxConcurrentReconciles,
165-
RateLimiter: opts.RateLimiter,
163+
RateLimiter: opts.RateLimiter,
166164
}).
167165
Complete(r)
168166
}
@@ -787,7 +785,7 @@ func (r *GitRepositoryReconciler) gitCheckout(ctx context.Context,
787785
obj *sourcev1.GitRepository, authOpts *git.AuthOptions, dir string,
788786
optimized bool) (*git.Commit, error) {
789787
// Configure checkout strategy.
790-
cloneOpts := repository.CloneOptions{
788+
cloneOpts := repository.CloneConfig{
791789
RecurseSubmodules: obj.Spec.RecurseSubmodules,
792790
ShallowClone: true,
793791
}

0 commit comments

Comments
 (0)