make probes configurable

This commit is contained in:
nicktrn
2025-06-27 19:45:27 +01:00
parent 7eee17580f
commit 2b9dbf1bf6
6 changed files with 294 additions and 32 deletions
+102
View File
@@ -323,6 +323,108 @@ Health checks are configured for all services:
- Database connection tests
- Readiness and liveness probes
### Health Probe Configuration
All non-Bitnami services support configurable health probes:
```yaml
# Webapp health probes
webapp:
livenessProbe:
enabled: true
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 5
failureThreshold: 5
successThreshold: 1
readinessProbe:
enabled: true
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 1
failureThreshold: 5
successThreshold: 1
startupProbe:
enabled: false
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 60
successThreshold: 1
# Supervisor health probes
supervisor:
livenessProbe:
enabled: true
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 5
failureThreshold: 5
successThreshold: 1
readinessProbe:
enabled: true
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 1
failureThreshold: 5
successThreshold: 1
startupProbe:
enabled: false
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 60
successThreshold: 1
# Electric health probes
electric:
livenessProbe:
enabled: true
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 5
failureThreshold: 5
successThreshold: 1
readinessProbe:
enabled: true
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 1
failureThreshold: 5
successThreshold: 1
startupProbe:
enabled: false
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 60
successThreshold: 1
# Registry health probes
registry:
livenessProbe:
enabled: true
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 5
failureThreshold: 5
successThreshold: 1
readinessProbe:
enabled: true
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 1
failureThreshold: 5
successThreshold: 1
startupProbe:
enabled: false
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 60
successThreshold: 1
```
### Prometheus Integration
ServiceMonitors are available for webapp and supervisor services:
+25 -8
View File
@@ -46,22 +46,39 @@ spec:
{{- with .Values.electric.extraEnvVars }}
{{- toYaml . | nindent 12 }}
{{- end }}
{{- if .Values.electric.livenessProbe.enabled }}
livenessProbe:
httpGet:
path: /v1/health
port: http
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 5
initialDelaySeconds: {{ .Values.electric.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.electric.livenessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.electric.livenessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.electric.livenessProbe.failureThreshold }}
successThreshold: {{ .Values.electric.livenessProbe.successThreshold }}
{{- end }}
{{- if .Values.electric.readinessProbe.enabled }}
readinessProbe:
httpGet:
path: /v1/health
port: http
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 5
initialDelaySeconds: {{ .Values.electric.readinessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.electric.readinessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.electric.readinessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.electric.readinessProbe.failureThreshold }}
successThreshold: {{ .Values.electric.readinessProbe.successThreshold }}
{{- end }}
{{- if .Values.electric.startupProbe.enabled }}
startupProbe:
httpGet:
path: /v1/health
port: http
initialDelaySeconds: {{ .Values.electric.startupProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.electric.startupProbe.periodSeconds }}
timeoutSeconds: {{ .Values.electric.startupProbe.timeoutSeconds }}
failureThreshold: {{ .Values.electric.startupProbe.failureThreshold }}
successThreshold: {{ .Values.electric.startupProbe.successThreshold }}
{{- end }}
resources:
{{- toYaml .Values.electric.resources | nindent 12 }}
---
+25 -8
View File
@@ -51,22 +51,39 @@ spec:
{{- toYaml . | nindent 12 }}
{{- end }}
{{- end }}
{{- if .Values.registry.livenessProbe.enabled }}
livenessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 5
initialDelaySeconds: {{ .Values.registry.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.registry.livenessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.registry.livenessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.registry.livenessProbe.failureThreshold }}
successThreshold: {{ .Values.registry.livenessProbe.successThreshold }}
{{- end }}
{{- if .Values.registry.readinessProbe.enabled }}
readinessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 5
initialDelaySeconds: {{ .Values.registry.readinessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.registry.readinessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.registry.readinessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.registry.readinessProbe.failureThreshold }}
successThreshold: {{ .Values.registry.readinessProbe.successThreshold }}
{{- end }}
{{- if .Values.registry.startupProbe.enabled }}
startupProbe:
httpGet:
path: /
port: http
initialDelaySeconds: {{ .Values.registry.startupProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.registry.startupProbe.periodSeconds }}
timeoutSeconds: {{ .Values.registry.startupProbe.timeoutSeconds }}
failureThreshold: {{ .Values.registry.startupProbe.failureThreshold }}
successThreshold: {{ .Values.registry.startupProbe.successThreshold }}
{{- end }}
resources:
{{- toYaml .Values.registry.resources | nindent 12 }}
volumeMounts:
+25 -8
View File
@@ -95,22 +95,39 @@ spec:
- name: metrics
containerPort: {{ .Values.supervisor.service.ports.metrics }}
protocol: TCP
{{- if .Values.supervisor.livenessProbe.enabled }}
livenessProbe:
httpGet:
path: /health
port: workload
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
initialDelaySeconds: {{ .Values.supervisor.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.supervisor.livenessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.supervisor.livenessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.supervisor.livenessProbe.failureThreshold }}
successThreshold: {{ .Values.supervisor.livenessProbe.successThreshold }}
{{- end }}
{{- if .Values.supervisor.readinessProbe.enabled }}
readinessProbe:
httpGet:
path: /health
port: workload
initialDelaySeconds: 15
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
initialDelaySeconds: {{ .Values.supervisor.readinessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.supervisor.readinessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.supervisor.readinessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.supervisor.readinessProbe.failureThreshold }}
successThreshold: {{ .Values.supervisor.readinessProbe.successThreshold }}
{{- end }}
{{- if .Values.supervisor.startupProbe.enabled }}
startupProbe:
httpGet:
path: /health
port: workload
initialDelaySeconds: {{ .Values.supervisor.startupProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.supervisor.startupProbe.periodSeconds }}
timeoutSeconds: {{ .Values.supervisor.startupProbe.timeoutSeconds }}
failureThreshold: {{ .Values.supervisor.startupProbe.failureThreshold }}
successThreshold: {{ .Values.supervisor.startupProbe.successThreshold }}
{{- end }}
resources:
{{- toYaml .Values.supervisor.resources | nindent 12 }}
env:
+25 -8
View File
@@ -49,22 +49,39 @@ spec:
- name: http
containerPort: {{ .Values.webapp.service.targetPort }}
protocol: TCP
{{- if .Values.webapp.livenessProbe.enabled }}
livenessProbe:
httpGet:
path: /healthcheck
port: http
initialDelaySeconds: 10
periodSeconds: 30
timeoutSeconds: 10
failureThreshold: 5
initialDelaySeconds: {{ .Values.webapp.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.webapp.livenessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.webapp.livenessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.webapp.livenessProbe.failureThreshold }}
successThreshold: {{ .Values.webapp.livenessProbe.successThreshold }}
{{- end }}
{{- if .Values.webapp.readinessProbe.enabled }}
readinessProbe:
httpGet:
path: /healthcheck
port: http
initialDelaySeconds: 10
periodSeconds: 30
timeoutSeconds: 10
failureThreshold: 5
initialDelaySeconds: {{ .Values.webapp.readinessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.webapp.readinessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.webapp.readinessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.webapp.readinessProbe.failureThreshold }}
successThreshold: {{ .Values.webapp.readinessProbe.successThreshold }}
{{- end }}
{{- if .Values.webapp.startupProbe.enabled }}
startupProbe:
httpGet:
path: /healthcheck
port: http
initialDelaySeconds: {{ .Values.webapp.startupProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.webapp.startupProbe.periodSeconds }}
timeoutSeconds: {{ .Values.webapp.startupProbe.timeoutSeconds }}
failureThreshold: {{ .Values.webapp.startupProbe.failureThreshold }}
successThreshold: {{ .Values.webapp.startupProbe.successThreshold }}
{{- end }}
resources:
{{- toYaml .Values.webapp.resources | nindent 12 }}
env:
+92
View File
@@ -124,6 +124,29 @@ webapp:
labels: {}
basicAuth: {}
# Health probe configuration
livenessProbe:
enabled: true
initialDelaySeconds: 10
periodSeconds: 30
timeoutSeconds: 10
failureThreshold: 5
successThreshold: 1
readinessProbe:
enabled: true
initialDelaySeconds: 10
periodSeconds: 30
timeoutSeconds: 10
failureThreshold: 5
successThreshold: 1
startupProbe:
enabled: false
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 60
successThreshold: 1
clickhouse:
logLevel: "info" # one of: log, error, warn, info, debug
runReplication:
@@ -229,6 +252,29 @@ supervisor:
labels: {}
basicAuth: {}
# Health probe configuration
livenessProbe:
enabled: true
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
successThreshold: 1
readinessProbe:
enabled: true
initialDelaySeconds: 15
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
successThreshold: 1
startupProbe:
enabled: false
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 60
successThreshold: 1
# Bootstrap configuration
# When enabled: reads token from shared file, otherwise uses workerToken config
bootstrap:
@@ -330,6 +376,29 @@ electric:
targetPort: 3000
resources: {}
# Health probe configuration
livenessProbe:
enabled: true
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 5
successThreshold: 1
readinessProbe:
enabled: true
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 5
successThreshold: 1
startupProbe:
enabled: false
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 60
successThreshold: 1
# External Electric connection (when deploy: false)
external:
url: "" # For example: "http://electric:3000"
@@ -472,6 +541,29 @@ registry:
targetPort: 5000
resources: {}
# Health probe configuration
livenessProbe:
enabled: true
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 5
successThreshold: 1
readinessProbe:
enabled: true
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 5
successThreshold: 1
startupProbe:
enabled: false
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 60
successThreshold: 1
# External Registry connection (when deploy: false)
external:
host: "localhost"