Open arschles opened 8 years ago
@arschles this is a working version of the check
apiUrl := kubeClient.Get().AbsPath("/healthz").URL()
err := checkApiServer(apiUrl.String(), time.Duration(1*time.Second))
if err != nil {
// something
}
// checkApiServer checks if is possible to reach the api server or not
func checkApiServer(url string, timeout time.Duration) error {
// we don't know if the
client := http.Client{
Timeout: timeout,
Transport: &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
},
}
res, err := client.Get(url)
if err != nil {
return err
}
res.Body.Close()
return nil
}
thanks @aledbf
This issue was moved to teamhephy/builder#35
After #149, the health check server (
/healthz
) will be listing all namespaces in the cluster as a way to ping the Kubernetes API to determine whether it's available. This method of checking availability is more heavyweight than it has to be, since the API server should also have ahealthz
endpoint. Some code similar to the following should be used to check that endpoint:This idea was first proposed by @aledbf in https://github.com/deis/builder/pull/149/files#r52692363