What is a Namespace?
A Namespace is a unit of isolation within the Temporal Platform.
- How to list Namespaces in a Cluster using tctl
- How to register a new Namespace using tctl
- How to set the Namespace for a Temporal Client
- How to view (describe) Namespace metadata and details using tctl
A single Namespace is still multi-tenant.
You can use Namespaces to match the development lifecycle; for example, having separate dev
and prod
Namespaces.
Or you could use them to ensure Workflow Executions between different teams never communicate; such as ensuring that the teamA
Namespace never impacts the teamB
Namespace.
- If no other Namespace is specified, the Temporal Cluster uses the Namespace "default" for all Temporal SDKs and tctl.
- If you are deploying through Docker Compose or using the auto-setup image in a custom Docker Compose application, the Namespace "default" is created, through the auto-setup script.
- If you are deploying through the Temporal Helm charts, you can create the "default" Namespace by using tctl; for example,
tctl namespace default
. We recommend using the default Namespace if you aren’t using multiple Namespaces.
- Case Insensitive: Because of DNS, Namespaces are case insensitive on the network and routing side. We recommend using lowercase for namespace names to avoid potential issues.
- Membership: Task Queue names and Workflow Ids must all correspond to a specific Namespace. For example, when a Workflow Execution is spawned, it does so within a specific Namespace.
- Uniqueness: Temporal guarantees a unique Workflow Id within a Namespace. Workflow Executions may have the same Workflow Id if they are in different Namespaces.
- Namespace Configuration: Various configuration options like the retention period and the Archival destination are configured per Namespace through a special CRUD API or through
tctl
.