···11-# traefik-forward-auth, one TFA pod per protected app. Each app entry
22-# becomes a Deployment, Service, Ingress, Middleware and Secret (all
33-# named forward-auth-<key>), plus an auth-<key>.cute.haus callback host.
44-# The OIDC client creds live in a separate Secret that ansible writes —
55-# see ansible/playbooks/tasks/integrations/forward-auth.yml.
11+# Per-app traefik-forward-auth deployments. Each entry renders a
22+# Deployment + Service + Ingress + Middleware + Secret pair.
6374image:
85 repository: thomseddon/traefik-forward-auth
···1613 limits:
1714 cpu: 500m
1815 memory: 128Mi
1919-2020-failover:
2121- fastTolerationSeconds: 60
22162317ingressClassName: traefik
2418tlsSecret: cute-haus-tls
···2222 # Spread instances across control-plane nodes
2323 topologyKey: kubernetes.io/hostname
24242525-# Shorten the per-pod toleration for not-ready/unreachable taints so CNPG
2626-# fails over to a healthy replica sooner when a node dies. Default would be
2727-# 300s; mirroring the 60s we use for app pods cuts forgejo etc. recovery
2828-# time from ~6min to ~2min.
2929-failover:
3030- fastTolerationSeconds: 60
2525+# Tuned for a small shared cluster; bump if individual apps need more
2626+# connections or heavier analytical workloads.
2727+postgresql:
2828+ parameters:
2929+ max_connections: "200"
3030+ shared_buffers: 1GB
3131+ effective_cache_size: 2GB
3232+ work_mem: 16MB
3333+ maintenance_work_mem: 128MB
3434+ random_page_cost: "1.1"
3535+ effective_io_concurrency: "200"
31363232-# Declarative role + database management. Each entry produces:
3333-# - kubernetes.io/basic-auth Secret (<name>-pg-creds) consumed by CNPG
3434-# - entry under Cluster.spec.managed.roles[] (CNPG creates/maintains role)
3535-# - Database CRD owned by the role (defaults to role name; override via
3636-# `database: <name>`).
3737-# Passwords come from values/secrets/pg-shared.yaml via vals + sops.
3838-# Apps consume their connection string via DATABASE_URL refs into
3939-# secrets/pg-roles.yaml.
3737+# Declarative CNPG roles + databases. Passwords come from
3838+# values/secrets/pg-shared.yaml via vals + sops.
4039roles: {}
41404242-# B2 (S3-compatible) backup of the cnpg cluster. WAL archiving is continuous;
4343-# base backup runs on the schedule below. WAL retention is implicit — CNPG
4444-# keeps enough WAL to PITR from the oldest base backup within retentionPolicy.
4141+# B2 backup target for CNPG base backups + WAL archiving.
4542# Filled by values/secrets/pg-shared.yaml.
4643backup:
4744 enabled: false
···11-# Plex plugins/scanners are provisioned into the config volume by an initContainer
22-# on every pod start, pinned to exact commits via GitHub archive tarballs.
33-# initContainer image comes from values/global.yaml → .Values.global.images.alpine
11+# Plugins and scanners provisioned by initContainer on every pod start.
42plugins:
53 # Cloned wholesale into "Plug-ins/<name>".
64 bundles:
···11-# Shared OCI image pins used across charts. Bump a digest here once and
22-# every initContainer / sidecar that references these values picks it up.
33-# Goal: prevent pull churn by reusing the same pinned images everywhere.
11+# Shared operational constants and OCI image pins. Bump once and every
22+# chart that references these values picks it up automatically.
43global:
54 images:
65 alpine: docker.io/library/alpine:3.24@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b
76 rclone: rclone/rclone:1.74@sha256:623378ad0ff3ebd5cebf77720843c0e02edfe46e2d5b5ac6bed54c6371780dfb
77+88+ failover:
99+ # Fast eviction when a node goes NotReady/Unreachable. Mirrors the
1010+ # app-pod toleration so CNPG and stateful workloads fail over quickly.
1111+ fastTolerationSeconds: 60