Files
axion1337.chat-gitops/apps/authentik/authentik.yaml
T
Thore Cimbal df6d291d81 authentik: disarm the automatic rollback before the version jump (#0051)
The release carried upgrade remediation with three retries and no strategy. The
Flux CRD is explicit: the strategy defaults to rollback, remediation runs between
each attempt, and the last failure is remediated as well whenever retries exceed
zero. A failing upgrade would therefore have rolled Helm back to the old version
up to four times, against a database Django had already migrated forward — the
migration inconsistency Authentik's own documentation warns about, triggered by
this line.

Here the way back is a database restore, not a version rollback, so an automatic
rollback cannot help and can only deepen the damage. It goes back to three once
the jump is done; outside a migration window the remediation is right.

Nothing else changes: the chart version, the values and the install remediation
are untouched.
2026-08-21 12:00:00 +00:00

116 lines
3.3 KiB
YAML

apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: authentik
namespace: authentik
spec:
interval: 1h
chart:
spec:
chart: authentik
version: "2026.2.3"
sourceRef:
kind: HelmRepository
name: goauthentik
namespace: flux-system
install:
remediation:
retries: 3
upgrade:
remediation:
# ⚠️ Waehrend des Authentik-Sprungs 2026.2.3 -> 2026.5.6 -> 2026.8.0 auf 0.
# Die Flux-CRD sagt: strategy defaults to 'rollback', Remediation laeuft
# ZWISCHEN jedem Versuch, und remediateLastFailure ist bei retries>0
# ebenfalls scharf. Ein misslingendes Upgrade wuerde damit bis zu viermal
# auf die alte Fassung zurueckgerollt - gegen eine Datenbank, die Django
# schon nach vorne migriert hat. Genau der Zustand 'migration inconsistency',
# vor dem Authentiks Anleitung warnt, ausgeloest von dieser Zeile.
# Der Rueckweg ist hier eine Datenbank-Wiederherstellung, keine
# Fassungsruecknahme (management #0051).
# NACH dem Sprung zurueck auf 3 - im Normalbetrieb ist die Behebung richtig.
retries: 0
valuesFrom:
- kind: Secret
name: authentik-credentials
valuesKey: secret_key
targetPath: authentik.secret_key
- kind: Secret
name: authentik-credentials
valuesKey: pg-password
targetPath: authentik.postgresql.password
- kind: Secret
name: authentik-credentials
valuesKey: pg-password
targetPath: postgresql.auth.password
- kind: Secret
name: authentik-credentials
valuesKey: smtp-password
targetPath: authentik.email.password
values:
global:
security:
allowInsecureImages: true
# Read by the matrix-oidc-provider blueprint via !Env, so the OAuth2
# Provider's client_secret can be captured as code without ever
# inlining the live credential into a plain (non-SOPS) ConfigMap.
env:
- name: AUTHENTIK_MAS_OIDC_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: authentik-credentials
key: mas-oidc-client-secret
authentik:
log_level: info
error_reporting:
enabled: false
email:
host: smtp.ionos.de
port: 587
username: gamemaster@axion1337.chat
use_tls: true
from: "Authentik <gamemaster@axion1337.chat>"
blueprints:
configMaps:
- authentik-blueprints
server:
ingress:
enabled: false
resources:
requests:
cpu: 100m
memory: 512Mi
limits:
memory: 1Gi
worker:
resources:
requests:
cpu: 50m
memory: 512Mi
limits:
memory: 1Gi
postgresql:
enabled: true
auth:
username: authentik
database: authentik
primary:
persistence:
enabled: true
size: 8Gi
resources:
requests:
cpu: 50m
memory: 256Mi
limits:
memory: 512Mi
# Chart's own generated policy allows ANY pod in ANY namespace on 5432
# (see issue #37) - disabled in favor of our own scoped policy in
# apps/authentik/networkpolicy.yaml.
networkPolicy:
enabled: false