add webhook
This commit is contained in:
37
cmd/main.go
37
cmd/main.go
@@ -6,8 +6,10 @@ import (
|
||||
|
||||
"monitor/pkg/controllers"
|
||||
"monitor/pkg/k8s"
|
||||
"monitor/pkg/svc"
|
||||
|
||||
"go.uber.org/zap/zapcore"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
ctrl "sigs.k8s.io/controller-runtime"
|
||||
"sigs.k8s.io/controller-runtime/pkg/log/zap"
|
||||
)
|
||||
@@ -17,17 +19,24 @@ var (
|
||||
commit string
|
||||
level zapcore.Level
|
||||
conf k8s.Config
|
||||
|
||||
disableWebhook bool
|
||||
)
|
||||
|
||||
func main() {
|
||||
conf.HealthProbeBindAddress = "0" // Disable healthy endpoint of controller manager
|
||||
conf.LeaderElectionID = "monitor.3m3m.net"
|
||||
conf.LeaderElectionID = "monitor.demo.io"
|
||||
|
||||
// 参数解析
|
||||
flag.TextVar(&level, "log-level", zapcore.InfoLevel, "logger level")
|
||||
flag.StringVar(&conf.MetricsBindAddress, "metrics-address", "127.0.0.1:8080", "The address the metric endpoint binds to.")
|
||||
flag.BoolVar(&conf.LeaderElection, "enable-leader-election", false, "Enable leader election for controller manager")
|
||||
flag.BoolVar(&conf.PProf, "enable-pprof", false, "Enable profile debug")
|
||||
flag.StringVar(&conf.CaKey.Namespace, "namespace", os.Getenv("POD_NAMESPACE"), "namespace where pod run")
|
||||
flag.StringVar(&conf.CaKey.Name, "cert-ca", "monitor-ca", "cert ca secret name")
|
||||
flag.StringVar(&conf.WebhookName, "cert-service-name", "monitor-webhook-service", "The service name used to generate the TLS cert's hostname")
|
||||
flag.StringVar(&conf.CertDir, "cert-dir", "", "The directory where certs are stored")
|
||||
flag.BoolVar(&disableWebhook, "disable-webhook", false, "diable webhook mode")
|
||||
flag.Parse()
|
||||
// 初始化日志格式
|
||||
ctrl.SetLogger(zap.New(func(o *zap.Options) {
|
||||
@@ -37,12 +46,36 @@ func main() {
|
||||
}))
|
||||
log := ctrl.Log.WithName("monitor")
|
||||
|
||||
mgr, err := k8s.NewManager(conf)
|
||||
setupFinished := make(chan struct{})
|
||||
mgr, err := k8s.NewManager(conf, setupFinished)
|
||||
if err != nil {
|
||||
log.Error(err, "new k8s manager")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
ev := svc.NewHandler()
|
||||
|
||||
if !disableWebhook {
|
||||
go func() {
|
||||
<-setupFinished
|
||||
|
||||
if err = mgr.Add(ev); err != nil {
|
||||
log.Error(err, "add event handler")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
if err = mgr.WebHook(&corev1.Pod{}).WithDefaulter(ev).Complete(); err != nil {
|
||||
log.Error(err, "setup pod webhook")
|
||||
os.Exit(1)
|
||||
}
|
||||
}()
|
||||
} else {
|
||||
if err = mgr.Add(ev); err != nil {
|
||||
log.Error(err, "add event handler")
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
if err = mgr.Setup(controllers.NewService); err != nil {
|
||||
log.Error(err, "setup service controller")
|
||||
os.Exit(1)
|
||||
|
||||
Reference in New Issue
Block a user