package wireguardctl import ( "time" iamAPI "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/clients/generated/apis/iam/v1beta1" emissaryv3alpha1 "github.com/emissary-ingress/emissary/v3/pkg/api/getambassador.io/v3alpha1" kruntime "k8s.io/apimachinery/pkg/runtime" utilruntime "k8s.io/apimachinery/pkg/util/runtime" clientgoscheme "k8s.io/client-go/kubernetes/scheme" ctrl "sigs.k8s.io/controller-runtime" ctrlMgr "sigs.k8s.io/controller-runtime/pkg/manager" v1cluster "edge-infra.dev/pkg/edge/apis/cluster/v1alpha1" v1alpha1syncedobject "edge-infra.dev/pkg/edge/apis/syncedobject/apis/v1alpha1" "edge-infra.dev/pkg/k8s/runtime/controller" "edge-infra.dev/pkg/lib/fog" "edge-infra.dev/pkg/sds/remoteaccess/constants" v1vpnconfig "edge-infra.dev/pkg/sds/remoteaccess/k8s/apis/vpnconfigs/v1" "edge-infra.dev/pkg/sds/remoteaccess/wireguard/vpn" ) var ( scheme = kruntime.NewScheme() requeueTime = 60 * time.Second ) func init() { utilruntime.Must(clientgoscheme.AddToScheme(scheme)) utilruntime.Must(v1vpnconfig.AddToScheme(scheme)) utilruntime.Must(v1cluster.AddToScheme(scheme)) utilruntime.Must(v1alpha1syncedobject.AddToScheme(scheme)) utilruntime.Must(emissaryv3alpha1.AddToScheme(scheme)) utilruntime.Must(iamAPI.AddToScheme(scheme)) } func Run(opts ...controller.Option) error { log := fog.New().WithName(constants.WireguardControllerName) ctrl.SetLogger(log) ctx := ctrl.SetupSignalHandler() mgr, err := NewManager(opts...) if err != nil { log.Error(err, "unable to create controller manager") return err } vpn, err := vpn.New() if err != nil { log.Error(err, "unable to create banner VPN") return err } if err := registerControllers(mgr, vpn); err != nil { log.Error(err, "unable to register controllers") return err } if err := mgr.Start(ctx); err != nil { log.Error(err, "unable to start controllers") return err } return nil } func NewManager(opts ...controller.Option) (ctrl.Manager, error) { mgrCfg, mgrOpts := controller.ProcessOptions(opts...) mgrOpts.Scheme = scheme return ctrl.NewManager(mgrCfg, mgrOpts) } func registerControllers(mgr ctrlMgr.Manager, vpn *vpn.VPN) error { remoteAccessController := NewVPNController(mgr, vpn) return remoteAccessController.SetupWithManager(mgr) }