Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions k8s/bases/apps/actual-budget/helm-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,23 @@ spec:
matchLabels:
app.kubernetes.io/name: actualbudget
app.kubernetes.io/instance: actual-budget
# Chart hardcodes startupProbe absence; values override the
# liveness/readiness blocks below but not startupProbe. Gate
# liveness/readiness on the container actually serving HTTP.
# initialDelaySeconds skips past the ~10s cold-start window so
# the first probe lands on a serving container β€” zero failure
# events during the merge-queue's 90s steady-state Warning
# check.
- op: add
path: /spec/template/spec/containers/0/startupProbe
value:
httpGet:
path: /
port: http
initialDelaySeconds: 20
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 12 # 60s grace beyond initial delay
Comment thread
devantler marked this conversation as resolved.
# https://github.com/community-charts/helm-charts/blob/main/charts/actualbudget/values.yaml
values:
replicaCount: ${actual_budget_replicas:=1}
Expand Down
20 changes: 20 additions & 0 deletions k8s/bases/apps/headlamp/helm-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,26 @@ spec:
value:
name: tmp-dir
mountPath: /tmp
# Chart hardcodes liveness/readiness with K8s defaults
# (timeoutSeconds: 1, failureThreshold: 3, periodSeconds: 10).
# Headlamp is KEDA-scaled to 0 in prod; every cold start logs
# 1-3 Unhealthy probe warnings while the Go binary initialises.
# Add a startupProbe so liveness/readiness are gated until the
# main container is actually serving.
# initialDelaySeconds skips past the cold-start window so the
# first probe lands on a serving container β€” zero failure
# events during the merge-queue's 90s steady-state Warning
# check.
- op: add
path: /spec/template/spec/containers/0/startupProbe
value:
httpGet:
path: /
port: http
initialDelaySeconds: 20
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 12 # 60s grace beyond initial delay
Comment thread
devantler marked this conversation as resolved.
- target:
kind: Deployment
name: headlamp
Expand Down
22 changes: 22 additions & 0 deletions k8s/bases/apps/homepage/helm-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,28 @@ spec:
matchLabels:
app.kubernetes.io/name: homepage
app.kubernetes.io/instance: homepage
# Chart hardcodes liveness/readiness with K8s defaults
# (timeoutSeconds: 1, failureThreshold: 3, periodSeconds: 10).
# Homepage takes ~13s to start serving on a fresh pod, so each
# rollout produces 3 Unhealthy probe warnings per pod and leaves
# only ~17s of headroom before the liveness restart fires. Add
# a startupProbe to gate liveness/readiness during initial boot.
#
# initialDelaySeconds is past the observed ~13s cold start so
# the first probe lands on a serving container β€” zero failure
# events during a normal rollout (the merge-queue's 90s
# steady-state Warning check would otherwise count probe
# failures fired in that window).
- op: add
path: /spec/template/spec/containers/0/startupProbe
value:
httpGet:
path: /
port: http
initialDelaySeconds: 20
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 12 # 60s grace beyond initial delay
Comment thread
devantler marked this conversation as resolved.
# Flicker fix: with replicaCount=2 and the chart's default ClusterIP
# service, the Kubernetes widget's poll for node/cluster CPU/memory
# round-robins between two pods that each maintain their own
Expand Down
Loading