Skip to content

feat(db): authentik_mendys allocation for the MendysRobotics identity silo - #421

Merged
izzywdev merged 2 commits into
mainfrom
claude/mendys-authentik-oidc-client-7466b8
Jul 28, 2026
Merged

feat(db): authentik_mendys allocation for the MendysRobotics identity silo#421
izzywdev merged 2 commits into
mainfrom
claude/mendys-authentik-oidc-client-7466b8

Conversation

@github-actions

@github-actions github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Declares the Postgres allocation backing a second Authentik instance for MendysRobotics, deployed by the FuzeFront chart.

Companion PR: izzywdev/FuzeFront#428

Why a separate database

MendysRobotics needs its own set of accounts — a FuzeFront user must not be recognised by the Mendys apps, and vice versa.

Authentik has no realm. One instance is one user directory, and brands (authentik_brands.brand) are branding + default flows only — per authentik's docs, "all objects like applications and providers are still global". Hard tenancy (a Postgres schema per tenant, 2024.2+) does give real separation, but it is Enterprise-only, still alpha, requires a license per tenant, and is created only through the API — so it cannot be expressed as a blueprint in git, which is how every other authentik object is managed here.

A second instance on its own database gives the same isolation property for free and stays fully declarative.

Changes

  • serviceDatabases entry authentik-mendys → role authentik_mendys_user, database authentik_mendys, in values.yaml and values-contabo.yaml. Provisioned by the existing fuzeinfra-service-db-provision PostSync Job — nothing imperative.
  • governance/datastore-allocations.md: Postgres row + Redis index row.

Redis index 2 is claimed deliberately. Authentik stores cache and sessions under non-namespaced key names, so the Mendys instance must not share index 0 with the FuzeFront authentik (which uses authentik's default of 0) — they would collide and leak session state across the very boundary this split exists to create. An ACL user is not applicable here: authentik owns its key layout and does not prefix keys, so there is nothing to scope a prefix ACL to.

Gated OFF in both values files — on purpose

Per governance/datastore-provisioning.md, the gate flips only in the PR that lands the strict-scoped authentik-mendys-db-credentials SealedSecret (key password) for the fuzeinfra namespace. FuzeFront owns that password (its Authentik pods connect with it) and seals it into both namespaces. Flipping this to true before that Secret exists fails the PostSync Job.

No credential is generated or committed in this PR.

Verification

serviceDatabases parses correctly in both values files and the new entry is present and disabled in each. Chart behaviour is unchanged while gated off.

🤖 Generated with Claude Code

izzywdev and others added 2 commits July 27, 2026 23:33
…Robotics IdP silo

MendysRobotics gets its own Authentik instance (deployed by the FuzeFront
chart) rather than a brand/provider on the shared FuzeFront directory, so
its accounts are genuinely separate: a FuzeFront account is not recognised
by the Mendys apps and vice versa, and the same email may exist in both.

Authentik has no realm. One instance = one user directory; brands are
branding + default flows only ("all objects like applications and providers
are still global"). Schema-per-tenant hard tenancy exists from 2024.2 but is
Enterprise-only, alpha, licensed per tenant and API-managed — incompatible
with the blueprint/GitOps model. A second instance on its own database gives
the same isolation for free and stays declarative.

Adds the `authentik-mendys` serviceDatabases entry (role
authentik_mendys_user, database authentik_mendys) to the base and Contabo
values, plus the allocation registry row. Gated OFF in both: per
governance/datastore-provisioning.md the gate flips only in the PR that
lands the strict-scoped `authentik-mendys-db-credentials` SealedSecret for
the fuzeinfra namespace. No credential is generated or committed here.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session-Id: 55a394fa-d5ba-4da4-b41f-b0ef56fa6ddf
… silo

authentik keeps cache + sessions in Redis under non-namespaced key names, so
the Mendys instance must not share index 0 with the FuzeFront authentik. An
ACL user is not applicable here — authentik owns its key layout and does not
prefix keys, so there is nothing to scope a prefix ACL to.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session-Id: 55a394fa-d5ba-4da4-b41f-b0ef56fa6ddf
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant