From 0fd3e3f45db1afdbbfba3bd5f22d2f0ff90b9b40 Mon Sep 17 00:00:00 2001 From: Stefan Bueringer Date: Fri, 9 Jul 2021 21:09:58 +0200 Subject: [PATCH] also ping the webhook server after start --- pkg/webhook/server.go | 9 +++++++++ pkg/webhook/server_test.go | 2 ++ 2 files changed, 11 insertions(+) diff --git a/pkg/webhook/server.go b/pkg/webhook/server.go index 2c7a012f7d..0895397fcb 100644 --- a/pkg/webhook/server.go +++ b/pkg/webhook/server.go @@ -28,6 +28,7 @@ import ( "path/filepath" "strconv" "sync" + "time" "k8s.io/apimachinery/pkg/runtime" kscheme "k8s.io/client-go/kubernetes/scheme" @@ -294,9 +295,17 @@ func (s *Server) StartedChecker() healthz.Checker { return func(req *http.Request) error { s.mu.Lock() defer s.mu.Unlock() + if !s.started { return fmt.Errorf("webhook server has not been started yet") } + + conn, err := net.DialTimeout("tcp", net.JoinHostPort(s.Host, strconv.Itoa(s.Port)), 10*time.Second) + if err != nil { + return fmt.Errorf("webhook server is not reachable: %v", err) + } + conn.Close() + return nil } } diff --git a/pkg/webhook/server_test.go b/pkg/webhook/server_test.go index 310a88b246..03323eede8 100644 --- a/pkg/webhook/server_test.go +++ b/pkg/webhook/server_test.go @@ -128,6 +128,8 @@ var _ = Describe("Webhook Server", func() { It("should serve a webhook on the requested path", func() { server.Register("/somepath", &testHandler{}) + Expect(server.StartedChecker()(nil)).ToNot(Succeed()) + doneCh := startServer() Eventually(func() ([]byte, error) {