소스 검색

Merge pull request #729 from external-secrets/fix/disable-sec-cm-cache

feat: avoid caching secrets/configmaps
paul-the-alien[bot] 4 년 전
부모
커밋
4cca87b6d7
2개의 변경된 파일15개의 추가작업 그리고 2개의 파일을 삭제
  1. 13 1
      main.go
  2. 2 1
      pkg/controllers/externalsecret/externalsecret_controller.go

+ 13 - 1
main.go

@@ -20,10 +20,12 @@ import (
 	"time"
 
 	"go.uber.org/zap/zapcore"
+	v1 "k8s.io/api/core/v1"
 	"k8s.io/apimachinery/pkg/runtime"
 	clientgoscheme "k8s.io/client-go/kubernetes/scheme"
 	_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
 	ctrl "sigs.k8s.io/controller-runtime"
+	"sigs.k8s.io/controller-runtime/pkg/client"
 	"sigs.k8s.io/controller-runtime/pkg/controller"
 	"sigs.k8s.io/controller-runtime/pkg/log/zap"
 
@@ -78,7 +80,17 @@ func main() {
 		Port:               9443,
 		LeaderElection:     enableLeaderElection,
 		LeaderElectionID:   "external-secrets-controller",
-		Namespace:          namespace,
+		ClientDisableCacheFor: []client.Object{
+			// the client creates a ListWatch for all resource kinds that
+			// are requested with .Get().
+			// We want to avoid to cache all secrets or configmaps in memory.
+			// The ES controller uses v1.PartialObjectMetadata for the secrets
+			// that he owns.
+			// see #721
+			&v1.Secret{},
+			&v1.ConfigMap{},
+		},
+		Namespace: namespace,
 	})
 	if err != nil {
 		setupLog.Error(err, "unable to start manager")

+ 2 - 1
pkg/controllers/externalsecret/externalsecret_controller.go

@@ -29,6 +29,7 @@ import (
 	"k8s.io/apimachinery/pkg/types"
 	"k8s.io/client-go/tools/record"
 	ctrl "sigs.k8s.io/controller-runtime"
+	"sigs.k8s.io/controller-runtime/pkg/builder"
 	"sigs.k8s.io/controller-runtime/pkg/client"
 	"sigs.k8s.io/controller-runtime/pkg/controller"
 	"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
@@ -423,6 +424,6 @@ func (r *Reconciler) SetupWithManager(mgr ctrl.Manager, opts controller.Options)
 	return ctrl.NewControllerManagedBy(mgr).
 		WithOptions(opts).
 		For(&esv1alpha1.ExternalSecret{}).
-		Owns(&v1.Secret{}).
+		Owns(&v1.Secret{}, builder.OnlyMetadata).
 		Complete(r)
 }