46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
package configmap
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
|
|
"github.com/go-logr/logr"
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
ctrl "sigs.k8s.io/controller-runtime"
|
|
"sigs.k8s.io/controller-runtime/pkg/manager"
|
|
"sigs.k8s.io/controller-runtime/pkg/webhook"
|
|
)
|
|
|
|
type Config struct {
|
|
Name string
|
|
Namespace string
|
|
Logger logr.Logger
|
|
Scheme *runtime.Scheme
|
|
}
|
|
|
|
func (c *Config) InitFlags(fs *flag.FlagSet) {
|
|
fs.StringVar(&c.Name, "configmap-name", "gh-webhook-forwarder", `The name of the Kubernetes ConfigMap to which store state for check-pointing.`)
|
|
fs.StringVar(&c.Namespace, "namespace", "default", `The Kubernetes namespace to store configmap for check-pointing.`)
|
|
}
|
|
|
|
func New(checkpointerConfig *Config) (*ConfigMapCheckpointer, manager.Manager, error) {
|
|
ctrl.SetLogger(checkpointerConfig.Logger)
|
|
|
|
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
|
|
Scheme: checkpointerConfig.Scheme,
|
|
LeaderElectionID: "hookdeliveryforwarder",
|
|
WebhookServer: webhook.NewServer(webhook.Options{
|
|
Port: 9443,
|
|
}),
|
|
})
|
|
if err != nil {
|
|
return nil, nil, fmt.Errorf("unable to start manager: %v", err)
|
|
}
|
|
|
|
return &ConfigMapCheckpointer{
|
|
Client: mgr.GetClient(),
|
|
Name: checkpointerConfig.Name,
|
|
NS: checkpointerConfig.Namespace,
|
|
}, mgr, nil
|
|
}
|