From fb11c2f11eb4162ae0860ab6374eb3e1d331c205 Mon Sep 17 00:00:00 2001 From: airycanon Date: Wed, 6 Nov 2024 10:10:17 +0800 Subject: [PATCH] Add the missing health check --- .../deployments/controller.yaml | 19 +++++++++++++++++++ .../deployments/pingsource-mt-adapter.yaml | 19 +++++++++++++++++++ pkg/adapter/v2/context.go | 11 +++++++++++ pkg/adapter/v2/main.go | 8 ++++++++ 4 files changed, 57 insertions(+) diff --git a/config/brokers/mt-channel-broker/deployments/controller.yaml b/config/brokers/mt-channel-broker/deployments/controller.yaml index 10d35e44185..2235e02dce7 100644 --- a/config/brokers/mt-channel-broker/deployments/controller.yaml +++ b/config/brokers/mt-channel-broker/deployments/controller.yaml @@ -83,8 +83,27 @@ spec: seccompProfile: type: RuntimeDefault + livenessProbe: + httpGet: + path: /health + port: probes + scheme: HTTP + initialDelaySeconds: 20 + periodSeconds: 10 + timeoutSeconds: 5 + readinessProbe: + httpGet: + path: /readiness + port: probes + scheme: HTTP + initialDelaySeconds: 20 + periodSeconds: 10 + timeoutSeconds: 5 + ports: - name: metrics containerPort: 9090 - name: profiling containerPort: 8008 + - name: probes + containerPort: 8080 diff --git a/config/core/deployments/pingsource-mt-adapter.yaml b/config/core/deployments/pingsource-mt-adapter.yaml index 33469bdf2d8..0f62925c305 100644 --- a/config/core/deployments/pingsource-mt-adapter.yaml +++ b/config/core/deployments/pingsource-mt-adapter.yaml @@ -87,6 +87,8 @@ spec: - containerPort: 9090 name: metrics protocol: TCP + - name: probes + containerPort: 8080 resources: requests: cpu: 125m @@ -104,4 +106,21 @@ spec: seccompProfile: type: RuntimeDefault + livenessProbe: + httpGet: + path: /health + port: probes + scheme: HTTP + initialDelaySeconds: 20 + periodSeconds: 10 + timeoutSeconds: 5 + readinessProbe: + httpGet: + path: /readiness + port: probes + scheme: HTTP + initialDelaySeconds: 20 + periodSeconds: 10 + timeoutSeconds: 5 + serviceAccountName: pingsource-mt-adapter diff --git a/pkg/adapter/v2/context.go b/pkg/adapter/v2/context.go index f36f95daa7c..db03f4feab9 100644 --- a/pkg/adapter/v2/context.go +++ b/pkg/adapter/v2/context.go @@ -124,3 +124,14 @@ func ConfiguratorOptionsFromContext(ctx context.Context) []ConfiguratorOption { } return value.([]ConfiguratorOption) } + +type healthProbesDisabledKey struct{} + +// WithHealthProbesDisabled signals to MainWithContext that it should disable default probes (readiness and liveness). +func WithHealthProbesDisabled(ctx context.Context) context.Context { + return context.WithValue(ctx, healthProbesDisabledKey{}, struct{}{}) +} + +func HealthProbesDisabled(ctx context.Context) bool { + return ctx.Value(healthProbesDisabledKey{}) != nil +} diff --git a/pkg/adapter/v2/main.go b/pkg/adapter/v2/main.go index 1eb274364f4..af6598d5ce1 100644 --- a/pkg/adapter/v2/main.go +++ b/pkg/adapter/v2/main.go @@ -306,6 +306,14 @@ func MainWithInformers(ctx context.Context, component string, env EnvConfigAcces }() } + if !HealthProbesDisabled(ctx) { + wg.Add(1) + go func() { + defer wg.Done() + injection.ServeHealthProbes(ctx, injection.HealthCheckDefaultPort) + }() + } + // Finally start the adapter (blocking) if err := adapter.Start(ctx); err != nil { logger.Fatalw("Start returned an error", zap.Error(err))