@@ -25,6 +25,7 @@ import (
25
25
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
26
26
"k8s.io/client-go/informers"
27
27
coreinformers "k8s.io/client-go/informers/core/v1"
28
+ "k8s.io/client-go/tools/clientcmd"
28
29
29
30
"k8s.io/client-go/kubernetes"
30
31
"k8s.io/client-go/rest"
@@ -36,6 +37,7 @@ import (
36
37
)
37
38
38
39
var (
40
+ kubeconfig string
39
41
failOpen bool
40
42
adminNetworkPolicy bool // AdminNetworkPolicy is alpha so keep it feature gated behind a flag
41
43
baselineAdminNetworkPolicy bool // BaselineAdminNetworkPolicy is alpha so keep it feature gated behind a flag
47
49
)
48
50
49
51
func init () {
52
+ flag .StringVar (& kubeconfig , "kubeconfig" , "" , "absolute path to the kubeconfig file" )
50
53
flag .BoolVar (& failOpen , "fail-open" , false , "If set, don't drop packets if the controller is not running" )
51
54
flag .BoolVar (& adminNetworkPolicy , "admin-network-policy" , false , "If set, enable Admin Network Policy API" )
52
55
flag .BoolVar (& baselineAdminNetworkPolicy , "baseline-admin-network-policy" , false , "If set, enable Baseline Admin Network Policy API" )
@@ -106,10 +109,16 @@ func run() int {
106
109
QueueID : queueID ,
107
110
NetfilterBug1766Fix : netfilterBug1766Fix ,
108
111
}
109
- // creates the in-cluster config
110
- config , err := rest .InClusterConfig ()
112
+
113
+ var config * rest.Config
114
+ if kubeconfig != "" {
115
+ config , err = clientcmd .BuildConfigFromFlags ("" , kubeconfig )
116
+ } else {
117
+ // creates the in-cluster config
118
+ config , err = rest .InClusterConfig ()
119
+ }
111
120
if err != nil {
112
- panic ( err . Error () )
121
+ klog . Fatalf ( "can not create client-go configuration: %v" , err )
113
122
}
114
123
115
124
// use protobuf for better performance at scale
0 commit comments