mirror of
https://gitlab.kube.huskypup.net/Scooby/Homelabv4.git
synced 2026-08-21 05:26:49 +00:00
The DNS-flip watcher (scripts/vps-dns-failover/) was designed but never actually installed on the VPS despite being tracked as done - real gap, found when asked whether the standby services are actually reachable. New design: instead of dynamically flipping *.kube.huskypup.net between home and VPS IPs, give the VPS site its own permanent, always-resolving subdomain - vault/gitea/auth/n8n/nextcloud.vps.huskypup.net, each with real Ingress+TLS on the VPS's own Traefik+cert-manager (both already installed by Phase 0 bootstrap, just never wired up). No token-scoping decision needed since there's no dynamic flipping - reuses the same cert-manager token pattern as home. Also scales Authentik/n8n/Nextcloud from 0 to 1 replica on the VPS so the replicated data is actually browsable at all times, not just present-but-unreachable. Their CNPG clusters are still read-only replicas (spec.replica.enabled: true) - writes will error until a deliberate manual promotion, but reads/browsing work now. Vault and Gitea were already running continuously.
108 lines
2.4 KiB
YAML
108 lines
2.4 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
|
|
|
|
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: {}
|