blob: e23012968c63a136b3511a3887569c1efb1ae9e9 [file] [log] [blame]
giolekva96755fa2021-10-06 21:00:00 +04001package main
2
3import (
4 "flag"
5 "time"
6
7 utilruntime "k8s.io/apimachinery/pkg/util/runtime"
giolekva5ebab802021-10-07 21:50:34 +04008 kubeinformers "k8s.io/client-go/informers"
giolekva96755fa2021-10-06 21:00:00 +04009 "k8s.io/client-go/kubernetes"
10 "k8s.io/client-go/tools/clientcmd"
11
giolekvac6859b02021-12-09 18:40:51 +040012 controllers "github.com/giolekva/pcloud/core/nebula/controller/controllers"
13 clientset "github.com/giolekva/pcloud/core/nebula/controller/generated/clientset/versioned"
14 "github.com/giolekva/pcloud/core/nebula/controller/generated/clientset/versioned/scheme"
15 informers "github.com/giolekva/pcloud/core/nebula/controller/generated/informers/externalversions"
giolekva5ebab802021-10-07 21:50:34 +040016
giolekva96755fa2021-10-06 21:00:00 +040017 nebulascheme "k8s.io/sample-controller/pkg/generated/clientset/versioned/scheme"
18)
19
20var kubeConfig = flag.String("kubeconfig", "", "Path to a kubeconfig. Only required if out-of-cluster.")
21var masterURL = flag.String("master", "", "The address of the Kubernetes API server. Overrides any value in kubeconfig. Only required if out-of-cluster.")
22var nebulaCert = flag.String("nebula-cert", "", "Path to the nebula-cert binary.")
23
24func main() {
25 flag.Parse()
26 cfg, err := clientcmd.BuildConfigFromFlags(*masterURL, *kubeConfig)
27 if err != nil {
28 panic(err)
29 }
giolekva5ebab802021-10-07 21:50:34 +040030 kubeClient, err := kubernetes.NewForConfig(cfg)
giolekva96755fa2021-10-06 21:00:00 +040031 if err != nil {
32 panic(err)
33 }
34 nebulaClient := clientset.NewForConfigOrDie(cfg)
35 utilruntime.Must(nebulascheme.AddToScheme(scheme.Scheme))
giolekva5ebab802021-10-07 21:50:34 +040036 kubeInformerFactory := kubeinformers.NewSharedInformerFactory(kubeClient, time.Second*30)
giolekva96755fa2021-10-06 21:00:00 +040037 nebulaInformerFactory := informers.NewSharedInformerFactory(nebulaClient, 5*time.Second)
giolekva695960b2021-10-07 22:00:29 +040038 c := controllers.NewNebulaController(
giolekva5ebab802021-10-07 21:50:34 +040039 kubeClient,
40 nebulaClient,
41 nebulaInformerFactory.Lekva().V1().NebulaCAs(),
42 nebulaInformerFactory.Lekva().V1().NebulaNodes(),
43 kubeInformerFactory.Core().V1().Secrets(),
44 *nebulaCert)
giolekva96755fa2021-10-06 21:00:00 +040045 stopCh := make(chan struct{})
giolekva5ebab802021-10-07 21:50:34 +040046 kubeInformerFactory.Start(stopCh)
giolekva96755fa2021-10-06 21:00:00 +040047 nebulaInformerFactory.Start(stopCh)
48 if err := c.Run(1, stopCh); err != nil {
49 panic(err)
50 }
51}