From 4e4a5900007ee1a34368355a476ffb11ffe777b1 Mon Sep 17 00:00:00 2001 From: Zbynek Roubalik Date: Wed, 29 Apr 2020 12:23:33 +0200 Subject: [PATCH] adding liveness and readiness probes Signed-off-by: Zbynek Roubalik --- cmd/manager/main.go | 26 ++++++++++++++++++++------ deploy/12-operator.yaml | 10 ++++++++++ deploy/22-metrics-deployment.yaml | 12 ++++++++++++ 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/cmd/manager/main.go b/cmd/manager/main.go index 460fbf17e9c..ce7a4657361 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -9,10 +9,6 @@ import ( "runtime" "strings" - // Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.) - _ "k8s.io/client-go/plugin/pkg/client/auth" - "k8s.io/client-go/rest" - "github.com/kedacore/keda/pkg/apis" "github.com/kedacore/keda/pkg/controller" "github.com/kedacore/keda/version" @@ -26,8 +22,11 @@ import ( "github.com/spf13/pflag" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/util/intstr" + _ "k8s.io/client-go/plugin/pkg/client/auth" + "k8s.io/client-go/rest" "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/client/config" + "sigs.k8s.io/controller-runtime/pkg/healthz" logf "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/manager" "sigs.k8s.io/controller-runtime/pkg/manager/signals" @@ -95,8 +94,9 @@ func main() { // Set default manager options options := manager.Options{ - Namespace: namespace, - MetricsBindAddress: fmt.Sprintf("%s:%d", metricsHost, metricsPort), + Namespace: namespace, + MetricsBindAddress: fmt.Sprintf("%s:%d", metricsHost, metricsPort), + HealthProbeBindAddress: ":8080", } // Add support for MultiNamespace set in WATCH_NAMESPACE (e.g ns1,ns2) @@ -115,6 +115,20 @@ func main() { os.Exit(1) } + // Add readiness probe + err = mgr.AddReadyzCheck("ready-ping", healthz.Ping) + if err != nil { + log.Error(err, "Unable to add a readiness check") + os.Exit(1) + } + + // Add liveness probe + err = mgr.AddHealthzCheck("health-ping", healthz.Ping) + if err != nil { + log.Error(err, "Unable to add a health check") + os.Exit(1) + } + log.Info("Registering Components.") // Setup Scheme for all resources diff --git a/deploy/12-operator.yaml b/deploy/12-operator.yaml index c99d14d411e..1a17e0b2f03 100644 --- a/deploy/12-operator.yaml +++ b/deploy/12-operator.yaml @@ -31,6 +31,16 @@ spec: - '--zap-level=info' - '--zap-time-encoding=epoch' imagePullPolicy: Always + livenessProbe: + httpGet: + path: /healthz + port: 8080 + initialDelaySeconds: 25 + readinessProbe: + httpGet: + path: /readyz + port: 8080 + initialDelaySeconds: 20 env: - name: WATCH_NAMESPACE value: "" diff --git a/deploy/22-metrics-deployment.yaml b/deploy/22-metrics-deployment.yaml index a7fed57c54f..cc7c443ce29 100644 --- a/deploy/22-metrics-deployment.yaml +++ b/deploy/22-metrics-deployment.yaml @@ -24,6 +24,18 @@ spec: - name: keda-metrics-apiserver image: docker.io/kedacore/keda-metrics-adapter:2.0.0-alpha1 imagePullPolicy: Always + livenessProbe: + httpGet: + scheme: HTTPS + path: /healthz + port: 6443 + initialDelaySeconds: 5 + readinessProbe: + httpGet: + scheme: HTTPS + path: /readyz + port: 6443 + initialDelaySeconds: 5 env: - name: WATCH_NAMESPACE value: ""