@@ -11,15 +11,27 @@ import (
1111 "github.com/icinga/icinga-kubernetes/pkg/sync"
1212 "github.com/okzk/sdnotify"
1313 "github.com/pkg/errors"
14+ "github.com/spf13/pflag"
1415 "golang.org/x/sync/errgroup"
16+ kmetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1517 kinformers "k8s.io/client-go/informers"
1618 "k8s.io/client-go/kubernetes"
1719 kclientcmd "k8s.io/client-go/tools/clientcmd"
1820)
1921
2022func main () {
21- kconfig , err := kclientcmd .NewNonInteractiveDeferredLoadingClientConfig (
22- kclientcmd .NewDefaultClientConfigLoadingRules (), & kclientcmd.ConfigOverrides {}).ClientConfig ()
23+ var configPath string
24+ pflag .StringVarP (& configPath , "config" , "c" , "./config.yml" , "path to config file" )
25+
26+ kconfigOverrides := & kclientcmd.ConfigOverrides {}
27+ kclientcmd .BindOverrideFlags (kconfigOverrides , pflag .CommandLine , kclientcmd .RecommendedConfigOverrideFlags ("" ))
28+
29+ kclientconfig := kclientcmd .NewNonInteractiveDeferredLoadingClientConfig (
30+ kclientcmd .NewDefaultClientConfigLoadingRules (), kconfigOverrides )
31+
32+ pflag .Parse ()
33+
34+ kconfig , err := kclientconfig .ClientConfig ()
2335 if err != nil {
2436 logging .Fatal (errors .Wrap (err , "can't configure Kubernetes client" ))
2537 }
@@ -29,12 +41,14 @@ func main() {
2941 logging .Fatal (errors .Wrap (err , "can't create Kubernetes client" ))
3042 }
3143
32- flags , err := config . ParseFlags [internal. Flags ] ()
44+ namespace , overridden , err := kclientconfig . Namespace ()
3345 if err != nil {
34- logging .Fatal (errors .Wrap (err , "can't parse flags" ))
46+ logging .Fatal (errors .Wrap (err , "can't get namespace from CLI" ))
47+ } else if ! overridden {
48+ namespace = kmetav1 .NamespaceAll
3549 }
3650
37- cfg , err := config.FromYAMLFile [internal.Config ](flags . Config )
51+ cfg , err := config.FromYAMLFile [internal.Config ](configPath )
3852 if err != nil {
3953 logging .Fatal (errors .Wrap (err , "can't create configuration" ))
4054 }
@@ -66,26 +80,26 @@ func main() {
6680 }
6781 }
6882
69- informers := kinformers .NewSharedInformerFactory (k , 0 )
83+ informers := kinformers .NewSharedInformerFactoryWithOptions (k , 0 , kinformers . WithNamespace ( namespace ) )
7084
7185 g , ctx := errgroup .WithContext (ctx )
7286
7387 g .Go (func () error {
7488 return sync .NewSync (
7589 db , schema .NewNode , informers .Core ().V1 ().Nodes ().Informer (), logs .GetChildLogger ("Nodes" ),
76- ).Run (ctx )
90+ ).Run (ctx , namespace )
7791 })
7892
7993 g .Go (func () error {
8094 return sync .NewSync (
8195 db , schema .NewNamespace , informers .Core ().V1 ().Namespaces ().Informer (), logs .GetChildLogger ("Namespaces" ),
82- ).Run (ctx )
96+ ).Run (ctx , namespace )
8397 })
8498
8599 g .Go (func () error {
86100 return sync .NewSync (
87101 db , schema .NewPod , informers .Core ().V1 ().Pods ().Informer (), logs .GetChildLogger ("Pods" ),
88- ).Run (ctx )
102+ ).Run (ctx , namespace )
89103 })
90104
91105 if err := g .Wait (); err != nil {
0 commit comments