fix(homarr): add proper probes via Kustomize patch
Chart version 8.23.0 doesn't support probe customization via values. Using strategic merge patch instead. Probe configuration: - Liveness: 60s initial delay, 30s period, 5s timeout - Readiness: 45s initial delay, 15s period, 5s timeout App initialization timeline: 0-5s: DB migrations, Redis startup 6s: WebSocket server ready 27-30s: Icon cache populated (27k+ icons) 30s+: Analytics cron initialized, fully operational
This commit is contained in:
@@ -0,0 +1,28 @@
|
|||||||
|
# Patch to add proper liveness/readiness probes to Homarr deployment
|
||||||
|
# App takes 30-45s to fully initialize (DB migrations, Redis, icon cache)
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: homarr
|
||||||
|
namespace: dashboard
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: homarr
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /api/health/live
|
||||||
|
port: 7575
|
||||||
|
initialDelaySeconds: 60
|
||||||
|
periodSeconds: 30
|
||||||
|
timeoutSeconds: 5
|
||||||
|
failureThreshold: 3
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /api/health/ready
|
||||||
|
port: 7575
|
||||||
|
initialDelaySeconds: 45
|
||||||
|
periodSeconds: 15
|
||||||
|
timeoutSeconds: 5
|
||||||
|
failureThreshold: 3
|
||||||
@@ -8,30 +8,13 @@ image:
|
|||||||
|
|
||||||
replicaCount: 1
|
replicaCount: 1
|
||||||
|
|
||||||
# Override default probes - chart defaults are too aggressive for startup time
|
# Disable default probes - they kill the container before it finishes startup
|
||||||
probes:
|
# Will add custom probes via Kustomize patch with proper timing
|
||||||
liveness:
|
livenessProbe:
|
||||||
enabled: true
|
enabled: false
|
||||||
custom: true
|
|
||||||
spec:
|
readinessProbe:
|
||||||
httpGet:
|
enabled: false
|
||||||
path: /api/health/live
|
|
||||||
port: 7575
|
|
||||||
initialDelaySeconds: 60 # App needs time for migrations + icon fetch
|
|
||||||
periodSeconds: 30
|
|
||||||
timeoutSeconds: 5
|
|
||||||
failureThreshold: 3
|
|
||||||
readiness:
|
|
||||||
enabled: true
|
|
||||||
custom: true
|
|
||||||
spec:
|
|
||||||
httpGet:
|
|
||||||
path: /api/health/ready
|
|
||||||
port: 7575
|
|
||||||
initialDelaySeconds: 45 # Wait for WebSocket + analytics cron
|
|
||||||
periodSeconds: 15
|
|
||||||
timeoutSeconds: 5
|
|
||||||
failureThreshold: 3
|
|
||||||
|
|
||||||
tolerations:
|
tolerations:
|
||||||
- key: node-role.kubernetes.io/control-plane
|
- key: node-role.kubernetes.io/control-plane
|
||||||
|
|||||||
@@ -3,5 +3,10 @@ kind: Kustomization
|
|||||||
namespace: dashboard
|
namespace: dashboard
|
||||||
resources:
|
resources:
|
||||||
- homarr-secrets.enc.yaml
|
- homarr-secrets.enc.yaml
|
||||||
# Homarr deployed via Helm chart (values in 60-applications.yaml multi-source Application).
|
|
||||||
# This kustomization just holds the SOPS-encrypted SECRET_ENCRYPTION_KEY.
|
# Patch Homarr deployment with proper probe timing
|
||||||
|
patches:
|
||||||
|
- path: deployment-probes-patch.yaml
|
||||||
|
target:
|
||||||
|
kind: Deployment
|
||||||
|
name: homarr
|
||||||
|
|||||||
Reference in New Issue
Block a user