diff --git a/services/apiserver.go b/services/apiserver.go index 81afb46473ea22a49e74d111f70308fa6f9d0cce..c71fbef42e5c64b6d3356995aa1fb6110b70a737 100644 --- a/services/apiserver.go +++ b/services/apiserver.go @@ -124,7 +124,7 @@ func buildConfig(c *Cluster) (config *server.Config, clients *Clients, err error return } config.LoopbackClientConfig = loopback - clients, err = newClientsForKC(config.LoopbackClientConfig, "apiserver") + clients, err = newClientsForKC(config.LoopbackClientConfig) if err != nil { err = fmt.Errorf("could not setup loopback clients: %w", err) return diff --git a/services/k8s.go b/services/k8s.go index 3764b51d3e05583b9964acb5b322706609cb3cf4..57a558949552afc28ee4ca6e2f5a1bea7d97de40 100644 --- a/services/k8s.go +++ b/services/k8s.go @@ -27,16 +27,17 @@ var kubeLogger = &Unit{ } type Clients struct { - KubeConfig *rest.Config - Client *kubernetes.Clientset - DynClient *dynamic.DynamicClient - EventClient *kubernetes.Clientset - Broadcaster events.EventBroadcasterAdapter - Informer informers.SharedInformerFactory - DynInformer dynamicinformer.DynamicSharedInformerFactory + KubeConfig *rest.Config + Client *kubernetes.Clientset + ClientBuilder func(name string) (*kubernetes.Clientset, error) + DynClient *dynamic.DynamicClient + EventClient *kubernetes.Clientset + Broadcaster events.EventBroadcasterAdapter + Informer informers.SharedInformerFactory + DynInformer dynamicinformer.DynamicSharedInformerFactory } -func newClients(c *Cluster, ua string, masterIP net.IP, cert *pekahi.Certificate) (*Clients, error) { +func newClients(c *Cluster, masterIP net.IP, cert *pekahi.Certificate) (*Clients, error) { kc := &rest.Config{ Host: fmt.Sprintf("https://[%s]:%d", masterIP.String(), apiserverPort), TLSClientConfig: rest.TLSClientConfig{ @@ -45,15 +46,18 @@ func newClients(c *Cluster, ua string, masterIP net.IP, cert *pekahi.Certificate KeyFile: cert.KeyPath(), }, } - return newClientsForKC(kc, ua) + return newClientsForKC(kc) } -func newClientsForKC(kc *rest.Config, ua string) (*Clients, error) { - client, err := kubernetes.NewForConfig(rest.AddUserAgent(kc, ua)) +func newClientsForKC(kc *rest.Config) (*Clients, error) { + clientBuilder := func(name string) (*kubernetes.Clientset, error) { + return kubernetes.NewForConfig(rest.AddUserAgent(kc, name)) + } + baseClient, err := clientBuilder("informers") if err != nil { return nil, err } - eventsClient, err := kubernetes.NewForConfig(kc) + eventsClient, err := clientBuilder("events") if err != nil { return nil, err } @@ -62,16 +66,17 @@ func newClientsForKC(kc *rest.Config, ua string) (*Clients, error) { return nil, err } broadcaster := events.NewEventBroadcasterAdapter(eventsClient) - informers := informers.NewSharedInformerFactory(client, 0) + informers := informers.NewSharedInformerFactory(baseClient, 0) dynInformers := dynamicinformer.NewFilteredDynamicSharedInformerFactory(dynClient, 0, core.NamespaceAll, nil) return &Clients{ - KubeConfig: kc, - Client: client, - DynClient: dynClient, - EventClient: eventsClient, - Broadcaster: broadcaster, - Informer: informers, - DynInformer: dynInformers, + KubeConfig: kc, + ClientBuilder: clientBuilder, + Client: baseClient, + DynClient: dynClient, + EventClient: eventsClient, + Broadcaster: broadcaster, + Informer: informers, + DynInformer: dynInformers, }, nil } diff --git a/services/kubelet.go b/services/kubelet.go index eba5dba5e3f46d653c411825f9edb3efe455e8be..a1b43b06651ccf40839262cf2734f296d1902ad8 100644 --- a/services/kubelet.go +++ b/services/kubelet.go @@ -44,7 +44,7 @@ var kubeKubelet = &Unit{ // (very difficult to check otherwise) time.Sleep(10 * time.Second) kubeletRoot := path.Join(c.settings.DataDir, "kubelet") - clients, err := newClients(c, "kubelet", c.masterNode.VpnIP, c.certs.API) + clients, err := newClients(c, c.masterNode.VpnIP, c.certs.API) if err != nil { return fmt.Errorf("could not create clients: %w", err) } diff --git a/services/scheduler.go b/services/scheduler.go index 5b0aaf7fc96cfd3d79205fdcddfbdc3b578c8e02..b5b34a38d3b33d7cd8b58e711868594b86d55cd3 100644 --- a/services/scheduler.go +++ b/services/scheduler.go @@ -10,7 +10,7 @@ var kubeScheduler = &Unit{ Name: "kube-scheduler", Dependencies: []*Unit{kubeApiserver, pkiCA, pkiMaster, kubeLogger}, Run: func(u *Unit, c *Cluster, ctx context.Context) error { - clients, err := newClients(c, "scheduler", c.networking.NodeAddress.IP, c.masterCerts.SchedulerAPI) + clients, err := newClients(c, c.networking.NodeAddress.IP, c.masterCerts.SchedulerAPI) if err != nil { return err }