Files
actions-runner-controller/pkg/hookdeliveryforwarder/configmap/config.go
Yusuke Kuoka f858e2e432 Add POC of GitHub Webhook Delivery Forwarder (#682)
* Add POC of GitHub Webhook Delivery Forwarder

* multi-forwarder and ctrl-c existing and fix for non-woring http post

* Rename source files

* Extract signal handling into a dedicated source file

* Faster ctrl-c handling

* Enable automatic creation of repo hook on startup

* Add support for forwarding org hook deliveries

* Set hook secret on hook creation via envvar (HOOK_SECRET)

* Fix org hook support

* Fix HOOK_SECRET for consistency

* Refactor to prepare for custom log position provider

* Refactor to extract inmemory log position provider

* Add configmap-based log position provider

* Rename githubwebhookdeliveryforwarder to hookdeliveryforwarder

* Refactor to rename LogPositionProvider to Checkpointer and extract ConfigMap checkpointer into a dedicated pkg

* Refactor to extract logger initialization

* Add hookdeliveryforwarder README and bump go-github to unreleased ver
2021-07-14 10:18:55 +09:00

43 lines
1.1 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"
)
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",
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
}