From 148bc92a1f56b92127f687cee83e1f124e151d7d Mon Sep 17 00:00:00 2001 From: kaiyou <dev@kaiyou.fr> Date: Sat, 4 Mar 2023 13:05:32 +0100 Subject: [PATCH] Wait for apiserver to be ready before running scheduler and cm --- services/k8s.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/services/k8s.go b/services/k8s.go index 7b62c6e..2f0d8b4 100644 --- a/services/k8s.go +++ b/services/k8s.go @@ -8,6 +8,7 @@ import ( "github.com/spf13/pflag" "go.acides.org/hepto/utils" core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/dynamic" "k8s.io/client-go/dynamic/dynamicinformer" @@ -91,6 +92,26 @@ var kubeApiserver = &Unit{ } return prepared.Run(ctx.Done()) }, + Ready: func(u *Unit, c *Cluster) bool { + u.Logger.Info("checking if apiserver is ready") + kc := &rest.Config{ + Host: fmt.Sprintf("https://[%s]:6443", c.networking.NodeAddress.IP.String()), + TLSClientConfig: rest.TLSClientConfig{ + CAFile: c.pki.TLS.CertPath(), + CertFile: c.masterCerts.SchedulerAPI.CertPath(), + KeyFile: c.masterCerts.SchedulerAPI.KeyPath(), + }, + } + client, err := kubernetes.NewForConfig(rest.AddUserAgent(kc, "scheduler")) + if err != nil { + return false + } + _, err = client.CoreV1().Nodes().List(context.Background(), meta.ListOptions{}) + if err != nil { + return false + } + return true + }, } var kubeControllerManager = &Unit{ -- GitLab