diff --git a/cmd/provider/main.go b/cmd/provider/main.go index 55fd42e7..9d1caf0e 100644 --- a/cmd/provider/main.go +++ b/cmd/provider/main.go @@ -27,6 +27,7 @@ import ( "github.com/alecthomas/kingpin/v2" "github.com/go-logr/logr" + corev1 "k8s.io/api/core/v1" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" clientgoscheme "k8s.io/client-go/kubernetes/scheme" ctrl "sigs.k8s.io/controller-runtime" @@ -58,6 +59,7 @@ func main() { enableManagementPolicies = app.Flag("enable-management-policies", "Enable/disable support for Management Policies.").Default("true").Envar("ENABLE_MANAGEMENT_POLICIES").Bool() pollStateMetricInterval = app.Flag("poll-state-metric", "State metric recording interval.").Default("5s").Duration() metricsBindAddress = app.Flag("metrics-bind-address", "The address the metrics endpoint binds to.").Default(":8080").String() + enableSecretCache = app.Flag("enable-secret-cache", "Cache Secrets in memory. Disable to read Secrets directly from the API server, trading API requests for a smaller memory footprint.").Default("true").Envar("ENABLE_SECRET_CACHE").Bool() ) kingpin.MustParse(app.Parse(os.Args[1:])) @@ -85,12 +87,19 @@ func main() { kingpin.FatalIfError(apis.AddToScheme(scheme), "Cannot add SQL APIs to scheme") kingpin.FatalIfError(apiextensionsv1.AddToScheme(scheme), "Cannot register k8s apiextensions APIs to scheme") + var clientOpts ctrlclient.Options + if !*enableSecretCache { + clientOpts.Cache = &ctrlclient.CacheOptions{DisableFor: []ctrlclient.Object{&corev1.Secret{}}} + } + mgr, err := ctrl.NewManager(cfg, ctrl.Options{ Scheme: scheme, + Client: clientOpts, LeaderElection: *leaderElection, LeaderElectionID: "crossplane-leader-election-provider-sql", Cache: cache.Options{ - SyncPeriod: syncPeriod, + SyncPeriod: syncPeriod, + DefaultTransform: cache.TransformStripManagedFields(), ByObject: map[ctrlclient.Object]cache.ByObject{ &apiextensionsv1.CustomResourceDefinition{}: { Transform: customresourcesgate.TransformStripCRDSchema, diff --git a/pkg/controller/cluster/mssql/database/reconciler.go b/pkg/controller/cluster/mssql/database/reconciler.go index a59a3cc6..d552d494 100644 --- a/pkg/controller/cluster/mssql/database/reconciler.go +++ b/pkg/controller/cluster/mssql/database/reconciler.go @@ -64,6 +64,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newClient: mssql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/cluster/mssql/grant/reconciler.go b/pkg/controller/cluster/mssql/grant/reconciler.go index 8184d51e..2b3540ee 100644 --- a/pkg/controller/cluster/mssql/grant/reconciler.go +++ b/pkg/controller/cluster/mssql/grant/reconciler.go @@ -64,6 +64,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newClient: mssql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithReferenceResolver(managed.NewAPISimpleReferenceResolver(mgr.GetClient())), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), diff --git a/pkg/controller/cluster/mssql/user/reconciler.go b/pkg/controller/cluster/mssql/user/reconciler.go index e83f8c47..816566d7 100644 --- a/pkg/controller/cluster/mssql/user/reconciler.go +++ b/pkg/controller/cluster/mssql/user/reconciler.go @@ -72,6 +72,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newClient: mssql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/cluster/mysql/database/reconciler.go b/pkg/controller/cluster/mysql/database/reconciler.go index 5d353b3b..6eada998 100644 --- a/pkg/controller/cluster/mysql/database/reconciler.go +++ b/pkg/controller/cluster/mysql/database/reconciler.go @@ -64,6 +64,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newDB: mysql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/cluster/mysql/grant/reconciler.go b/pkg/controller/cluster/mysql/grant/reconciler.go index 9c358aa4..fe4c5a79 100644 --- a/pkg/controller/cluster/mysql/grant/reconciler.go +++ b/pkg/controller/cluster/mysql/grant/reconciler.go @@ -72,6 +72,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newDB: mysql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithReferenceResolver(managed.NewAPISimpleReferenceResolver(mgr.GetClient())), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), diff --git a/pkg/controller/cluster/mysql/user/reconciler.go b/pkg/controller/cluster/mysql/user/reconciler.go index 93b46d2f..8a65fe08 100644 --- a/pkg/controller/cluster/mysql/user/reconciler.go +++ b/pkg/controller/cluster/mysql/user/reconciler.go @@ -68,6 +68,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newDB: mysql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/cluster/postgresql/database/reconciler.go b/pkg/controller/cluster/postgresql/database/reconciler.go index 362d7de7..084bd905 100644 --- a/pkg/controller/cluster/postgresql/database/reconciler.go +++ b/pkg/controller/cluster/postgresql/database/reconciler.go @@ -72,6 +72,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newDB: postgresql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/cluster/postgresql/default_privileges/reconciler.go b/pkg/controller/cluster/postgresql/default_privileges/reconciler.go index 004ab438..87da44e6 100644 --- a/pkg/controller/cluster/postgresql/default_privileges/reconciler.go +++ b/pkg/controller/cluster/postgresql/default_privileges/reconciler.go @@ -70,6 +70,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newDB: postgresql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/cluster/postgresql/extension/reconciler.go b/pkg/controller/cluster/postgresql/extension/reconciler.go index e76665bd..80e1446c 100644 --- a/pkg/controller/cluster/postgresql/extension/reconciler.go +++ b/pkg/controller/cluster/postgresql/extension/reconciler.go @@ -62,6 +62,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newDB: postgresql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/cluster/postgresql/grant/reconciler.go b/pkg/controller/cluster/postgresql/grant/reconciler.go index de5948f6..be1c3dff 100644 --- a/pkg/controller/cluster/postgresql/grant/reconciler.go +++ b/pkg/controller/cluster/postgresql/grant/reconciler.go @@ -1177,6 +1177,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), log: o.Logger.WithValues("controller", name), track: t.Track, newDB: postgresql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/cluster/postgresql/role/reconciler.go b/pkg/controller/cluster/postgresql/role/reconciler.go index 5528967d..3e7e1f5b 100644 --- a/pkg/controller/cluster/postgresql/role/reconciler.go +++ b/pkg/controller/cluster/postgresql/role/reconciler.go @@ -74,6 +74,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), apiReader: mgr.GetAPIReader(), track: t.Track, newDB: postgresql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/cluster/postgresql/schema/reconciler.go b/pkg/controller/cluster/postgresql/schema/reconciler.go index 7d616c9c..e6a47b97 100644 --- a/pkg/controller/cluster/postgresql/schema/reconciler.go +++ b/pkg/controller/cluster/postgresql/schema/reconciler.go @@ -66,6 +66,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newDB: postgresql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/namespaced/mssql/database/reconciler.go b/pkg/controller/namespaced/mssql/database/reconciler.go index d5f66622..737ddded 100644 --- a/pkg/controller/namespaced/mssql/database/reconciler.go +++ b/pkg/controller/namespaced/mssql/database/reconciler.go @@ -58,6 +58,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newClient: mssql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/namespaced/mssql/grant/reconciler.go b/pkg/controller/namespaced/mssql/grant/reconciler.go index a2095af7..e2a4812b 100644 --- a/pkg/controller/namespaced/mssql/grant/reconciler.go +++ b/pkg/controller/namespaced/mssql/grant/reconciler.go @@ -60,6 +60,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newClient: mssql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithReferenceResolver(managed.NewAPISimpleReferenceResolver(mgr.GetClient())), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), diff --git a/pkg/controller/namespaced/mssql/user/reconciler.go b/pkg/controller/namespaced/mssql/user/reconciler.go index 405a9cfd..f326d7ed 100644 --- a/pkg/controller/namespaced/mssql/user/reconciler.go +++ b/pkg/controller/namespaced/mssql/user/reconciler.go @@ -68,6 +68,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newClient: mssql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/namespaced/mysql/database/reconciler.go b/pkg/controller/namespaced/mysql/database/reconciler.go index 5d356023..acc98078 100644 --- a/pkg/controller/namespaced/mysql/database/reconciler.go +++ b/pkg/controller/namespaced/mysql/database/reconciler.go @@ -60,6 +60,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newDB: mysql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/namespaced/mysql/grant/reconciler.go b/pkg/controller/namespaced/mysql/grant/reconciler.go index 38f892c2..d1774129 100644 --- a/pkg/controller/namespaced/mysql/grant/reconciler.go +++ b/pkg/controller/namespaced/mysql/grant/reconciler.go @@ -69,6 +69,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newDB: mysql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithReferenceResolver(managed.NewAPISimpleReferenceResolver(mgr.GetClient())), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), diff --git a/pkg/controller/namespaced/mysql/user/reconciler.go b/pkg/controller/namespaced/mysql/user/reconciler.go index 0ebdc073..c18bc23f 100644 --- a/pkg/controller/namespaced/mysql/user/reconciler.go +++ b/pkg/controller/namespaced/mysql/user/reconciler.go @@ -65,6 +65,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newDB: mysql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/namespaced/postgresql/database/reconciler.go b/pkg/controller/namespaced/postgresql/database/reconciler.go index cb57d912..ae71dcad 100644 --- a/pkg/controller/namespaced/postgresql/database/reconciler.go +++ b/pkg/controller/namespaced/postgresql/database/reconciler.go @@ -69,6 +69,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newDB: postgresql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/namespaced/postgresql/default_privileges/reconciler.go b/pkg/controller/namespaced/postgresql/default_privileges/reconciler.go index aea771e7..5d48a102 100644 --- a/pkg/controller/namespaced/postgresql/default_privileges/reconciler.go +++ b/pkg/controller/namespaced/postgresql/default_privileges/reconciler.go @@ -70,6 +70,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newDB: postgresql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/namespaced/postgresql/extension/reconciler.go b/pkg/controller/namespaced/postgresql/extension/reconciler.go index ab4cffec..bce546e5 100644 --- a/pkg/controller/namespaced/postgresql/extension/reconciler.go +++ b/pkg/controller/namespaced/postgresql/extension/reconciler.go @@ -59,6 +59,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newDB: postgresql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/namespaced/postgresql/grant/reconciler.go b/pkg/controller/namespaced/postgresql/grant/reconciler.go index 9148b8ef..f2df810e 100644 --- a/pkg/controller/namespaced/postgresql/grant/reconciler.go +++ b/pkg/controller/namespaced/postgresql/grant/reconciler.go @@ -1128,6 +1128,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), log: o.Logger.WithValues("controller", name), track: t.Track, newDB: postgresql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/namespaced/postgresql/role/reconciler.go b/pkg/controller/namespaced/postgresql/role/reconciler.go index 7f3b4044..2883876b 100644 --- a/pkg/controller/namespaced/postgresql/role/reconciler.go +++ b/pkg/controller/namespaced/postgresql/role/reconciler.go @@ -71,6 +71,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), apiReader: mgr.GetAPIReader(), track: t.Track, newDB: postgresql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), diff --git a/pkg/controller/namespaced/postgresql/schema/reconciler.go b/pkg/controller/namespaced/postgresql/schema/reconciler.go index 53766580..0bcce1a4 100644 --- a/pkg/controller/namespaced/postgresql/schema/reconciler.go +++ b/pkg/controller/namespaced/postgresql/schema/reconciler.go @@ -63,6 +63,7 @@ func Setup(mgr ctrl.Manager, o xpcontroller.Options) error { reconcilerOptions := []managed.ReconcilerOption{ managed.WithTypedExternalConnector(&connector{kube: mgr.GetClient(), track: t.Track, newDB: postgresql.New}), + managed.WithProviderConfigUsageCleaner(t), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithPollInterval(o.PollInterval), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))),