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
 | |
| }
 |