Skip to content

Commit a02aa1b

Browse files
authored
Merge pull request #2208 from jonasz-lasut/xp-runtime-2.4
Update to crossplane-runtime v2.4.0
2 parents a370545 + b9e20fb commit a02aa1b

187 files changed

Lines changed: 6439 additions & 1246 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.
@@ -52,7 +53,9 @@ var (
5253
)
5354

5455
func init() {
55-
SchemeBuilder.Register(&ProviderConfig{}, &ProviderConfigList{})
56-
SchemeBuilder.Register(&ClusterProviderConfig{}, &ClusterProviderConfigList{})
57-
SchemeBuilder.Register(&ProviderConfigUsage{}, &ProviderConfigUsageList{})
56+
SchemeBuilder.Register(func(s *runtime.Scheme) error {
57+
s.AddKnownTypes(SchemeGroupVersion, &ProviderConfig{}, &ProviderConfigList{}, &ClusterProviderConfig{}, &ClusterProviderConfigList{}, &ProviderConfigUsage{}, &ProviderConfigUsageList{})
58+
metav1.AddToGroupVersion(s, SchemeGroupVersion)
59+
return nil
60+
})
5861
}

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/accessanalyzer/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"
@@ -92,6 +96,7 @@ func main() { //nolint:gocyclo // easier to follow as a unit
9296

9397
enableManagementPolicies = app.Flag("enable-management-policies", "Enable support for Management Policies.").Default("true").Envar("ENABLE_MANAGEMENT_POLICIES").Bool()
9498
enableChangeLogs = app.Flag("enable-changelogs", "Enable support for capturing change logs during reconciliation.").Default("false").Envar("ENABLE_CHANGE_LOGS").Bool()
99+
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()
95100

96101
certsDirSet = false
97102
// we record whether the command-line option "--certs-dir" was supplied
@@ -151,11 +156,41 @@ func main() { //nolint:gocyclo // easier to follow as a unit
151156
}
152157
}
153158

159+
scheme := runtime.NewScheme()
160+
kingpin.FatalIfError(clientgoscheme.AddToScheme(scheme), "Cannot add client-go APIs to scheme")
161+
kingpin.FatalIfError(clusterapis.AddToScheme(scheme), "Cannot add cluster scoped AWS APIs to scheme")
162+
kingpin.FatalIfError(resolverapis.BuildScheme(clusterapis.AddToSchemes), "Cannot register cluster scoped AWS APIs with the API resolver's runtime scheme")
163+
kingpin.FatalIfError(namespacedapis.AddToScheme(scheme), "Cannot add namespaced AWS APIs to scheme")
164+
kingpin.FatalIfError(resolverapis.BuildScheme(namespacedapis.AddToSchemes), "Cannot register namespaced AWS APIs with the API resolver's runtime scheme")
165+
kingpin.FatalIfError(apiextensionsv1.AddToScheme(scheme), "Cannot add api-extensions APIs to scheme")
166+
167+
// Secret caching is enabled by default. Disabling it trades API server
168+
// load for lower provider memory usage.
169+
var clientOpts client.Options
170+
if !*enableSecretCache {
171+
clientOpts = client.Options{
172+
Cache: &client.CacheOptions{
173+
DisableFor: []client.Object{&corev1.Secret{}},
174+
},
175+
}
176+
}
177+
154178
mgr, err := ctrl.NewManager(ratelimiter.LimitRESTConfig(cfg, *maxReconcileRate), ctrl.Options{
179+
Scheme: scheme,
180+
Client: clientOpts,
155181
LeaderElection: *leaderElection,
156182
LeaderElectionID: "crossplane-leader-election-provider-aws-accessanalyzer",
157183
Cache: cache.Options{
158184
SyncPeriod: syncInterval,
185+
ByObject: map[client.Object]cache.ByObject{
186+
&apiextensionsv1.CustomResourceDefinition{}: {
187+
// CRD OpenAPI schemas are large and unused by the
188+
// provider once a CRD is established; stripping them
189+
// from the informer cache substantially reduces memory
190+
// usage.
191+
Transform: customresourcesgate.TransformStripCRDSchema,
192+
},
193+
},
159194
},
160195
Metrics: metricsserver.Options{
161196
BindAddress: *metricsBindAddress,
@@ -175,12 +210,6 @@ func main() { //nolint:gocyclo // easier to follow as a unit
175210
kingpin.FatalIfError(mgr.AddReadyzCheck("webhook", mgr.GetWebhookServer().StartedChecker()), "Cannot add webhook server readyz checker to controller manager")
176211
}
177212

178-
kingpin.FatalIfError(clusterapis.AddToScheme(mgr.GetScheme()), "Cannot add cluster scoped AWS APIs to scheme")
179-
kingpin.FatalIfError(resolverapis.BuildScheme(clusterapis.AddToSchemes), "Cannot register cluster scoped AWS APIs with the API resolver's runtime scheme")
180-
kingpin.FatalIfError(namespacedapis.AddToScheme(mgr.GetScheme()), "Cannot add namespaced AWS APIs to scheme")
181-
kingpin.FatalIfError(resolverapis.BuildScheme(namespacedapis.AddToSchemes), "Cannot register namespaced AWS APIs with the API resolver's runtime scheme")
182-
kingpin.FatalIfError(apiextensionsv1.AddToScheme(mgr.GetScheme()), "Cannot add api-extensions APIs to scheme")
183-
184213
metricRecorder := managed.NewMRMetricRecorder()
185214
stateMetrics := statemetrics.NewMRStateMetrics()
186215

cmd/provider/account/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"
@@ -92,6 +96,7 @@ func main() { //nolint:gocyclo // easier to follow as a unit
9296

9397
enableManagementPolicies = app.Flag("enable-management-policies", "Enable support for Management Policies.").Default("true").Envar("ENABLE_MANAGEMENT_POLICIES").Bool()
9498
enableChangeLogs = app.Flag("enable-changelogs", "Enable support for capturing change logs during reconciliation.").Default("false").Envar("ENABLE_CHANGE_LOGS").Bool()
99+
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()
95100

96101
certsDirSet = false
97102
// we record whether the command-line option "--certs-dir" was supplied
@@ -151,11 +156,41 @@ func main() { //nolint:gocyclo // easier to follow as a unit
151156
}
152157
}
153158

159+
scheme := runtime.NewScheme()
160+
kingpin.FatalIfError(clientgoscheme.AddToScheme(scheme), "Cannot add client-go APIs to scheme")
161+
kingpin.FatalIfError(clusterapis.AddToScheme(scheme), "Cannot add cluster scoped AWS APIs to scheme")
162+
kingpin.FatalIfError(resolverapis.BuildScheme(clusterapis.AddToSchemes), "Cannot register cluster scoped AWS APIs with the API resolver's runtime scheme")
163+
kingpin.FatalIfError(namespacedapis.AddToScheme(scheme), "Cannot add namespaced AWS APIs to scheme")
164+
kingpin.FatalIfError(resolverapis.BuildScheme(namespacedapis.AddToSchemes), "Cannot register namespaced AWS APIs with the API resolver's runtime scheme")
165+
kingpin.FatalIfError(apiextensionsv1.AddToScheme(scheme), "Cannot add api-extensions APIs to scheme")
166+
167+
// Secret caching is enabled by default. Disabling it trades API server
168+
// load for lower provider memory usage.
169+
var clientOpts client.Options
170+
if !*enableSecretCache {
171+
clientOpts = client.Options{
172+
Cache: &client.CacheOptions{
173+
DisableFor: []client.Object{&corev1.Secret{}},
174+
},
175+
}
176+
}
177+
154178
mgr, err := ctrl.NewManager(ratelimiter.LimitRESTConfig(cfg, *maxReconcileRate), ctrl.Options{
179+
Scheme: scheme,
180+
Client: clientOpts,
155181
LeaderElection: *leaderElection,
156182
LeaderElectionID: "crossplane-leader-election-provider-aws-account",
157183
Cache: cache.Options{
158184
SyncPeriod: syncInterval,
185+
ByObject: map[client.Object]cache.ByObject{
186+
&apiextensionsv1.CustomResourceDefinition{}: {
187+
// CRD OpenAPI schemas are large and unused by the
188+
// provider once a CRD is established; stripping them
189+
// from the informer cache substantially reduces memory
190+
// usage.
191+
Transform: customresourcesgate.TransformStripCRDSchema,
192+
},
193+
},
159194
},
160195
Metrics: metricsserver.Options{
161196
BindAddress: *metricsBindAddress,
@@ -175,12 +210,6 @@ func main() { //nolint:gocyclo // easier to follow as a unit
175210
kingpin.FatalIfError(mgr.AddReadyzCheck("webhook", mgr.GetWebhookServer().StartedChecker()), "Cannot add webhook server readyz checker to controller manager")
176211
}
177212

178-
kingpin.FatalIfError(clusterapis.AddToScheme(mgr.GetScheme()), "Cannot add cluster scoped AWS APIs to scheme")
179-
kingpin.FatalIfError(resolverapis.BuildScheme(clusterapis.AddToSchemes), "Cannot register cluster scoped AWS APIs with the API resolver's runtime scheme")
180-
kingpin.FatalIfError(namespacedapis.AddToScheme(mgr.GetScheme()), "Cannot add namespaced AWS APIs to scheme")
181-
kingpin.FatalIfError(resolverapis.BuildScheme(namespacedapis.AddToSchemes), "Cannot register namespaced AWS APIs with the API resolver's runtime scheme")
182-
kingpin.FatalIfError(apiextensionsv1.AddToScheme(mgr.GetScheme()), "Cannot add api-extensions APIs to scheme")
183-
184213
metricRecorder := managed.NewMRMetricRecorder()
185214
stateMetrics := statemetrics.NewMRStateMetrics()
186215

cmd/provider/acm/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"
@@ -92,6 +96,7 @@ func main() { //nolint:gocyclo // easier to follow as a unit
9296

9397
enableManagementPolicies = app.Flag("enable-management-policies", "Enable support for Management Policies.").Default("true").Envar("ENABLE_MANAGEMENT_POLICIES").Bool()
9498
enableChangeLogs = app.Flag("enable-changelogs", "Enable support for capturing change logs during reconciliation.").Default("false").Envar("ENABLE_CHANGE_LOGS").Bool()
99+
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()
95100

96101
certsDirSet = false
97102
// we record whether the command-line option "--certs-dir" was supplied
@@ -151,11 +156,41 @@ func main() { //nolint:gocyclo // easier to follow as a unit
151156
}
152157
}
153158

159+
scheme := runtime.NewScheme()
160+
kingpin.FatalIfError(clientgoscheme.AddToScheme(scheme), "Cannot add client-go APIs to scheme")
161+
kingpin.FatalIfError(clusterapis.AddToScheme(scheme), "Cannot add cluster scoped AWS APIs to scheme")
162+
kingpin.FatalIfError(resolverapis.BuildScheme(clusterapis.AddToSchemes), "Cannot register cluster scoped AWS APIs with the API resolver's runtime scheme")
163+
kingpin.FatalIfError(namespacedapis.AddToScheme(scheme), "Cannot add namespaced AWS APIs to scheme")
164+
kingpin.FatalIfError(resolverapis.BuildScheme(namespacedapis.AddToSchemes), "Cannot register namespaced AWS APIs with the API resolver's runtime scheme")
165+
kingpin.FatalIfError(apiextensionsv1.AddToScheme(scheme), "Cannot add api-extensions APIs to scheme")
166+
167+
// Secret caching is enabled by default. Disabling it trades API server
168+
// load for lower provider memory usage.
169+
var clientOpts client.Options
170+
if !*enableSecretCache {
171+
clientOpts = client.Options{
172+
Cache: &client.CacheOptions{
173+
DisableFor: []client.Object{&corev1.Secret{}},
174+
},
175+
}
176+
}
177+
154178
mgr, err := ctrl.NewManager(ratelimiter.LimitRESTConfig(cfg, *maxReconcileRate), ctrl.Options{
179+
Scheme: scheme,
180+
Client: clientOpts,
155181
LeaderElection: *leaderElection,
156182
LeaderElectionID: "crossplane-leader-election-provider-aws-acm",
157183
Cache: cache.Options{
158184
SyncPeriod: syncInterval,
185+
ByObject: map[client.Object]cache.ByObject{
186+
&apiextensionsv1.CustomResourceDefinition{}: {
187+
// CRD OpenAPI schemas are large and unused by the
188+
// provider once a CRD is established; stripping them
189+
// from the informer cache substantially reduces memory
190+
// usage.
191+
Transform: customresourcesgate.TransformStripCRDSchema,
192+
},
193+
},
159194
},
160195
Metrics: metricsserver.Options{
161196
BindAddress: *metricsBindAddress,
@@ -175,12 +210,6 @@ func main() { //nolint:gocyclo // easier to follow as a unit
175210
kingpin.FatalIfError(mgr.AddReadyzCheck("webhook", mgr.GetWebhookServer().StartedChecker()), "Cannot add webhook server readyz checker to controller manager")
176211
}
177212

178-
kingpin.FatalIfError(clusterapis.AddToScheme(mgr.GetScheme()), "Cannot add cluster scoped AWS APIs to scheme")
179-
kingpin.FatalIfError(resolverapis.BuildScheme(clusterapis.AddToSchemes), "Cannot register cluster scoped AWS APIs with the API resolver's runtime scheme")
180-
kingpin.FatalIfError(namespacedapis.AddToScheme(mgr.GetScheme()), "Cannot add namespaced AWS APIs to scheme")
181-
kingpin.FatalIfError(resolverapis.BuildScheme(namespacedapis.AddToSchemes), "Cannot register namespaced AWS APIs with the API resolver's runtime scheme")
182-
kingpin.FatalIfError(apiextensionsv1.AddToScheme(mgr.GetScheme()), "Cannot add api-extensions APIs to scheme")
183-
184213
metricRecorder := managed.NewMRMetricRecorder()
185214
stateMetrics := statemetrics.NewMRStateMetrics()
186215

0 commit comments

Comments
 (0)