From a8bbac413bd8ccdff0dd76128ff6dfe523f1d549 Mon Sep 17 00:00:00 2001 From: Ciprian Hacman Date: Thu, 10 Sep 2020 22:09:49 +0300 Subject: [PATCH] Allow the BootstrapClient task to run after Protokube --- .../fi/nodeup/nodetasks/bootstrap_client.go | 9 ++++++++- upup/pkg/fi/nodeup/nodetasks/load_image.go | 5 ----- upup/pkg/fi/nodeup/nodetasks/service.go | 19 +++++++++++++++++-- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/upup/pkg/fi/nodeup/nodetasks/bootstrap_client.go b/upup/pkg/fi/nodeup/nodetasks/bootstrap_client.go index 6bf19d00337b6..5ccb7370f8dd2 100644 --- a/upup/pkg/fi/nodeup/nodetasks/bootstrap_client.go +++ b/upup/pkg/fi/nodeup/nodetasks/bootstrap_client.go @@ -59,7 +59,14 @@ var _ fi.HasName = &BootstrapClient{} var _ fi.HasDependencies = &BootstrapClient{} func (b *BootstrapClient) GetDependencies(tasks map[string]fi.Task) []fi.Task { - return nil + // BootstrapClient depends on the protokube service to ensure gossip DNS + var deps []fi.Task + for _, v := range tasks { + if svc, ok := v.(*Service); ok && svc.Name == protokubeService { + deps = append(deps, v) + } + } + return deps } func (b *BootstrapClient) GetName() *string { diff --git a/upup/pkg/fi/nodeup/nodetasks/load_image.go b/upup/pkg/fi/nodeup/nodetasks/load_image.go index 5416993e49f02..54364d92faba9 100644 --- a/upup/pkg/fi/nodeup/nodetasks/load_image.go +++ b/upup/pkg/fi/nodeup/nodetasks/load_image.go @@ -33,11 +33,6 @@ import ( "k8s.io/kops/util/pkg/hashing" ) -const ( - containerdService = "containerd.service" - dockerService = "docker.service" -) - // LoadImageTask is responsible for downloading a docker image type LoadImageTask struct { Name string diff --git a/upup/pkg/fi/nodeup/nodetasks/service.go b/upup/pkg/fi/nodeup/nodetasks/service.go index 2165097a4ff42..2305894e5bb7b 100644 --- a/upup/pkg/fi/nodeup/nodetasks/service.go +++ b/upup/pkg/fi/nodeup/nodetasks/service.go @@ -43,6 +43,10 @@ const ( flatcarSystemdSystemPath = "/etc/systemd/system" containerosSystemdSystemPath = "/etc/systemd/system" + + containerdService = "containerd.service" + dockerService = "docker.service" + protokubeService = "protokube.service" ) type Service struct { @@ -68,10 +72,21 @@ func (p *Service) GetDependencies(tasks map[string]fi.Task) []fi.Task { // launching a custom Kubernetes build), they all depend on // the "docker.service" Service task. switch v.(type) { - case *File, *Package, *UpdatePackages, *UserTask, *GroupTask, *Chattr, *BindMount, *Archive: + case *Package, *UpdatePackages, *UserTask, *GroupTask, *Chattr, *BindMount, *Archive: deps = append(deps, v) - case *Service, *LoadImageTask, *IssueCert: + case *Service, *LoadImageTask, *IssueCert, *BootstrapClient: // ignore + case *File: + // Skip adding kubeconfig files as dependencies for services other than kubelet + if f, ok := v.(*File); ok && strings.HasSuffix(f.Path, "/kubeconfig") && p.Name != "kubelet" { + continue + } + deps = append(deps, v) + case *KubeConfig: + // Only add kubeconfigs as dependencies for kubelet + if p.Name == "kubelet" { + deps = append(deps, v) + } default: klog.Warningf("Unhandled type %T in Service::GetDependencies: %v", v, v) deps = append(deps, v)