Choose a deployment model

Choose tenancy, security, bootstrap, TLS, installation, and upgrade contracts for the environment.

Updated 9 August 2026 · 3 min read

On this page

Decide the tenancy model

ModelUse it whenControl-plane behaviorNamespace handoff
Multi-tenantA platform team operates OpenBao for one or more namespacesRuns the controller and ProvisionerEvery target namespace is introduced through OpenBaoTenant
Single-tenantOne team owns one operator and one namespaceRuns only the controller with WATCH_NAMESPACEA direct target RoleBinding replaces OpenBaoTenant

The Helm chart defaults to multi-tenant mode. This is an implementation default, not a claim that every production deployment must be shared. Use single-tenant mode when its dedicated ownership boundary fits.

Choose the cluster contract

DecisionEvaluationProduction recommendationActual default or requirement
Security profileDevelopmentHardenedspec.profile is required and has no default
ReplicasOne or moreAt least three votersAPI defaults to three; Hardened rejects fewer than three
TLSOperatorManagedExternal or ACMETLS mode defaults to OperatorManaged; Hardened rejects it
UnsealStatic auto-unsealExternal KMS, transit, KMIP, OCI KMS, or PKCS#11Omitted unseal defaults to static
InitializationOperator-managed evaluation flowSelf-init with operator and human authenticationSelf-init defaults to disabled; Hardened requires it
UpgradeRollingUpdateStart with RollingUpdate; choose BlueGreen for controlled cutoverRolling update is the API default
AdmissionLeave enabledLeave enabledChart default is enabled

Do not create a Hardened cluster until all required fields are complete. Admission requires External or ACME TLS, non-static unseal, enabled self-init, and at least three replicas. Self-init also requires a non-empty request list.

Choose the installation owner

Install pathUse it whenPrimary verification
HelmThe platform wants a released, configurable lifecyclePinned chart version, release namespace, Deployments, CRDs, admission policies
Pinned release manifestThe platform wants the published default resources without HelmExact release URL and resulting default identities
Kustomize overlayNamespace, identity, or single-tenant wiring must be customized togetherRendered ServiceAccounts, RoleBindings, admission variables, and environment
Source deploymentLocal development or contribution onlyBuilt image, generated resources, and development namespace

Use Helm multi-tenant mode for the core guide. The current Helm single-tenant settings do not set the runtime WATCH_NAMESPACE; the dedicated guide uses the tested Kustomize overlay instead.

Separate authentication decisions

Operator lifecycle access and human login are different contracts:

  • spec.selfInit.oidc.enabled bootstraps projected-JWT authentication for the controller and lifecycle Jobs.
  • spec.selfInit.requests must create at least one usable human authentication path before the root token is revoked.
  • Existing clusters own later OpenBao policy changes; self-init does not continuously reconcile them.

Review operator authentication and operator authorization before a production bootstrap or any custom controller identity.

Decide whether BlueGreen is justified

Start with RollingUpdate when sequential Pod replacement and lower resource overhead are acceptable. Choose BlueGreen when parallel validation, manual promotion, or a stronger cutover boundary justifies the extra workloads, PVCs, states, and peer-management authority.

The operator can switch either strategy on an existing healthy, idle cluster. The strategy change must be a separate request from any version, image, replica, storage, or restart change. See prepare for production operations.

Continue with installation only when these choices are explicit.

Search the handbook

Try “install”, “threat model”, or “compatibility”.