Skip to main content
Version: next

At a glance

Starts with

  • OpenBaoCluster creation and the requested replica count
  • TLS mode, unseal mode, and optional self-init configuration
  • a provisioned namespace boundary from Day 0 when multi-tenancy is in use

Primary owners

  • internal/service/certs
  • internal/service/infra
  • internal/service/init

Writes

  • TLS Secrets, trust-bundle surfaces, and rendered config.hcl
  • single-replica StatefulSet followed by scale-out after initialization
  • status.initialized, status.selfInitialized, and initial autopilot configuration

Hands off to

  • steady-state workload reconciliation once the cluster is initialized
  • day 2 upgrade, maintenance, and backup workflows
  • operator-facing configuration and first-cluster guides

Architectural Placement

Day 1 creation crosses three workload-side services in sequence:

  1. The cert manager ensures TLS material exists or is ready to be observed.
  2. The infrastructure manager renders the workload contract and keeps the StatefulSet at one replica.
  3. The init manager initializes the cluster, configures autopilot defaults, and only then permits scale-out.

That split keeps first-boot safety logic separate from routine steady-state reconciliation.

Diagram

Day 1 creation flow

First boot is a controlled handoff: TLS and rendered config first, one-node bootstrap second, initialization and autopilot third, then scale-out into the requested cluster size.

Decision matrix

Initialization paths

Initialization paths.
PathBest fitWhat changes in the control plane
Standard initializationUse when self-init is not enabled or you need the operator to drive /sys/init directly.The init manager performs the init call, stores the root token in a Secret, then marks status.initialized before scale-out.

Self-init flow

  • Cert and infra managers prepare TLS, seal, and rendered config as usual, but pod-0 receives self-init requests in the rendered startup configuration.
  • OpenBao initializes itself on first start and auto-revokes the transient root token instead of returning it to the operator.
  • The init manager detects successful initialization through service-registration labels or equivalent readiness signals and sets status.selfInitialized.
  • Once initialized, the infrastructure manager scales to the requested replica count and later pods auto-unseal and join the Raft cluster.
Self-init changes root-token handling

Self-init requires an auto-unseal mechanism. In exchange, it avoids creating a root-token Secret and keeps bootstrap closer to OpenBao’s native startup path.

Reference table

Safety boundaries

Safety boundaries.
ConcernCreation behavior
Root material handlingStandard init stores the root token in a Secret without logging the init response; self-init avoids creating the Secret entirely.
Already initialized detectionThe init manager skips the init call when service-registration labels or health prove the cluster is already initialized.
Autopilot baselineThe init manager applies valid autopilot defaults before steady-state operations and later upgrades begin.

Continue the lifecycle

Next release documentation

You are reading the unreleased main docs. Use the version menu for the newest published release, or check the release notes for what is already out.

Was this page helpful?

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