Skip to main content
Version: 0.1.0-rc.5

Decision matrix

Stay on multi-tenant unless this is true

Stay on multi-tenant unless this is true.
QuestionMulti-tenant defaultChoose single-tenant whenGo deeper
Control-plane shapeController plus ProvisionerController only is the right operational model for this environment.Architecture overview
Operational tradeoffMore default platform structure in exchange for clearer shared-operator boundaries.A simpler dedicated setup matters more than cross-namespace platform workflows.Deployment decision guide

Diagram

Single-tenant control path

The controller watches one target namespace directly. There is no Provisioner and no tenant onboarding layer in front of the cluster resources.

Install the single-tenant branch

Apply

Install the operator in single-tenant mode with Helm

bash

helm install openbao-operator oci://ghcr.io/dc-tec/charts/openbao-operator \
--namespace openbao-operator-system \
--create-namespace \
--set tenancy.mode=single \
--set tenancy.targetNamespace=openbao

Replace openbao-operator-system and openbao with the namespaces you actually intend to keep operating. In this mode the target namespace is the controller watch scope, not just an example value.

Reference table

Helm settings to care about

Helm settings to care about.
SettingWhat it controlsDefault or note
tenancy.targetNamespaceSets the watched namespace and target RoleBinding scopeDefaults to the release namespace when unset
fullnameOverride or release nameChanges the rendered controller identityRecheck JWT auth and RoleBinding subjects after custom naming
admissionPolicies.enabledControls ValidatingAdmissionPolicies for the installKeep enabled unless your platform does not support them
What changes in this branch

Single-tenant mode removes the Provisioner, skips OpenBaoTenant, and gives the controller direct namespace-scoped access instead. That is simpler for a dedicated team, but it also means the operator is no longer modeling the default shared-platform boundary for you.

Verify the install before you create a cluster

Inspect

Check that only the controller is running

bash

kubectl get pods -n <operator-namespace>

In single-tenant mode you should see the controller deployment running, but not a Provisioner pod.

Verify

Confirm the watched namespace matches the intended target

bash

kubectl get deploy -n <operator-namespace> openbao-operator-controller \
-o jsonpath='{.spec.template.spec.containers[0].env[?(@.name=="WATCH_NAMESPACE")].value}'

This value should match the target namespace you plan to use for the first OpenBaoCluster.

Migration guidance

Decision matrix

When to migrate between tenancy modes

When to migrate between tenancy modes.
MoveUse it whenMain work before or afterWatch for
Single-tenant to multi-tenantYou need shared platform ownership or want to return to the default onboarding model.Re-enable the Provisioner and model namespace access through OpenBaoTenant resources.Manual single-tenant RoleBindings must not linger after the switch.

Return to the main path

Prerelease documentation

This version tracks a prerelease build. Features and behavior may change before the next stable release.

Was this page helpful?

Use Needs work to open a structured GitHub issue for this page. The Yes button only acknowledges the signal locally.