mirror of
https://gitlab.kube.huskypup.net/Scooby/Homelabv4.git
synced 2026-08-20 23:16:49 +00:00
The n8n chart (riatlas/chart__n8n) doesn't support startupProbe at all - my earlier fix set a field the chart ignores, so the liveness probe was still killing the container ~40s into startup (exitCode 143, confirmed live via repeated crashloops even after the first 'fix'). n8n takes longer than that to bind :5678 on the VPS's more modest hardware. Widened readiness/liveness directly instead: ~190s total runway before a liveness kill.
132 lines
3.1 KiB
YAML
132 lines
3.1 KiB
YAML
# n8n warm standby on the VPS - Phase 2. Same discipline as
|
|
# infrastructure/vps-standby/authentik/values.yaml: the CNPG replica
|
|
# cluster keeps the DB continuously warm in the background, and the app
|
|
# runs continuously too (replicaCount: 1, reachable at
|
|
# n8n.vps.huskypup.net - see manifests/ingress.yaml) - workflow
|
|
# saves/executions will error against the read-only DB until a
|
|
# deliberate manual promotion (flip pg-n8n's spec.replica.enabled to
|
|
# false), but the UI and existing workflow definitions are browsable.
|
|
#
|
|
# N8N_ENCRYPTION_KEY must be byte-identical to home's - it decrypts
|
|
# stored credentials (API keys, OAuth tokens, etc.) that live encrypted
|
|
# in the DB being replicated. Unlike Authentik's chart-deterministic
|
|
# secret_key, n8n's isn't derived from anything reproducible - it's
|
|
# copied for real (kubectl, not git, same as Vault's unseal key /
|
|
# root token):
|
|
# kubectl -n n8n create secret generic n8n-config-secret \
|
|
# --from-literal=encryption-key=<home's N8N_ENCRYPTION_KEY>
|
|
image:
|
|
repository: n8nio/n8n
|
|
tag: "2.0.3"
|
|
|
|
config:
|
|
database:
|
|
type: postgresdb
|
|
postgresdb:
|
|
host: pg-n8n-rw
|
|
port: 5432
|
|
database: n8n
|
|
user: n8n
|
|
schema: public
|
|
generic:
|
|
timezone: America/New_York
|
|
path: /
|
|
host: n8n.vps.huskypup.net
|
|
port: 5678
|
|
protocol: https
|
|
executions:
|
|
mode: regular
|
|
saveDataOnError: all
|
|
saveDataOnSuccess: all
|
|
saveDataManualExecutions: true
|
|
pruneData: true
|
|
pruneDataMaxAge: 3760
|
|
|
|
secret: {}
|
|
|
|
replicaCount: 1
|
|
|
|
service:
|
|
type: ClusterIP
|
|
port: 80
|
|
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
capabilities:
|
|
drop:
|
|
- ALL
|
|
seccompProfile:
|
|
type: RuntimeDefault
|
|
|
|
ingress:
|
|
enabled: false
|
|
|
|
persistence:
|
|
enabled: true
|
|
type: existing
|
|
existingClaim: n8n-main-persistence
|
|
storageClass: local-path
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
size: 10Gi
|
|
|
|
resources:
|
|
requests:
|
|
cpu: 50m
|
|
memory: 256Mi
|
|
limits:
|
|
cpu: "500m"
|
|
memory: 512Mi
|
|
|
|
# This chart has no startupProbe support at all (confirmed against
|
|
# `helm show values` - only livenessProbe/readinessProbe exist), so the
|
|
# liveness probe itself has to be generous enough to cover full startup -
|
|
# even home's copied startupProbe timings (60s total) weren't enough on
|
|
# the VPS's more modest hardware; confirmed live it needs 100s+.
|
|
# initialDelaySeconds + (periodSeconds * failureThreshold) = 190s runway.
|
|
readinessProbe:
|
|
httpGet:
|
|
path: /healthz
|
|
port: http
|
|
initialDelaySeconds: 30
|
|
periodSeconds: 5
|
|
timeoutSeconds: 3
|
|
failureThreshold: 20
|
|
|
|
livenessProbe:
|
|
httpGet:
|
|
path: /healthz
|
|
port: http
|
|
initialDelaySeconds: 30
|
|
periodSeconds: 10
|
|
timeoutSeconds: 5
|
|
failureThreshold: 16
|
|
|
|
extraEnvSecrets:
|
|
DB_POSTGRESDB_PASSWORD:
|
|
name: pg-n8n-app
|
|
key: password
|
|
N8N_ENCRYPTION_KEY:
|
|
name: n8n-config-secret
|
|
key: encryption-key
|
|
|
|
extraEnv:
|
|
WEBHOOK_URL: https://n8n.vps.huskypup.net/
|
|
N8N_EDITOR_BASE_URL: https://n8n.vps.huskypup.net
|
|
N8N_LOG_LEVEL: error
|
|
|
|
postgresql:
|
|
enabled: false
|
|
|
|
redis:
|
|
enabled: false
|
|
|
|
scaling:
|
|
enabled: false
|
|
|
|
extraVolumes: []
|
|
extraVolumeMounts: []
|
|
nodeSelector: {}
|
|
tolerations: []
|
|
affinity: {}
|