...

Source file src/edge-infra.dev/pkg/sds/ien/k8s/controllers/firewallctl/manager.go

Documentation: edge-infra.dev/pkg/sds/ien/k8s/controllers/firewallctl

     1  package firewallctl
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/fluxcd/pkg/ssa"
     7  	corev1 "k8s.io/api/core/v1"
     8  	kruntime "k8s.io/apimachinery/pkg/runtime"
     9  	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
    10  	clientgoscheme "k8s.io/client-go/kubernetes/scheme"
    11  	"k8s.io/client-go/rest"
    12  	ctrl "sigs.k8s.io/controller-runtime"
    13  	"sigs.k8s.io/controller-runtime/pkg/client"
    14  	ctrlmgr "sigs.k8s.io/controller-runtime/pkg/manager"
    15  
    16  	"edge-infra.dev/pkg/k8s/runtime/controller"
    17  	"edge-infra.dev/pkg/k8s/runtime/controller/metrics"
    18  	"edge-infra.dev/pkg/k8s/runtime/controller/reconcile"
    19  	v1ien "edge-infra.dev/pkg/sds/ien/k8s/apis/v1"
    20  )
    21  
    22  var (
    23  	scheme             = kruntime.NewScheme()
    24  	requeueTime        = time.Second * 60
    25  	MetricsBindAddress = ":9000"
    26  	HealthBindAddress  = ":9001"
    27  )
    28  
    29  type Controller struct {
    30  	name            string
    31  	conditions      reconcile.Conditions
    32  	client          client.Client
    33  	metrics         metrics.Metrics
    34  	resourceManager *ssa.ResourceManager
    35  	requeueTime     time.Duration
    36  }
    37  
    38  func init() {
    39  	utilruntime.Must(clientgoscheme.AddToScheme(scheme))
    40  	utilruntime.Must(v1ien.AddToScheme(scheme))
    41  }
    42  
    43  func Run(opts ...controller.Option) error {
    44  	log := ctrl.Log.WithName("setup")
    45  
    46  	// setup the controller manager
    47  	mgr, err := SetupManager(opts...)
    48  	if err != nil {
    49  		return err
    50  	}
    51  
    52  	// start controllers registered to the manager
    53  	if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
    54  		log.Error(err, "could not start controller")
    55  		return err
    56  	}
    57  
    58  	return nil
    59  }
    60  
    61  func SetupManager(ctrlOpts ...controller.Option) (ctrl.Manager, error) {
    62  	log := ctrl.Log.WithName("setup")
    63  
    64  	mgrRestConfig, mgrOpts := getManagerOptions(ctrlOpts...)
    65  	mgrOpts.Metrics.BindAddress = MetricsBindAddress
    66  	mgrOpts.Scheme = createScheme()
    67  	mgrOpts.HealthProbeBindAddress = HealthBindAddress
    68  	mgr, err := ctrl.NewManager(mgrRestConfig, mgrOpts)
    69  	if err != nil {
    70  		log.Error(err, "unable to create controller manager")
    71  		return nil, err
    72  	}
    73  
    74  	client := mgr.GetClient()
    75  
    76  	clusterFirewallReconciler := NewClusterFirewallController(client, mgr)
    77  
    78  	if err = clusterFirewallReconciler.SetUpWithManager(mgr); err != nil {
    79  		log.Error(err, "failed to setup ClusterFirewall controller with manager")
    80  		return nil, err
    81  	}
    82  
    83  	return mgr, nil
    84  }
    85  
    86  func getManagerOptions(opts ...controller.Option) (*rest.Config, ctrlmgr.Options) {
    87  	mgrConfig, mgrOpts := controller.ProcessOptions(opts...)
    88  	mgrOpts.Scheme = scheme
    89  	return mgrConfig, mgrOpts
    90  }
    91  
    92  func createScheme() *kruntime.Scheme {
    93  	scheme := kruntime.NewScheme()
    94  	utilruntime.Must(corev1.AddToScheme(scheme))
    95  	utilruntime.Must(v1ien.AddToScheme(scheme))
    96  	return scheme
    97  }
    98  

View as plain text