Skip to content

PolarisNamespace

A logical container for tables and views inside a catalog. Nesting is expressed by chaining parentRef rather than carrying a full path on a single CR, so each level has its own lifecycle, ownerRef chain, and reconciliation status.

Spec

Field Type Required Default Description
catalogRef CatalogRef yes The PolarisCatalog this namespace lives under.
parentRef NamespaceRef no Makes this a nested namespace under another PolarisNamespace. Both refs must resolve to the same catalog.
name string no .metadata.name Final path segment in Polaris. Pattern ^[a-zA-Z0-9_-]+$.
properties map[string]string no Open-ended property bag. Common keys: location, owner.

Status

Field Description
fullPath Fully qualified namespace path, resolved by walking parentRef. For example ["analytics", "sales"].
conditions Ready, Synced.

Nesting example

apiVersion: polaris.k8s.calific.io/v1alpha1
kind: PolarisNamespace
metadata:
  name: analytics
  namespace: data-platform
spec:
  catalogRef:
    name: lakehouse
---
apiVersion: polaris.k8s.calific.io/v1alpha1
kind: PolarisNamespace
metadata:
  name: analytics-sales
  namespace: data-platform
spec:
  catalogRef:
    name: lakehouse
  parentRef:
    name: analytics
  name: sales              # final Polaris-side path segment; overrides metadata.name

The nested namespace ends up as analytics.sales in Polaris. That's why metadata.name had to be analytics-sales, since Kubernetes names must be unique within a namespace across the whole nesting tree, while spec.name carries the actual path segment.

Note

Enforcing that parentRef resolves to the same catalogRef as this namespace is a reconciler check, not something the CRD schema alone can express. If you see it rejected, it's here, not in Polaris.