| giolekva | 96755fa | 2021-10-06 21:00:00 +0400 | [diff] [blame] | 1 | package main |
| 2 | |
| 3 | import ( |
| 4 | "flag" |
| 5 | "time" |
| 6 | |
| 7 | utilruntime "k8s.io/apimachinery/pkg/util/runtime" |
| giolekva | 5ebab80 | 2021-10-07 21:50:34 +0400 | [diff] [blame] | 8 | kubeinformers "k8s.io/client-go/informers" |
| giolekva | 96755fa | 2021-10-06 21:00:00 +0400 | [diff] [blame] | 9 | "k8s.io/client-go/kubernetes" |
| 10 | "k8s.io/client-go/tools/clientcmd" |
| 11 | |
| 12 | controllers "github.com/giolekva/pcloud/core/nebula/controllers" |
| 13 | clientset "github.com/giolekva/pcloud/core/nebula/generated/clientset/versioned" |
| 14 | "github.com/giolekva/pcloud/core/nebula/generated/clientset/versioned/scheme" |
| 15 | informers "github.com/giolekva/pcloud/core/nebula/generated/informers/externalversions" |
| giolekva | 5ebab80 | 2021-10-07 21:50:34 +0400 | [diff] [blame] | 16 | |
| giolekva | 96755fa | 2021-10-06 21:00:00 +0400 | [diff] [blame] | 17 | nebulascheme "k8s.io/sample-controller/pkg/generated/clientset/versioned/scheme" |
| 18 | ) |
| 19 | |
| 20 | var kubeConfig = flag.String("kubeconfig", "", "Path to a kubeconfig. Only required if out-of-cluster.") |
| 21 | var masterURL = flag.String("master", "", "The address of the Kubernetes API server. Overrides any value in kubeconfig. Only required if out-of-cluster.") |
| 22 | var nebulaCert = flag.String("nebula-cert", "", "Path to the nebula-cert binary.") |
| 23 | |
| 24 | func main() { |
| 25 | flag.Parse() |
| 26 | cfg, err := clientcmd.BuildConfigFromFlags(*masterURL, *kubeConfig) |
| 27 | if err != nil { |
| 28 | panic(err) |
| 29 | } |
| giolekva | 5ebab80 | 2021-10-07 21:50:34 +0400 | [diff] [blame] | 30 | kubeClient, err := kubernetes.NewForConfig(cfg) |
| giolekva | 96755fa | 2021-10-06 21:00:00 +0400 | [diff] [blame] | 31 | if err != nil { |
| 32 | panic(err) |
| 33 | } |
| 34 | nebulaClient := clientset.NewForConfigOrDie(cfg) |
| 35 | utilruntime.Must(nebulascheme.AddToScheme(scheme.Scheme)) |
| giolekva | 5ebab80 | 2021-10-07 21:50:34 +0400 | [diff] [blame] | 36 | kubeInformerFactory := kubeinformers.NewSharedInformerFactory(kubeClient, time.Second*30) |
| giolekva | 96755fa | 2021-10-06 21:00:00 +0400 | [diff] [blame] | 37 | nebulaInformerFactory := informers.NewSharedInformerFactory(nebulaClient, 5*time.Second) |
| giolekva | 695960b | 2021-10-07 22:00:29 +0400 | [diff] [blame] | 38 | c := controllers.NewNebulaController( |
| giolekva | 5ebab80 | 2021-10-07 21:50:34 +0400 | [diff] [blame] | 39 | kubeClient, |
| 40 | nebulaClient, |
| 41 | nebulaInformerFactory.Lekva().V1().NebulaCAs(), |
| 42 | nebulaInformerFactory.Lekva().V1().NebulaNodes(), |
| 43 | kubeInformerFactory.Core().V1().Secrets(), |
| 44 | *nebulaCert) |
| giolekva | 96755fa | 2021-10-06 21:00:00 +0400 | [diff] [blame] | 45 | stopCh := make(chan struct{}) |
| giolekva | 5ebab80 | 2021-10-07 21:50:34 +0400 | [diff] [blame] | 46 | kubeInformerFactory.Start(stopCh) |
| giolekva | 96755fa | 2021-10-06 21:00:00 +0400 | [diff] [blame] | 47 | nebulaInformerFactory.Start(stopCh) |
| 48 | if err := c.Run(1, stopCh); err != nil { |
| 49 | panic(err) |
| 50 | } |
| 51 | } |