...

Source file src/edge-infra.dev/pkg/sds/remoteaccess/k8s/controllers/wireguardctl/manager.go

Documentation: edge-infra.dev/pkg/sds/remoteaccess/k8s/controllers/wireguardctl

     1  package wireguardctl
     2  
     3  import (
     4  	"time"
     5  
     6  	iamAPI "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/clients/generated/apis/iam/v1beta1"
     7  	emissaryv3alpha1 "github.com/emissary-ingress/emissary/v3/pkg/api/getambassador.io/v3alpha1"
     8  	kruntime "k8s.io/apimachinery/pkg/runtime"
     9  	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
    10  	clientgoscheme "k8s.io/client-go/kubernetes/scheme"
    11  	ctrl "sigs.k8s.io/controller-runtime"
    12  	ctrlMgr "sigs.k8s.io/controller-runtime/pkg/manager"
    13  
    14  	v1cluster "edge-infra.dev/pkg/edge/apis/cluster/v1alpha1"
    15  	v1alpha1syncedobject "edge-infra.dev/pkg/edge/apis/syncedobject/apis/v1alpha1"
    16  	"edge-infra.dev/pkg/k8s/runtime/controller"
    17  	"edge-infra.dev/pkg/lib/fog"
    18  	"edge-infra.dev/pkg/sds/remoteaccess/constants"
    19  	v1vpnconfig "edge-infra.dev/pkg/sds/remoteaccess/k8s/apis/vpnconfigs/v1"
    20  	"edge-infra.dev/pkg/sds/remoteaccess/wireguard/vpn"
    21  )
    22  
    23  var (
    24  	scheme      = kruntime.NewScheme()
    25  	requeueTime = 60 * time.Second
    26  )
    27  
    28  func init() {
    29  	utilruntime.Must(clientgoscheme.AddToScheme(scheme))
    30  	utilruntime.Must(v1vpnconfig.AddToScheme(scheme))
    31  	utilruntime.Must(v1cluster.AddToScheme(scheme))
    32  	utilruntime.Must(v1alpha1syncedobject.AddToScheme(scheme))
    33  	utilruntime.Must(emissaryv3alpha1.AddToScheme(scheme))
    34  	utilruntime.Must(iamAPI.AddToScheme(scheme))
    35  }
    36  
    37  func Run(opts ...controller.Option) error {
    38  	log := fog.New().WithName(constants.WireguardControllerName)
    39  	ctrl.SetLogger(log)
    40  	ctx := ctrl.SetupSignalHandler()
    41  
    42  	mgr, err := NewManager(opts...)
    43  	if err != nil {
    44  		log.Error(err, "unable to create controller manager")
    45  		return err
    46  	}
    47  
    48  	vpn, err := vpn.New()
    49  	if err != nil {
    50  		log.Error(err, "unable to create banner VPN")
    51  		return err
    52  	}
    53  
    54  	if err := registerControllers(mgr, vpn); err != nil {
    55  		log.Error(err, "unable to register controllers")
    56  		return err
    57  	}
    58  
    59  	if err := mgr.Start(ctx); err != nil {
    60  		log.Error(err, "unable to start controllers")
    61  		return err
    62  	}
    63  
    64  	return nil
    65  }
    66  
    67  func NewManager(opts ...controller.Option) (ctrl.Manager, error) {
    68  	mgrCfg, mgrOpts := controller.ProcessOptions(opts...)
    69  	mgrOpts.Scheme = scheme
    70  	return ctrl.NewManager(mgrCfg, mgrOpts)
    71  }
    72  
    73  func registerControllers(mgr ctrlMgr.Manager, vpn *vpn.VPN) error {
    74  	remoteAccessController := NewVPNController(mgr, vpn)
    75  	return remoteAccessController.SetupWithManager(mgr)
    76  }
    77  

View as plain text