Namespace mapping
By default, Union.ai maps each project-domain pair to a Kubernetes namespace using the pattern {project}-{domain}. For example, the project flytesnacks in domain development runs workloads in namespace flytesnacks-development.
You can customize this mapping by setting the namespace_mapping.template value in your Helm configuration.
Template syntax
The template uses Go template syntax with two variables:
{{ project }}— the project name{{ domain }}— the domain name (e.g.,development,staging,production)
Examples
| Template | Project | Domain | Resulting namespace |
|---|---|---|---|
{{ project }}-{{ domain }} (default) |
flytesnacks |
development |
flytesnacks-development |
{{ domain }} |
flytesnacks |
development |
development |
myorg-{{ project }}-{{ domain }} |
flytesnacks |
development |
myorg-flytesnacks-development |
Changing namespace mapping after workflows have run will cause existing data in old namespaces to become inaccessible. Plan your namespace mapping before initial deployment.
Data plane configuration
Set the namespace_mapping value at the top level of your dataplane Helm values. This single value cascades to all services that need it: clusterresourcesync, propeller, operator, and executor.
namespace_mapping:
template: "myorg-{{ '{{' }} project {{ '}}' }}-{{ '{{' }} domain {{ '}}' }}"The template uses Helm’s backtick escaping for Go template delimiters. In your values file, wrap {{ project }} and {{ domain }} with backtick-escaped {{ and }} delimiters as shown above.
How it works
Namespace mapping controls several components:
| Component | Role |
|---|---|
| Clusterresourcesync | Creates Kubernetes namespaces and per-namespace resources (service accounts, resource quotas) based on the mapping |
| Propeller | Resolves the target namespace when scheduling workflow pods |
| Operator | Resolves the target namespace for operator-managed resources |
| Executor | Resolves the target namespace for task execution |
| Flyteadmin (control plane) | Determines the target namespace when creating V1 executions |
All components must agree on the mapping. The dataplane chart’s top-level namespace_mapping value is the canonical source that cascades to clusterresourcesync, propeller, operator, and executor automatically. You should not set per-service overrides.