• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

kubeovn / kube-ovn / 16715285676

04 Aug 2025 06:00AM UTC coverage: 21.465% (+0.009%) from 21.456%
16715285676

Pull #5551

github

oilbeater
do not handle update external vpcs

Signed-off-by: Mengxin Liu <liumengxinfly@gmail.com>
Pull Request #5551: do not handle update external vpcs

0 of 4 new or added lines in 2 files covered. (0.0%)

2 existing lines in 1 file now uncovered.

10568 of 49234 relevant lines covered (21.46%)

0.25 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/pkg/controller/config.go
1
package controller
2

3
import (
4
        "errors"
5
        "flag"
6
        "fmt"
7
        "os"
8
        "strings"
9
        "time"
10

11
        attachnetclientset "github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/client/clientset/versioned"
12
        "github.com/spf13/pflag"
13
        extClientSet "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
14
        "k8s.io/client-go/kubernetes"
15
        "k8s.io/client-go/rest"
16
        "k8s.io/client-go/tools/clientcmd"
17
        "k8s.io/klog/v2"
18
        "kubevirt.io/client-go/kubecli"
19
        anpclientset "sigs.k8s.io/network-policy-api/pkg/client/clientset/versioned"
20

21
        clientset "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned"
22
        "github.com/kubeovn/kube-ovn/pkg/util"
23
)
24

25
// Configuration is the controller conf
26
type Configuration struct {
27
        OvnNbAddr              string
28
        OvnSbAddr              string
29
        OvnTimeout             int
30
        OvsDbConnectTimeout    int
31
        OvsDbConnectMaxRetry   int
32
        OvsDbInactivityTimeout int
33
        CustCrdRetryMaxDelay   int
34
        CustCrdRetryMinDelay   int
35
        KubeConfigFile         string
36
        KubeRestConfig         *rest.Config
37

38
        KubeClient      kubernetes.Interface
39
        KubeOvnClient   clientset.Interface
40
        AnpClient       anpclientset.Interface
41
        AttachNetClient attachnetclientset.Interface
42
        KubevirtClient  kubecli.KubevirtClient
43
        ExtClient       extClientSet.Interface
44

45
        KubeFactoryClient    kubernetes.Interface
46
        KubeOvnFactoryClient clientset.Interface
47

48
        DefaultLogicalSwitch      string
49
        DefaultCIDR               string
50
        DefaultGateway            string
51
        DefaultExcludeIps         string
52
        DefaultGatewayCheck       bool
53
        DefaultLogicalGateway     bool
54
        DefaultU2OInterconnection bool
55

56
        ClusterRouter     string
57
        NodeSwitch        string
58
        NodeSwitchCIDR    string
59
        NodeSwitchGateway string
60

61
        ServiceClusterIPRange string
62

63
        ClusterTCPLoadBalancer         string
64
        ClusterUDPLoadBalancer         string
65
        ClusterSctpLoadBalancer        string
66
        ClusterTCPSessionLoadBalancer  string
67
        ClusterUDPSessionLoadBalancer  string
68
        ClusterSctpSessionLoadBalancer string
69

70
        PodName      string
71
        PodNamespace string
72
        PodNicType   string
73

74
        WorkerNum       int
75
        PprofPort       int32
76
        EnablePprof     bool
77
        SecureServing   bool
78
        NodePgProbeTime int
79

80
        NetworkType             string
81
        DefaultProviderName     string
82
        DefaultHostInterface    string
83
        DefaultExchangeLinkName bool
84
        DefaultVlanName         string
85
        DefaultVlanID           int
86
        LsDnatModDlDst          bool
87
        LsCtSkipDstLportIPs     bool
88

89
        EnableLb                    bool
90
        EnableNP                    bool
91
        EnableEipSnat               bool
92
        EnableExternalVpc           bool
93
        EnableEcmp                  bool
94
        EnableKeepVMIP              bool
95
        EnableLbSvc                 bool
96
        EnableOVNLBPreferLocal      bool
97
        EnableMetrics               bool
98
        EnableANP                   bool
99
        EnableOVNIPSec              bool
100
        CertManagerIPSecCert        bool
101
        EnableLiveMigrationOptimize bool
102

103
        ExternalGatewaySwitch   string
104
        ExternalGatewayConfigNS string
105
        ExternalGatewayNet      string
106
        ExternalGatewayVlanID   int
107

108
        GCInterval      int
109
        InspectInterval int
110

111
        BfdMinTx      int
112
        BfdMinRx      int
113
        BfdDetectMult int
114

115
        NodeLocalDNSIPs []string
116

117
        // used to set vpc-egress-gateway image
118
        Image string
119

120
        // used to set log file permission
121
        LogPerm string
122

123
        // TLS configuration for secure serving
124
        TLSMinVersion   string
125
        TLSMaxVersion   string
126
        TLSCipherSuites []string
127
}
128

129
// ParseFlags parses cmd args then init kubeclient and conf
130
// TODO: validate configuration
131
func ParseFlags() (*Configuration, error) {
×
132
        var (
×
133
                argOvnNbAddr              = pflag.String("ovn-nb-addr", "", "ovn-nb address")
×
134
                argOvnSbAddr              = pflag.String("ovn-sb-addr", "", "ovn-sb address")
×
135
                argOvnTimeout             = pflag.Int("ovn-timeout", 60, "The seconds to wait ovn command timeout")
×
136
                argOvsDbConTimeout        = pflag.Int("ovsdb-con-timeout", 3, "The seconds to wait ovsdb connect timeout")
×
137
                argOvsDbConnectMaxRetry   = pflag.Int("ovsdb-con-maxretry", 60, "The maximum number of retries for connecting to ovsdb")
×
138
                argOvsDbInactivityTimeout = pflag.Int("ovsdb-inactivity-timeout", 10, "The seconds to wait ovsdb inactivity check timeout")
×
139
                argCustCrdRetryMinDelay   = pflag.Int("cust-crd-retry-min-delay", 1, "The min delay seconds between custom crd two retries")
×
140
                argCustCrdRetryMaxDelay   = pflag.Int("cust-crd-retry-max-delay", 20, "The max delay seconds between custom crd two retries")
×
141
                argKubeConfigFile         = pflag.String("kubeconfig", "", "Path to kubeconfig file with authorization and master location information. If not set use the inCluster token.")
×
142

×
143
                argDefaultLogicalSwitch  = pflag.String("default-ls", util.DefaultSubnet, "The default logical switch name")
×
144
                argDefaultCIDR           = pflag.String("default-cidr", "10.16.0.0/16", "Default CIDR for namespace with no logical switch annotation")
×
145
                argDefaultGateway        = pflag.String("default-gateway", "", "Default gateway for default-cidr (default the first ip in default-cidr)")
×
146
                argDefaultGatewayCheck   = pflag.Bool("default-gateway-check", true, "Check switch for the default subnet's gateway")
×
147
                argDefaultLogicalGateway = pflag.Bool("default-logical-gateway", false, "Create a logical gateway for the default subnet instead of using underlay gateway. Take effect only when the default subnet is in underlay mode. (default false)")
×
148
                argDefaultExcludeIps     = pflag.String("default-exclude-ips", "", "Exclude ips in default switch (default gateway address)")
×
149

×
150
                argDefaultU2OInterconnection = pflag.Bool("default-u2o-interconnection", false, "usage for underlay to overlay interconnection")
×
151

×
152
                argClusterRouter     = pflag.String("cluster-router", util.DefaultVpc, "The router name for cluster router")
×
153
                argNodeSwitch        = pflag.String("node-switch", "join", "The name of node gateway switch which help node to access pod network")
×
154
                argNodeSwitchCIDR    = pflag.String("node-switch-cidr", "100.64.0.0/16", "The cidr for node switch")
×
155
                argNodeSwitchGateway = pflag.String("node-switch-gateway", "", "The gateway for node switch (default the first ip in node-switch-cidr)")
×
156

×
157
                argServiceClusterIPRange = pflag.String("service-cluster-ip-range", "10.96.0.0/12", "The kubernetes service cluster ip range")
×
158

×
159
                argClusterTCPLoadBalancer         = pflag.String("cluster-tcp-loadbalancer", "cluster-tcp-loadbalancer", "The name for cluster tcp loadbalancer")
×
160
                argClusterUDPLoadBalancer         = pflag.String("cluster-udp-loadbalancer", "cluster-udp-loadbalancer", "The name for cluster udp loadbalancer")
×
161
                argClusterSctpLoadBalancer        = pflag.String("cluster-sctp-loadbalancer", "cluster-sctp-loadbalancer", "The name for cluster sctp loadbalancer")
×
162
                argClusterTCPSessionLoadBalancer  = pflag.String("cluster-tcp-session-loadbalancer", "cluster-tcp-session-loadbalancer", "The name for cluster tcp session loadbalancer")
×
163
                argClusterUDPSessionLoadBalancer  = pflag.String("cluster-udp-session-loadbalancer", "cluster-udp-session-loadbalancer", "The name for cluster udp session loadbalancer")
×
164
                argClusterSctpSessionLoadBalancer = pflag.String("cluster-sctp-session-loadbalancer", "cluster-sctp-session-loadbalancer", "The name for cluster sctp session loadbalancer")
×
165

×
166
                argWorkerNum       = pflag.Int("worker-num", 3, "The parallelism of each worker")
×
167
                argEnablePprof     = pflag.Bool("enable-pprof", false, "Enable pprof")
×
168
                argPprofPort       = pflag.Int32("pprof-port", 10660, "The port to get profiling data")
×
169
                argSecureServing   = pflag.Bool("secure-serving", false, "Enable secure serving")
×
170
                argNodePgProbeTime = pflag.Int("nodepg-probe-time", 1, "The probe interval for node port-group, the unit is minute")
×
171

×
172
                argNetworkType                 = pflag.String("network-type", util.NetworkTypeGeneve, "The ovn network type")
×
173
                argDefaultProviderName         = pflag.String("default-provider-name", "provider", "The vlan or vxlan type default provider interface name")
×
174
                argDefaultInterfaceName        = pflag.String("default-interface-name", "", "The default host interface name in the vlan/vxlan type")
×
175
                argDefaultExchangeLinkName     = pflag.Bool("default-exchange-link-name", false, "exchange link names of OVS bridge and the provider nic in the default provider-network")
×
176
                argDefaultVlanName             = pflag.String("default-vlan-name", "ovn-vlan", "The default vlan name")
×
177
                argDefaultVlanID               = pflag.Int("default-vlan-id", 1, "The default vlan id")
×
178
                argLsDnatModDlDst              = pflag.Bool("ls-dnat-mod-dl-dst", true, "Set ethernet destination address for DNAT on logical switch")
×
179
                argLsCtSkipDstLportIPs         = pflag.Bool("ls-ct-skip-dst-lport-ips", true, "Skip conntrack for direct traffic between lports")
×
180
                argPodNicType                  = pflag.String("pod-nic-type", "veth-pair", "The default pod network nic implementation type")
×
181
                argEnableLb                    = pflag.Bool("enable-lb", true, "Enable load balancer")
×
182
                argEnableNP                    = pflag.Bool("enable-np", true, "Enable network policy support")
×
183
                argEnableEipSnat               = pflag.Bool("enable-eip-snat", true, "Enable EIP and SNAT")
×
NEW
184
                argEnableExternalVpc           = pflag.Bool("enable-external-vpc", true, "Enable external vpc support")
×
185
                argEnableEcmp                  = pflag.Bool("enable-ecmp", false, "Enable ecmp route for centralized subnet")
×
186
                argKeepVMIP                    = pflag.Bool("keep-vm-ip", true, "Whether to keep ip for kubevirt pod when pod is rebuild")
×
187
                argEnableLbSvc                 = pflag.Bool("enable-lb-svc", false, "Whether to support loadbalancer service")
×
188
                argEnableOVNLBPreferLocal      = pflag.Bool("enable-ovn-lb-prefer-local", false, "Whether to support ovn loadbalancer prefer local")
×
189
                argEnableMetrics               = pflag.Bool("enable-metrics", true, "Whether to support metrics query")
×
190
                argEnableANP                   = pflag.Bool("enable-anp", false, "Enable support for admin network policy and baseline admin network policy")
×
191
                argEnableOVNIPSec              = pflag.Bool("enable-ovn-ipsec", false, "Whether to enable ovn ipsec")
×
192
                argCertManagerIPSecCert        = pflag.Bool("cert-manager-ipsec-cert", false, "Whether to use cert-manager for signing IPSec certificates")
×
193
                argEnableLiveMigrationOptimize = pflag.Bool("enable-live-migration-optimize", true, "Whether to enable kubevirt live migration optimize")
×
194

×
195
                argExternalGatewayConfigNS = pflag.String("external-gateway-config-ns", "kube-system", "The namespace of configmap external-gateway-config, default: kube-system")
×
196
                argExternalGatewaySwitch   = pflag.String("external-gateway-switch", "external", "The name of the external gateway switch which is a ovs bridge to provide external network, default: external")
×
197
                argExternalGatewayNet      = pflag.String("external-gateway-net", "external", "The name of the external network which mappings with an ovs bridge, default: external")
×
198
                argExternalGatewayVlanID   = pflag.Int("external-gateway-vlanid", 0, "The vlanId of port ln-ovn-external, default: 0")
×
199
                argNodeLocalDNSIP          = pflag.String("node-local-dns-ip", "", "Comma-separated string of nodelocal DNS ip addresses")
×
200

×
201
                argGCInterval      = pflag.Int("gc-interval", 360, "The interval between GC processes, default 360 seconds. If set to 0, GC will be disabled")
×
202
                argInspectInterval = pflag.Int("inspect-interval", 20, "The interval between inspect processes, default 20 seconds")
×
203

×
204
                argBfdMinTx      = pflag.Int("bfd-min-tx", 100, "This is the minimum interval, in milliseconds, ovn would like to use when transmitting BFD Control packets")
×
205
                argBfdMinRx      = pflag.Int("bfd-min-rx", 100, "This is the minimum interval, in milliseconds, between received BFD Control packets")
×
206
                argBfdDetectMult = pflag.Int("detect-mult", 3, "The negotiated transmit interval, multiplied by this value, provides the Detection Time for the receiving system in Asynchronous mode.")
×
207

×
208
                argImage = pflag.String("image", "", "The image for vpc-egress-gateway")
×
209

×
210
                argLogPerm = pflag.String("log-perm", "640", "The permission for the log file")
×
211

×
212
                argTLSMinVersion   = pflag.String("tls-min-version", "", "The minimum TLS version to use for secure serving. Supported values: TLS10, TLS11, TLS12, TLS13. If not set, the default is used based on the Go version.")
×
213
                argTLSMaxVersion   = pflag.String("tls-max-version", "", "The maximum TLS version to use for secure serving. Supported values: TLS10, TLS11, TLS12, TLS13. If not set, the default is used based on the Go version.")
×
214
                argTLSCipherSuites = pflag.StringSlice("tls-cipher-suites", nil, "Comma-separated list of TLS cipher suite names to use for secure serving (e.g., 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384'). Names must match Go's crypto/tls package. See Go documentation for available suites. If not set, defaults are used. Users are responsible for selecting secure cipher suites.")
×
215
        )
×
216

×
217
        klogFlags := flag.NewFlagSet("klog", flag.ExitOnError)
×
218
        klog.InitFlags(klogFlags)
×
219

×
220
        // sync the glog and klog flags.
×
221
        pflag.CommandLine.VisitAll(func(f1 *pflag.Flag) {
×
222
                f2 := klogFlags.Lookup(f1.Name)
×
223
                if f2 != nil {
×
224
                        value := f1.Value.String()
×
225
                        if err := f2.Value.Set(value); err != nil {
×
226
                                util.LogFatalAndExit(err, "failed to set pflag")
×
227
                        }
×
228
                }
229
        })
230

231
        pflag.CommandLine.AddGoFlagSet(klogFlags)
×
232
        pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
×
233
        pflag.Parse()
×
234

×
235
        config := &Configuration{
×
236
                OvnNbAddr:                      *argOvnNbAddr,
×
237
                OvnSbAddr:                      *argOvnSbAddr,
×
238
                OvnTimeout:                     *argOvnTimeout,
×
239
                OvsDbConnectTimeout:            *argOvsDbConTimeout,
×
240
                OvsDbConnectMaxRetry:           *argOvsDbConnectMaxRetry,
×
241
                OvsDbInactivityTimeout:         *argOvsDbInactivityTimeout,
×
242
                CustCrdRetryMinDelay:           *argCustCrdRetryMinDelay,
×
243
                CustCrdRetryMaxDelay:           *argCustCrdRetryMaxDelay,
×
244
                KubeConfigFile:                 *argKubeConfigFile,
×
245
                DefaultLogicalSwitch:           *argDefaultLogicalSwitch,
×
246
                DefaultCIDR:                    *argDefaultCIDR,
×
247
                DefaultGateway:                 *argDefaultGateway,
×
248
                DefaultGatewayCheck:            *argDefaultGatewayCheck,
×
249
                DefaultLogicalGateway:          *argDefaultLogicalGateway,
×
250
                DefaultU2OInterconnection:      *argDefaultU2OInterconnection,
×
251
                DefaultExcludeIps:              *argDefaultExcludeIps,
×
252
                ClusterRouter:                  *argClusterRouter,
×
253
                NodeSwitch:                     *argNodeSwitch,
×
254
                NodeSwitchCIDR:                 *argNodeSwitchCIDR,
×
255
                NodeSwitchGateway:              *argNodeSwitchGateway,
×
256
                ServiceClusterIPRange:          *argServiceClusterIPRange,
×
257
                ClusterTCPLoadBalancer:         *argClusterTCPLoadBalancer,
×
258
                ClusterUDPLoadBalancer:         *argClusterUDPLoadBalancer,
×
259
                ClusterSctpLoadBalancer:        *argClusterSctpLoadBalancer,
×
260
                ClusterTCPSessionLoadBalancer:  *argClusterTCPSessionLoadBalancer,
×
261
                ClusterUDPSessionLoadBalancer:  *argClusterUDPSessionLoadBalancer,
×
262
                ClusterSctpSessionLoadBalancer: *argClusterSctpSessionLoadBalancer,
×
263
                WorkerNum:                      *argWorkerNum,
×
264
                EnablePprof:                    *argEnablePprof,
×
265
                PprofPort:                      *argPprofPort,
×
266
                SecureServing:                  *argSecureServing,
×
267
                NetworkType:                    *argNetworkType,
×
268
                DefaultVlanID:                  *argDefaultVlanID,
×
269
                LsDnatModDlDst:                 *argLsDnatModDlDst,
×
270
                LsCtSkipDstLportIPs:            *argLsCtSkipDstLportIPs,
×
271
                DefaultProviderName:            *argDefaultProviderName,
×
272
                DefaultHostInterface:           *argDefaultInterfaceName,
×
273
                DefaultExchangeLinkName:        *argDefaultExchangeLinkName,
×
274
                DefaultVlanName:                *argDefaultVlanName,
×
275
                PodName:                        os.Getenv("POD_NAME"),
×
276
                PodNamespace:                   os.Getenv("KUBE_NAMESPACE"),
×
277
                PodNicType:                     *argPodNicType,
×
278
                EnableLb:                       *argEnableLb,
×
279
                EnableNP:                       *argEnableNP,
×
280
                EnableEipSnat:                  *argEnableEipSnat,
×
281
                EnableExternalVpc:              *argEnableExternalVpc,
×
282
                ExternalGatewayConfigNS:        *argExternalGatewayConfigNS,
×
283
                ExternalGatewaySwitch:          *argExternalGatewaySwitch,
×
284
                ExternalGatewayNet:             *argExternalGatewayNet,
×
285
                ExternalGatewayVlanID:          *argExternalGatewayVlanID,
×
286
                EnableEcmp:                     *argEnableEcmp,
×
287
                EnableKeepVMIP:                 *argKeepVMIP,
×
288
                NodePgProbeTime:                *argNodePgProbeTime,
×
289
                GCInterval:                     *argGCInterval,
×
290
                InspectInterval:                *argInspectInterval,
×
291
                EnableLbSvc:                    *argEnableLbSvc,
×
292
                EnableOVNLBPreferLocal:         *argEnableOVNLBPreferLocal,
×
293
                EnableMetrics:                  *argEnableMetrics,
×
294
                EnableOVNIPSec:                 *argEnableOVNIPSec,
×
295
                CertManagerIPSecCert:           *argCertManagerIPSecCert,
×
296
                EnableLiveMigrationOptimize:    *argEnableLiveMigrationOptimize,
×
297
                BfdMinTx:                       *argBfdMinTx,
×
298
                BfdMinRx:                       *argBfdMinRx,
×
299
                BfdDetectMult:                  *argBfdDetectMult,
×
300
                EnableANP:                      *argEnableANP,
×
301
                Image:                          *argImage,
×
302
                LogPerm:                        *argLogPerm,
×
303
                TLSMinVersion:                  *argTLSMinVersion,
×
304
                TLSMaxVersion:                  *argTLSMaxVersion,
×
305
                TLSCipherSuites:                *argTLSCipherSuites,
×
306
        }
×
307

×
308
        if config.NetworkType == util.NetworkTypeVlan && config.DefaultHostInterface == "" {
×
309
                return nil, errors.New("no host nic for vlan")
×
310
        }
×
311

312
        if config.DefaultGateway == "" {
×
313
                gw, err := util.GetGwByCidr(config.DefaultCIDR)
×
314
                if err != nil {
×
315
                        klog.Error(err)
×
316
                        return nil, err
×
317
                }
×
318
                config.DefaultGateway = gw
×
319
        }
320

321
        if config.DefaultExcludeIps == "" {
×
322
                config.DefaultExcludeIps = config.DefaultGateway
×
323
        }
×
324

325
        if config.NodeSwitchGateway == "" {
×
326
                gw, err := util.GetGwByCidr(config.NodeSwitchCIDR)
×
327
                if err != nil {
×
328
                        klog.Error(err)
×
329
                        return nil, err
×
330
                }
×
331
                config.NodeSwitchGateway = gw
×
332
        }
333

334
        if err := config.initKubeClient(); err != nil {
×
335
                klog.Error(err)
×
336
                return nil, err
×
337
        }
×
338

339
        if err := config.initKubeFactoryClient(); err != nil {
×
340
                klog.Error(err)
×
341
                return nil, err
×
342
        }
×
343

344
        if err := util.CheckSystemCIDR([]string{config.NodeSwitchCIDR, config.DefaultCIDR, config.ServiceClusterIPRange}); err != nil {
×
345
                klog.Error(err)
×
346
                return nil, fmt.Errorf("check system cidr failed, %w", err)
×
347
        }
×
348

349
        for ip := range strings.SplitSeq(*argNodeLocalDNSIP, ",") {
×
350
                if err := util.CheckNodeDNSIP(ip); err != nil {
×
351
                        klog.Error(err)
×
352
                        return nil, err
×
353
                }
×
354
                config.NodeLocalDNSIPs = append(config.NodeLocalDNSIPs, ip)
×
355
        }
356

357
        klog.Infof("config is %+v", config)
×
358
        return config, nil
×
359
}
360

361
func (config *Configuration) initKubeClient() error {
×
362
        var cfg *rest.Config
×
363
        var err error
×
364
        if config.KubeConfigFile == "" {
×
365
                klog.Infof("no --kubeconfig, use in-cluster kubernetes config")
×
366
                cfg, err = rest.InClusterConfig()
×
367
        } else {
×
368
                cfg, err = clientcmd.BuildConfigFromFlags("", config.KubeConfigFile)
×
369
        }
×
370
        if err != nil {
×
371
                klog.Errorf("failed to build kubeconfig %v", err)
×
372
                return err
×
373
        }
×
374

375
        // try to connect to apiserver's tcp port
376
        if err = util.DialAPIServer(cfg.Host, 3*time.Second, 10); err != nil {
×
377
                klog.Errorf("failed to dial apiserver: %v", err)
×
378
                return err
×
379
        }
×
380

381
        cfg.QPS = 1000
×
382
        cfg.Burst = 2000
×
383
        // use cmd arg to modify timeout later
×
384
        cfg.Timeout = 30 * time.Second
×
385

×
386
        AttachNetClient, err := attachnetclientset.NewForConfig(cfg)
×
387
        if err != nil {
×
388
                klog.Errorf("init attach network client failed %v", err)
×
389
                return err
×
390
        }
×
391
        config.AttachNetClient = AttachNetClient
×
392

×
393
        // get the kubevirt client, using which kubevirt resources can be managed.
×
394
        virtClient, err := kubecli.GetKubevirtClientFromRESTConfig(cfg)
×
395
        if err != nil {
×
396
                klog.Errorf("init kubevirt client failed %v", err)
×
397
                return err
×
398
        }
×
399
        config.KubevirtClient = virtClient
×
400

×
401
        AnpClient, err := anpclientset.NewForConfig(cfg)
×
402
        if err != nil {
×
403
                klog.Errorf("init admin network policy client failed %v", err)
×
404
                return err
×
405
        }
×
406
        config.AnpClient = AnpClient
×
407

×
408
        kubeOvnClient, err := clientset.NewForConfig(cfg)
×
409
        if err != nil {
×
410
                klog.Errorf("init kubeovn client failed %v", err)
×
411
                return err
×
412
        }
×
413
        config.KubeOvnClient = kubeOvnClient
×
414

×
415
        ExtClient, err := extClientSet.NewForConfig(cfg)
×
416
        if err != nil {
×
417
                klog.Errorf("init extentsion client failed %v", err)
×
418
                return err
×
419
        }
×
420
        config.ExtClient = ExtClient
×
421

×
422
        cfg.ContentType = "application/vnd.kubernetes.protobuf"
×
423
        cfg.AcceptContentTypes = "application/vnd.kubernetes.protobuf,application/json"
×
424
        kubeClient, err := kubernetes.NewForConfig(cfg)
×
425
        if err != nil {
×
426
                klog.Errorf("init kubernetes client failed %v", err)
×
427
                return err
×
428
        }
×
429
        config.KubeClient = kubeClient
×
430
        return nil
×
431
}
432

433
func (config *Configuration) initKubeFactoryClient() error {
×
434
        var cfg *rest.Config
×
435
        var err error
×
436
        if config.KubeConfigFile == "" {
×
437
                klog.Infof("no --kubeconfig, use in-cluster kubernetes config")
×
438
                cfg, err = rest.InClusterConfig()
×
439
        } else {
×
440
                cfg, err = clientcmd.BuildConfigFromFlags("", config.KubeConfigFile)
×
441
        }
×
442
        if err != nil {
×
443
                klog.Errorf("failed to build kubeconfig %v", err)
×
444
                return err
×
445
        }
×
446
        cfg.QPS = 1000
×
447
        cfg.Burst = 2000
×
448

×
449
        config.KubeRestConfig = cfg
×
450

×
451
        kubeOvnClient, err := clientset.NewForConfig(cfg)
×
452
        if err != nil {
×
453
                klog.Errorf("init kubeovn client failed %v", err)
×
454
                return err
×
455
        }
×
456
        config.KubeOvnFactoryClient = kubeOvnClient
×
457

×
458
        cfg.ContentType = "application/vnd.kubernetes.protobuf"
×
459
        cfg.AcceptContentTypes = "application/vnd.kubernetes.protobuf,application/json"
×
460
        kubeClient, err := kubernetes.NewForConfig(cfg)
×
461
        if err != nil {
×
462
                klog.Errorf("init kubernetes client failed %v", err)
×
463
                return err
×
464
        }
×
465
        config.KubeFactoryClient = kubeClient
×
466
        return nil
×
467
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc