1
0

add webhook

This commit is contained in:
2023-09-06 17:52:39 +08:00
parent 586abdfd7b
commit b2972195cb
12 changed files with 882 additions and 12 deletions

View File

@@ -9,23 +9,29 @@ import (
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/builder"
"sigs.k8s.io/controller-runtime/pkg/client/config"
"sigs.k8s.io/controller-runtime/pkg/healthz"
"sigs.k8s.io/controller-runtime/pkg/manager"
"sigs.k8s.io/controller-runtime/pkg/manager/signals"
)
var log = ctrl.Log.WithName("k8s")
type Config struct {
ctrl.Options
PProf bool
PProf bool
WebhookName string
CaKey types.NamespacedName
}
type Manager struct {
mgr ctrl.Manager
}
func NewManager(conf Config) (*Manager, error) {
func NewManager(conf Config, setupFinished chan struct{}) (*Manager, error) {
restConfig, err := config.GetConfig()
if err != nil {
return nil, err
@@ -52,6 +58,25 @@ func NewManager(conf Config) (*Manager, error) {
mgr.AddMetricsExtraHandler("/debug/pprof/trace", http.HandlerFunc(pprof.Trace))
}
if conf.CertDir != "" {
// Make sure certs are generated and valid if cert rotation is enabled.
cr := &CertRotator{
CaKey: conf.CaKey,
CertDir: conf.CertDir,
DNSName: fmt.Sprintf("%s.%s.svc", conf.WebhookName, conf.CaKey.Namespace),
IsReady: setupFinished,
Webhooks: []WebhookInfo{
{
Name: "monitor-mutating-webhook-configuration",
Type: Mutating,
},
},
}
if err = AddRotator(mgr, cr); err != nil {
return nil, err
}
}
return &Manager{mgr: mgr}, nil
}
@@ -63,8 +88,8 @@ func (s *Manager) Setup(f func(manager.Manager) error) error {
return f(s.mgr)
}
func (s *Manager) WebHook(obj runtime.Object) error {
return ctrl.NewWebhookManagedBy(s.mgr).For(obj).Complete()
func (s *Manager) WebHook(obj runtime.Object) *builder.WebhookBuilder {
return ctrl.NewWebhookManagedBy(s.mgr).For(obj)
}
func (s *Manager) Start() error {