diff --git a/services/k8s.go b/services/k8s.go index 7b62c6efa32956d94a9776c24b579ce5777d9eef..2f0d8b4de3923de9c76b6669d86de741aeb981e6 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{