@@ -11,15 +11,27 @@ import (
11
11
"github.com/icinga/icinga-kubernetes/pkg/sync"
12
12
"github.com/okzk/sdnotify"
13
13
"github.com/pkg/errors"
14
+ "github.com/spf13/pflag"
14
15
"golang.org/x/sync/errgroup"
16
+ kmetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
15
17
kinformers "k8s.io/client-go/informers"
16
18
"k8s.io/client-go/kubernetes"
17
19
kclientcmd "k8s.io/client-go/tools/clientcmd"
18
20
)
19
21
20
22
func 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 ()
23
35
if err != nil {
24
36
logging .Fatal (errors .Wrap (err , "can't configure Kubernetes client" ))
25
37
}
@@ -29,12 +41,14 @@ func main() {
29
41
logging .Fatal (errors .Wrap (err , "can't create Kubernetes client" ))
30
42
}
31
43
32
- flags , err := config . ParseFlags [internal. Flags ] ()
44
+ namespace , overridden , err := kclientconfig . Namespace ()
33
45
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
35
49
}
36
50
37
- cfg , err := config.FromYAMLFile [internal.Config ](flags . Config )
51
+ cfg , err := config.FromYAMLFile [internal.Config ](configPath )
38
52
if err != nil {
39
53
logging .Fatal (errors .Wrap (err , "can't create configuration" ))
40
54
}
@@ -66,26 +80,26 @@ func main() {
66
80
}
67
81
}
68
82
69
- informers := kinformers .NewSharedInformerFactory (k , 0 )
83
+ informers := kinformers .NewSharedInformerFactoryWithOptions (k , 0 , kinformers . WithNamespace ( namespace ) )
70
84
71
85
g , ctx := errgroup .WithContext (ctx )
72
86
73
87
g .Go (func () error {
74
88
return sync .NewSync (
75
89
db , schema .NewNode , informers .Core ().V1 ().Nodes ().Informer (), logs .GetChildLogger ("Nodes" ),
76
- ).Run (ctx )
90
+ ).Run (ctx , namespace )
77
91
})
78
92
79
93
g .Go (func () error {
80
94
return sync .NewSync (
81
95
db , schema .NewNamespace , informers .Core ().V1 ().Namespaces ().Informer (), logs .GetChildLogger ("Namespaces" ),
82
- ).Run (ctx )
96
+ ).Run (ctx , namespace )
83
97
})
84
98
85
99
g .Go (func () error {
86
100
return sync .NewSync (
87
101
db , schema .NewPod , informers .Core ().V1 ().Pods ().Informer (), logs .GetChildLogger ("Pods" ),
88
- ).Run (ctx )
102
+ ).Run (ctx , namespace )
89
103
})
90
104
91
105
if err := g .Wait (); err != nil {
0 commit comments