2020-11-23 14:21:01 +00:00
/ *
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
package main
import (
"flag"
"os"
"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/log/zap"
2020-12-29 20:50:43 +00:00
esv1alpha1 "github.com/external-secrets/external-secrets/apis/externalsecrets/v1alpha1"
"github.com/external-secrets/external-secrets/pkg/controllers/externalsecret"
"github.com/external-secrets/external-secrets/pkg/controllers/secretstore"
2020-11-23 14:21:01 +00:00
)
var (
scheme = runtime . NewScheme ( )
setupLog = ctrl . Log . WithName ( "setup" )
)
func init ( ) {
_ = clientgoscheme . AddToScheme ( scheme )
2020-12-29 20:50:43 +00:00
_ = esv1alpha1 . AddToScheme ( scheme )
2020-11-23 14:21:01 +00:00
}
func main ( ) {
var metricsAddr string
2021-02-24 19:01:28 +00:00
var controllerClass string
2020-11-23 14:21:01 +00:00
var enableLeaderElection bool
flag . StringVar ( & metricsAddr , "metrics-addr" , ":8080" , "The address the metric endpoint binds to." )
2021-02-24 19:01:28 +00:00
flag . StringVar ( & controllerClass , "controller-class" , "default" , "the controller is instantiated with a specific controller name and filters ES based on this property" )
2020-11-23 14:21:01 +00:00
flag . BoolVar ( & enableLeaderElection , "enable-leader-election" , false ,
"Enable leader election for controller manager. " +
"Enabling this will ensure there is only one active controller manager." )
flag . Parse ( )
ctrl . SetLogger ( zap . New ( zap . UseDevMode ( true ) ) )
mgr , err := ctrl . NewManager ( ctrl . GetConfigOrDie ( ) , ctrl . Options {
Scheme : scheme ,
MetricsBindAddress : metricsAddr ,
Port : 9443 ,
LeaderElection : enableLeaderElection ,
2020-12-29 20:50:43 +00:00
LeaderElectionID : "external-secrets-controller" ,
2020-11-23 14:21:01 +00:00
} )
if err != nil {
setupLog . Error ( err , "unable to start manager" )
os . Exit ( 1 )
}
2020-12-29 20:50:43 +00:00
if err = ( & secretstore . Reconciler {
2021-02-24 19:01:28 +00:00
Client : mgr . GetClient ( ) ,
Log : ctrl . Log . WithName ( "controllers" ) . WithName ( "SecretStore" ) ,
Scheme : mgr . GetScheme ( ) ,
ControllerClass : controllerClass ,
2020-11-23 14:21:01 +00:00
} ) . SetupWithManager ( mgr ) ; err != nil {
setupLog . Error ( err , "unable to create controller" , "controller" , "SecretStore" )
os . Exit ( 1 )
}
2020-12-29 20:50:43 +00:00
if err = ( & externalsecret . Reconciler {
2021-02-24 19:01:28 +00:00
Client : mgr . GetClient ( ) ,
Log : ctrl . Log . WithName ( "controllers" ) . WithName ( "ExternalSecret" ) ,
Scheme : mgr . GetScheme ( ) ,
ControllerClass : controllerClass ,
2020-11-23 14:21:01 +00:00
} ) . SetupWithManager ( mgr ) ; err != nil {
setupLog . Error ( err , "unable to create controller" , "controller" , "ExternalSecret" )
os . Exit ( 1 )
}
setupLog . Info ( "starting manager" )
if err := mgr . Start ( ctrl . SetupSignalHandler ( ) ) ; err != nil {
setupLog . Error ( err , "problem running manager" )
os . Exit ( 1 )
}
}