diff options
| -rw-r--r-- | cloud/cmd/cloudcore/app/server.go | 3 | ||||
| -rw-r--r-- | cloud/pkg/cloudhub/config/config.go | 2 | ||||
| -rw-r--r-- | cloud/pkg/cloudhub/servers/httpserver/server.go | 13 |
3 files changed, 17 insertions, 1 deletions
diff --git a/cloud/cmd/cloudcore/app/server.go b/cloud/cmd/cloudcore/app/server.go index 90296664e..93e21cb8f 100644 --- a/cloud/cmd/cloudcore/app/server.go +++ b/cloud/cmd/cloudcore/app/server.go @@ -13,6 +13,7 @@ import ( "github.com/kubeedge/beehive/pkg/core" "github.com/kubeedge/kubeedge/cloud/cmd/cloudcore/app/options" "github.com/kubeedge/kubeedge/cloud/pkg/cloudhub" + hubconfig "github.com/kubeedge/kubeedge/cloud/pkg/cloudhub/config" "github.com/kubeedge/kubeedge/cloud/pkg/cloudstream" "github.com/kubeedge/kubeedge/cloud/pkg/devicecontroller" "github.com/kubeedge/kubeedge/cloud/pkg/edgecontroller" @@ -61,8 +62,8 @@ kubernetes controller which manages devices so that the device metadata/status d // If leader election is enabled, runCommand via LeaderElector until done and exit. if config.LeaderElection.LeaderElect { - //TODO: expose electionChecker to a http server electionChecker := kele.NewLeaderReadyzAdaptor(time.Second * 20) + hubconfig.Config.Checker = electionChecker kele.Run(config, electionChecker) return } diff --git a/cloud/pkg/cloudhub/config/config.go b/cloud/pkg/cloudhub/config/config.go index 002663fe1..5427f027f 100644 --- a/cloud/pkg/cloudhub/config/config.go +++ b/cloud/pkg/cloudhub/config/config.go @@ -11,6 +11,7 @@ import ( "github.com/kubeedge/kubeedge/cloud/pkg/client/clientset/versioned" syncinformer "github.com/kubeedge/kubeedge/cloud/pkg/client/informers/externalversions/reliablesyncs/v1alpha1" synclister "github.com/kubeedge/kubeedge/cloud/pkg/client/listers/reliablesyncs/v1alpha1" + kele "github.com/kubeedge/kubeedge/cloud/pkg/leaderelection" "github.com/kubeedge/kubeedge/pkg/apis/componentconfig/cloudcore/v1alpha1" ) @@ -24,6 +25,7 @@ type Configure struct { CaKey []byte Cert []byte Key []byte + Checker *kele.ReadyzAdaptor } func InitConfigure(hub *v1alpha1.CloudHub, kubeAPIConfig *v1alpha1.KubeAPIConfig) { diff --git a/cloud/pkg/cloudhub/servers/httpserver/server.go b/cloud/pkg/cloudhub/servers/httpserver/server.go index 3429843da..29a1c83c4 100644 --- a/cloud/pkg/cloudhub/servers/httpserver/server.go +++ b/cloud/pkg/cloudhub/servers/httpserver/server.go @@ -45,6 +45,7 @@ func StartHTTPServer() { router := mux.NewRouter() router.HandleFunc("/edge.crt", edgeCoreClientCert).Methods("GET") router.HandleFunc("/ca.crt", getCA).Methods("GET") + router.HandleFunc("/readyz", electionHandler).Methods("GET") addr := fmt.Sprintf("%s:%d", hubconfig.Config.HTTPS.Address, hubconfig.Config.HTTPS.Port) @@ -71,6 +72,18 @@ func getCA(w http.ResponseWriter, r *http.Request) { w.Write(caCertDER) } +//electionHandler returns the status whether the cloudcore is ready +func electionHandler(w http.ResponseWriter, r *http.Request) { + checker := hubconfig.Config.Checker + if checker.Check(r) != nil { + w.WriteHeader(http.StatusNotFound) + w.Write([]byte(fmt.Sprintf("Cloudcore is not ready"))) + } else { + w.WriteHeader(http.StatusOK) + w.Write([]byte(fmt.Sprintf("Cloudcore is ready"))) + } +} + // EncodeCertPEM returns PEM-endcoded certificate data func EncodeCertPEM(cert *x509.Certificate) []byte { block := pem.Block{ |
