Skip to content

Commit a983cb4

Browse files
authored
Merge pull request #1293 from jonasz-lasut/xp-runtime-2.4
Update to crossplane-runtime v2.4.0
2 parents 4970ec3 + 05c4c83 commit a983cb4

103 files changed

Lines changed: 3505 additions & 748 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apis/cluster/v1alpha1/register.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
package v1alpha1
66

77
import (
8+
"k8s.io/apimachinery/pkg/runtime"
89
"k8s.io/apimachinery/pkg/runtime/schema"
9-
"sigs.k8s.io/controller-runtime/pkg/scheme"
1010
)
1111

1212
// Package type metadata.
@@ -20,5 +20,5 @@ var (
2020
SchemeGroupVersion = schema.GroupVersion{Group: Group, Version: Version}
2121

2222
// SchemeBuilder is used to add go types to the GroupVersionKind scheme
23-
SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion}
23+
SchemeBuilder = runtime.NewSchemeBuilder()
2424
)

apis/cluster/v1beta1/register.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ package v1beta1
77
import (
88
"reflect"
99

10+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
11+
"k8s.io/apimachinery/pkg/runtime"
1012
"k8s.io/apimachinery/pkg/runtime/schema"
11-
"sigs.k8s.io/controller-runtime/pkg/scheme"
1213
)
1314

1415
// Package type metadata.
@@ -22,7 +23,7 @@ var (
2223
SchemeGroupVersion = schema.GroupVersion{Group: Group, Version: Version}
2324

2425
// SchemeBuilder is used to add go types to the GroupVersionKind scheme
25-
SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion}
26+
SchemeBuilder = runtime.NewSchemeBuilder()
2627
)
2728

2829
// ProviderConfig type metadata.
@@ -47,6 +48,9 @@ var (
4748
)
4849

4950
func init() {
50-
SchemeBuilder.Register(&ProviderConfig{}, &ProviderConfigList{})
51-
SchemeBuilder.Register(&ProviderConfigUsage{}, &ProviderConfigUsageList{})
51+
SchemeBuilder.Register(func(s *runtime.Scheme) error {
52+
s.AddKnownTypes(SchemeGroupVersion, &ProviderConfig{}, &ProviderConfigList{}, &ProviderConfigUsage{}, &ProviderConfigUsageList{})
53+
metav1.AddToGroupVersion(s, SchemeGroupVersion)
54+
return nil
55+
})
5256
}

apis/cluster/v1beta1/zz_generated.deepcopy.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apis/namespaced/v1alpha1/register.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
package v1alpha1
66

77
import (
8+
"k8s.io/apimachinery/pkg/runtime"
89
"k8s.io/apimachinery/pkg/runtime/schema"
9-
"sigs.k8s.io/controller-runtime/pkg/scheme"
1010
)
1111

1212
// Package type metadata.
@@ -20,5 +20,5 @@ var (
2020
SchemeGroupVersion = schema.GroupVersion{Group: Group, Version: Version}
2121

2222
// SchemeBuilder is used to add go types to the GroupVersionKind scheme
23-
SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion}
23+
SchemeBuilder = runtime.NewSchemeBuilder()
2424
)

apis/namespaced/v1beta1/register.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ package v1beta1
77
import (
88
"reflect"
99

10+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
11+
"k8s.io/apimachinery/pkg/runtime"
1012
"k8s.io/apimachinery/pkg/runtime/schema"
11-
"sigs.k8s.io/controller-runtime/pkg/scheme"
1213
)
1314

1415
// Package type metadata.
@@ -22,7 +23,7 @@ var (
2223
SchemeGroupVersion = schema.GroupVersion{Group: Group, Version: Version}
2324

2425
// SchemeBuilder is used to add go types to the GroupVersionKind scheme
25-
SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion}
26+
SchemeBuilder = runtime.NewSchemeBuilder()
2627
)
2728

2829
// ProviderConfig type metadata.
@@ -55,7 +56,9 @@ var (
5556
)
5657

5758
func init() {
58-
SchemeBuilder.Register(&ProviderConfig{}, &ProviderConfigList{})
59-
SchemeBuilder.Register(&ClusterProviderConfig{}, &ClusterProviderConfigList{})
60-
SchemeBuilder.Register(&ProviderConfigUsage{}, &ProviderConfigUsageList{})
59+
SchemeBuilder.Register(func(s *runtime.Scheme) error {
60+
s.AddKnownTypes(SchemeGroupVersion, &ProviderConfig{}, &ProviderConfigList{}, &ClusterProviderConfig{}, &ClusterProviderConfigList{}, &ProviderConfigUsage{}, &ProviderConfigUsageList{})
61+
metav1.AddToGroupVersion(s, SchemeGroupVersion)
62+
return nil
63+
})
6164
}

apis/namespaced/v1beta1/zz_generated.deepcopy.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/provider/alertsmanagement/zz_main.go

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,15 @@ import (
3030
"google.golang.org/grpc"
3131
"google.golang.org/grpc/credentials/insecure"
3232
authv1 "k8s.io/api/authorization/v1"
33+
corev1 "k8s.io/api/core/v1"
3334
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
35+
"k8s.io/apimachinery/pkg/runtime"
3436
"k8s.io/apimachinery/pkg/runtime/schema"
37+
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
3538
"k8s.io/client-go/tools/leaderelection/resourcelock"
3639
ctrl "sigs.k8s.io/controller-runtime"
3740
"sigs.k8s.io/controller-runtime/pkg/cache"
41+
"sigs.k8s.io/controller-runtime/pkg/client"
3842
"sigs.k8s.io/controller-runtime/pkg/log/zap"
3943
"sigs.k8s.io/controller-runtime/pkg/manager"
4044
"sigs.k8s.io/controller-runtime/pkg/metrics"
@@ -83,6 +87,7 @@ func main() { //nolint:gocyclo // easier to follow as a unit
8387

8488
enableManagementPolicies = app.Flag("enable-management-policies", "Enable support for Management Policies.").Default("true").Envar("ENABLE_MANAGEMENT_POLICIES").Bool()
8589
enableChangeLogs = app.Flag("enable-changelogs", "Enable support for capturing change logs during reconciliation.").Default("false").Envar("ENABLE_CHANGE_LOGS").Bool()
90+
enableSecretCache = app.Flag("enable-secret-cache", "Enable caching for Secrets. Disabling this can reduce memory usage at the cost of additional API server load.").Default("true").Envar("ENABLE_SECRET_CACHE").Bool()
8691

8792
certsDirSet = false
8893
// we record whether the command-line option "--certs-dir" was supplied
@@ -136,11 +141,41 @@ func main() { //nolint:gocyclo // easier to follow as a unit
136141
}
137142
}
138143

144+
scheme := runtime.NewScheme()
145+
kingpin.FatalIfError(clientgoscheme.AddToScheme(scheme), "Cannot add client-go APIs to scheme")
146+
kingpin.FatalIfError(clusterapis.AddToScheme(scheme), "Cannot add cluster-scoped Azure APIs to scheme")
147+
kingpin.FatalIfError(resolverapis.BuildScheme(clusterapis.AddToSchemes), "Cannot register the cluster-scoped Azure APIs with the API resolver's runtime scheme")
148+
kingpin.FatalIfError(namespacedapis.AddToScheme(scheme), "Cannot add namespace-scoped Azure APIs to scheme")
149+
kingpin.FatalIfError(resolverapis.BuildScheme(namespacedapis.AddToSchemes), "Cannot register the namespace-scoped Azure APIs with the API resolver's runtime scheme")
150+
kingpin.FatalIfError(apiextensionsv1.AddToScheme(scheme), "Cannot add api-extensions APIs to scheme")
151+
152+
// Secret caching is enabled by default. Disabling it trades API server
153+
// load for lower provider memory usage.
154+
var clientOpts client.Options
155+
if !*enableSecretCache {
156+
clientOpts = client.Options{
157+
Cache: &client.CacheOptions{
158+
DisableFor: []client.Object{&corev1.Secret{}},
159+
},
160+
}
161+
}
162+
139163
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
164+
Scheme: scheme,
165+
Client: clientOpts,
140166
LeaderElection: *leaderElection,
141167
LeaderElectionID: "crossplane-leader-election-provider-azure-alertsmanagement",
142168
Cache: cache.Options{
143169
SyncPeriod: syncInterval,
170+
ByObject: map[client.Object]cache.ByObject{
171+
&apiextensionsv1.CustomResourceDefinition{}: {
172+
// CRD OpenAPI schemas are large and unused by the
173+
// provider once a CRD is established; stripping them
174+
// from the informer cache substantially reduces memory
175+
// usage.
176+
Transform: customresourcesgate.TransformStripCRDSchema,
177+
},
178+
},
144179
},
145180
Metrics: metricsserver.Options{
146181
BindAddress: *metricsBindAddress,
@@ -160,12 +195,6 @@ func main() { //nolint:gocyclo // easier to follow as a unit
160195
kingpin.FatalIfError(mgr.AddReadyzCheck("webhook", mgr.GetWebhookServer().StartedChecker()), "Cannot add webhook server readyz checker to controller manager")
161196
}
162197

163-
kingpin.FatalIfError(clusterapis.AddToScheme(mgr.GetScheme()), "Cannot add cluster-scoped Azure APIs to scheme")
164-
kingpin.FatalIfError(resolverapis.BuildScheme(clusterapis.AddToSchemes), "Cannot register the cluster-scoped Azure APIs with the API resolver's runtime scheme")
165-
kingpin.FatalIfError(namespacedapis.AddToScheme(mgr.GetScheme()), "Cannot add namespace-scoped Azure APIs to scheme")
166-
kingpin.FatalIfError(resolverapis.BuildScheme(namespacedapis.AddToSchemes), "Cannot register the namespace-scoped Azure APIs with the API resolver's runtime scheme")
167-
kingpin.FatalIfError(apiextensionsv1.AddToScheme(mgr.GetScheme()), "Cannot add api-extensions APIs to scheme")
168-
169198
metricRecorder := managed.NewMRMetricRecorder()
170199
stateMetrics := statemetrics.NewMRStateMetrics()
171200

cmd/provider/analysisservices/zz_main.go

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,15 @@ import (
3030
"google.golang.org/grpc"
3131
"google.golang.org/grpc/credentials/insecure"
3232
authv1 "k8s.io/api/authorization/v1"
33+
corev1 "k8s.io/api/core/v1"
3334
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
35+
"k8s.io/apimachinery/pkg/runtime"
3436
"k8s.io/apimachinery/pkg/runtime/schema"
37+
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
3538
"k8s.io/client-go/tools/leaderelection/resourcelock"
3639
ctrl "sigs.k8s.io/controller-runtime"
3740
"sigs.k8s.io/controller-runtime/pkg/cache"
41+
"sigs.k8s.io/controller-runtime/pkg/client"
3842
"sigs.k8s.io/controller-runtime/pkg/log/zap"
3943
"sigs.k8s.io/controller-runtime/pkg/manager"
4044
"sigs.k8s.io/controller-runtime/pkg/metrics"
@@ -83,6 +87,7 @@ func main() { //nolint:gocyclo // easier to follow as a unit
8387

8488
enableManagementPolicies = app.Flag("enable-management-policies", "Enable support for Management Policies.").Default("true").Envar("ENABLE_MANAGEMENT_POLICIES").Bool()
8589
enableChangeLogs = app.Flag("enable-changelogs", "Enable support for capturing change logs during reconciliation.").Default("false").Envar("ENABLE_CHANGE_LOGS").Bool()
90+
enableSecretCache = app.Flag("enable-secret-cache", "Enable caching for Secrets. Disabling this can reduce memory usage at the cost of additional API server load.").Default("true").Envar("ENABLE_SECRET_CACHE").Bool()
8691

8792
certsDirSet = false
8893
// we record whether the command-line option "--certs-dir" was supplied
@@ -136,11 +141,41 @@ func main() { //nolint:gocyclo // easier to follow as a unit
136141
}
137142
}
138143

144+
scheme := runtime.NewScheme()
145+
kingpin.FatalIfError(clientgoscheme.AddToScheme(scheme), "Cannot add client-go APIs to scheme")
146+
kingpin.FatalIfError(clusterapis.AddToScheme(scheme), "Cannot add cluster-scoped Azure APIs to scheme")
147+
kingpin.FatalIfError(resolverapis.BuildScheme(clusterapis.AddToSchemes), "Cannot register the cluster-scoped Azure APIs with the API resolver's runtime scheme")
148+
kingpin.FatalIfError(namespacedapis.AddToScheme(scheme), "Cannot add namespace-scoped Azure APIs to scheme")
149+
kingpin.FatalIfError(resolverapis.BuildScheme(namespacedapis.AddToSchemes), "Cannot register the namespace-scoped Azure APIs with the API resolver's runtime scheme")
150+
kingpin.FatalIfError(apiextensionsv1.AddToScheme(scheme), "Cannot add api-extensions APIs to scheme")
151+
152+
// Secret caching is enabled by default. Disabling it trades API server
153+
// load for lower provider memory usage.
154+
var clientOpts client.Options
155+
if !*enableSecretCache {
156+
clientOpts = client.Options{
157+
Cache: &client.CacheOptions{
158+
DisableFor: []client.Object{&corev1.Secret{}},
159+
},
160+
}
161+
}
162+
139163
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
164+
Scheme: scheme,
165+
Client: clientOpts,
140166
LeaderElection: *leaderElection,
141167
LeaderElectionID: "crossplane-leader-election-provider-azure-analysisservices",
142168
Cache: cache.Options{
143169
SyncPeriod: syncInterval,
170+
ByObject: map[client.Object]cache.ByObject{
171+
&apiextensionsv1.CustomResourceDefinition{}: {
172+
// CRD OpenAPI schemas are large and unused by the
173+
// provider once a CRD is established; stripping them
174+
// from the informer cache substantially reduces memory
175+
// usage.
176+
Transform: customresourcesgate.TransformStripCRDSchema,
177+
},
178+
},
144179
},
145180
Metrics: metricsserver.Options{
146181
BindAddress: *metricsBindAddress,
@@ -160,12 +195,6 @@ func main() { //nolint:gocyclo // easier to follow as a unit
160195
kingpin.FatalIfError(mgr.AddReadyzCheck("webhook", mgr.GetWebhookServer().StartedChecker()), "Cannot add webhook server readyz checker to controller manager")
161196
}
162197

163-
kingpin.FatalIfError(clusterapis.AddToScheme(mgr.GetScheme()), "Cannot add cluster-scoped Azure APIs to scheme")
164-
kingpin.FatalIfError(resolverapis.BuildScheme(clusterapis.AddToSchemes), "Cannot register the cluster-scoped Azure APIs with the API resolver's runtime scheme")
165-
kingpin.FatalIfError(namespacedapis.AddToScheme(mgr.GetScheme()), "Cannot add namespace-scoped Azure APIs to scheme")
166-
kingpin.FatalIfError(resolverapis.BuildScheme(namespacedapis.AddToSchemes), "Cannot register the namespace-scoped Azure APIs with the API resolver's runtime scheme")
167-
kingpin.FatalIfError(apiextensionsv1.AddToScheme(mgr.GetScheme()), "Cannot add api-extensions APIs to scheme")
168-
169198
metricRecorder := managed.NewMRMetricRecorder()
170199
stateMetrics := statemetrics.NewMRStateMetrics()
171200

cmd/provider/apimanagement/zz_main.go

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,15 @@ import (
3030
"google.golang.org/grpc"
3131
"google.golang.org/grpc/credentials/insecure"
3232
authv1 "k8s.io/api/authorization/v1"
33+
corev1 "k8s.io/api/core/v1"
3334
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
35+
"k8s.io/apimachinery/pkg/runtime"
3436
"k8s.io/apimachinery/pkg/runtime/schema"
37+
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
3538
"k8s.io/client-go/tools/leaderelection/resourcelock"
3639
ctrl "sigs.k8s.io/controller-runtime"
3740
"sigs.k8s.io/controller-runtime/pkg/cache"
41+
"sigs.k8s.io/controller-runtime/pkg/client"
3842
"sigs.k8s.io/controller-runtime/pkg/log/zap"
3943
"sigs.k8s.io/controller-runtime/pkg/manager"
4044
"sigs.k8s.io/controller-runtime/pkg/metrics"
@@ -83,6 +87,7 @@ func main() { //nolint:gocyclo // easier to follow as a unit
8387

8488
enableManagementPolicies = app.Flag("enable-management-policies", "Enable support for Management Policies.").Default("true").Envar("ENABLE_MANAGEMENT_POLICIES").Bool()
8589
enableChangeLogs = app.Flag("enable-changelogs", "Enable support for capturing change logs during reconciliation.").Default("false").Envar("ENABLE_CHANGE_LOGS").Bool()
90+
enableSecretCache = app.Flag("enable-secret-cache", "Enable caching for Secrets. Disabling this can reduce memory usage at the cost of additional API server load.").Default("true").Envar("ENABLE_SECRET_CACHE").Bool()
8691

8792
certsDirSet = false
8893
// we record whether the command-line option "--certs-dir" was supplied
@@ -136,11 +141,41 @@ func main() { //nolint:gocyclo // easier to follow as a unit
136141
}
137142
}
138143

144+
scheme := runtime.NewScheme()
145+
kingpin.FatalIfError(clientgoscheme.AddToScheme(scheme), "Cannot add client-go APIs to scheme")
146+
kingpin.FatalIfError(clusterapis.AddToScheme(scheme), "Cannot add cluster-scoped Azure APIs to scheme")
147+
kingpin.FatalIfError(resolverapis.BuildScheme(clusterapis.AddToSchemes), "Cannot register the cluster-scoped Azure APIs with the API resolver's runtime scheme")
148+
kingpin.FatalIfError(namespacedapis.AddToScheme(scheme), "Cannot add namespace-scoped Azure APIs to scheme")
149+
kingpin.FatalIfError(resolverapis.BuildScheme(namespacedapis.AddToSchemes), "Cannot register the namespace-scoped Azure APIs with the API resolver's runtime scheme")
150+
kingpin.FatalIfError(apiextensionsv1.AddToScheme(scheme), "Cannot add api-extensions APIs to scheme")
151+
152+
// Secret caching is enabled by default. Disabling it trades API server
153+
// load for lower provider memory usage.
154+
var clientOpts client.Options
155+
if !*enableSecretCache {
156+
clientOpts = client.Options{
157+
Cache: &client.CacheOptions{
158+
DisableFor: []client.Object{&corev1.Secret{}},
159+
},
160+
}
161+
}
162+
139163
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
164+
Scheme: scheme,
165+
Client: clientOpts,
140166
LeaderElection: *leaderElection,
141167
LeaderElectionID: "crossplane-leader-election-provider-azure-apimanagement",
142168
Cache: cache.Options{
143169
SyncPeriod: syncInterval,
170+
ByObject: map[client.Object]cache.ByObject{
171+
&apiextensionsv1.CustomResourceDefinition{}: {
172+
// CRD OpenAPI schemas are large and unused by the
173+
// provider once a CRD is established; stripping them
174+
// from the informer cache substantially reduces memory
175+
// usage.
176+
Transform: customresourcesgate.TransformStripCRDSchema,
177+
},
178+
},
144179
},
145180
Metrics: metricsserver.Options{
146181
BindAddress: *metricsBindAddress,
@@ -160,12 +195,6 @@ func main() { //nolint:gocyclo // easier to follow as a unit
160195
kingpin.FatalIfError(mgr.AddReadyzCheck("webhook", mgr.GetWebhookServer().StartedChecker()), "Cannot add webhook server readyz checker to controller manager")
161196
}
162197

163-
kingpin.FatalIfError(clusterapis.AddToScheme(mgr.GetScheme()), "Cannot add cluster-scoped Azure APIs to scheme")
164-
kingpin.FatalIfError(resolverapis.BuildScheme(clusterapis.AddToSchemes), "Cannot register the cluster-scoped Azure APIs with the API resolver's runtime scheme")
165-
kingpin.FatalIfError(namespacedapis.AddToScheme(mgr.GetScheme()), "Cannot add namespace-scoped Azure APIs to scheme")
166-
kingpin.FatalIfError(resolverapis.BuildScheme(namespacedapis.AddToSchemes), "Cannot register the namespace-scoped Azure APIs with the API resolver's runtime scheme")
167-
kingpin.FatalIfError(apiextensionsv1.AddToScheme(mgr.GetScheme()), "Cannot add api-extensions APIs to scheme")
168-
169198
metricRecorder := managed.NewMRMetricRecorder()
170199
stateMetrics := statemetrics.NewMRStateMetrics()
171200

0 commit comments

Comments
 (0)