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/bootstrap
  • internal/service/networking
  • internal/service/identity
  • internal/service/workload
  • internal/service/init

Writes

  • TLS Secrets, trust-bundle surfaces, and rendered config.hcl
  • network and identity prerequisites for the main workload
  • 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 the workload-side services in sequence:

  1. The cert manager ensures TLS material exists or is ready to be observed.
  2. The bootstrap manager renders config and startup prerequisites.
  3. The networking and identity managers create the service and RBAC surfaces the workload needs.
  4. The workload manager holds the StatefulSet at one replica and applies rollout-safe workload resources.
  5. The init manager initializes the cluster, configures autopilot defaults, and only then allows 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 prerequisites 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 bootstrap managers prepare TLS, seal, rendered config, and self-init requests before the first pod starts.
  • Networking and identity managers ensure the workload reaches the expected service and RBAC baseline before scale-out begins.
  • 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 workload 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.