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.
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
| Model | Setting | When to use it |
|---|---|---|
| Single namespace | global.singleNamespace: true (default) | Local development, demos, small clusters, or shared-tenant restrictions where you only get one namespace. |
| Multi namespace | global.singleNamespace: false | Production 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.