Skip to main content
Version: V2-Next

Multi-Namespace Support

CIVITAS/CORE can run all components in a single namespace or give each component its own namespace. This page explains the two models and how to choose between them.

tip

For the actual configuration — enabling multi-namespace mode, overriding a component's namespace, and referencing components across namespaces (secrets, network policies, APISIX routes/plugins, service hosts) — see Multi-Namespace Configuration.

Choosing a Model

ModelSettingWhen to use it
Single namespaceglobal.singleNamespace: true (default)Local development, demos, small clusters, or shared-tenant restrictions where you only get one namespace.
Multi namespaceglobal.singleNamespace: falseProduction and staging. Gives per-component isolation, clearer RBAC boundaries, and stricter network policies.

How Namespaces Are Created

In both models you do not name namespaces yourself. They are derived from global.instanceSlug and the component name:

  • Single namespace: everything lands in <instanceSlug> (e.g. dev).
  • Multi namespace: each component gets <instanceSlug>-<component> (e.g. dev-postgres, dev-keycloak, dev-apisix).

Because everything is derived from instanceSlug, switching between the two models is a single configuration flag — you never rename namespaces by hand, and cross-namespace references that use component names keep working in both models.

Next Steps

Head to Multi-Namespace Configuration to enable the model you picked and wire up cross-namespace references.