0.4.0
0.4.0 is the next stable pre-GA release line for OpenBao Operator. This
release focuses on security-boundary hardening, explicit delegation for
high-impact controls, and safer self-initialization for auto-unseal clusters.
It also refreshes the OpenBao validation baseline and expands property and
model-based test coverage for lifecycle-critical paths.
Highlights
- Tightened the authorization boundary around sensitive
OpenBaoClusterand
OpenBaoRestorecontrols. Network publication, custom helper images, image
trust roots, cloud identity references, restore delegation, and other
high-impact fields now require explicit Kubernetes-side authority instead of
being implicitly accepted from ordinary cluster update rights. - Hardened the production contract for unsafe controls. Hardened clusters now
reject more ambiguous or unsafe shapes consistently, including raw or broad
network policy escape hatches, implicit object-storage identity in hardened
backup and restore paths, unsafe TLS and observability settings, and
dangerous runtime overrides. - Added managed-resource provenance guardrails. Operator-managed resources are
annotated with ownership metadata, and admission policies lock protected
resources so direct mutation does not silently bypass the owning
OpenBaoClustercontract. - Added initial recovery-key bootstrap for self-initializing auto-unseal
clusters throughspec.recoveryKeys.initial. The operator can now render the
first recovery-key request with declared OpenPGP recipients, share count, and
threshold during initial self-init. - Made self-init bootstrap configuration one-shot. Bootstrap configuration is
cleaned up after initialization succeeds, reducing the chance that stale
first-boot material remains part of steady state. - Moved the default OpenBao validation baseline to
2.5.5, with current
release validation covering Kubernetesv1.34andv1.35and config
compatibility coverage for OpenBao2.4.4and2.5.5. - Refreshed Go, base image, GitHub Actions, website, and transitive dependency
baselines, including the dependency security-policy alignment needed by CI
and Nightly security scans. - Added property and model-based tests for ownership/provenance, backup job
environment rendering, operation locks, upgrade request state, rolling
upgrade state, and restore lifecycle behavior.
Breaking and Migration Notes
- Apply the
0.4.0CRDs before upgrading the controller or Helm chart. This
release adds and tightensopenbao.org/v1alpha1fields, validation rules,
admission policies, and delegated RBAC roles. - Review RBAC for every identity that creates or updates
OpenBaoClusterand
OpenBaoRestoreresources. Users, GitOps controllers, and platform
automation may now need explicit delegated roles for network publication,
helper images, image trust roots, cloud identity references, restore
delegation, custom executables, or other dangerous controls. - Review existing Hardened clusters before applying admission enforcement.
Specs that previously updated successfully may now be rejected if they rely
on unsafe controls, broad network rules, provider-default backup or restore
identity, TLS verification bypasses, backend HTTP, raw ingress rules, or
dangerous runtime flags. - Review direct mutations of operator-managed Kubernetes resources. Resources
owned by anOpenBaoClusterare now expected to carry operator provenance,
and protected managed resources should be changed through the owning custom
resource rather than patched directly. - For self-init clusters, configure a real human access path in
spec.selfInit.requestsbefore first reconcile.spec.selfInit.oidc.enabled
only bootstraps operator lifecycle authentication; it does not create user
login access after the root token is auto-revoked. - Use
spec.recoveryKeys.initialonly for first-time self-initialization on
non-static unseal clusters. The recipient count must match the share count,
the threshold must be valid, and OpenPGP key custody and proof ceremonies
remain user-owned processes.
Operational Notes
- Treat 0.4.0 as a security-hardening release when planning rollout. Stage the
CRD and admission-policy update, then validate representative cluster specs
before upgrading production controllers. - In multi-tenant environments, audit the difference between ordinary cluster
authors and platform administrators. The new delegated roles are intended to
let tenants manage day-to-day cluster intent without automatically gaining
authority over publication, restore, image, or identity trust boundaries. - If you use GitOps, make sure the controller identity has the same delegated
permissions as the human or platform role it represents. Otherwise GitOps may
fail on apply even when the manifest is otherwise valid. - If you rely on backup, restore, or upgrade jobs, verify the JWT role path and
object-storage identity path in staging. Hardened clusters favor explicit job
identity throughcredentialsSecretRef, workload identity metadata, or
provider-specific role configuration instead of ambient credentials. - Self-init recovery-key bootstrap does not replace recovery-key custody. Plan
recipient verification, share distribution, and recovery proof outside the
operator workflow. - Users already running
0.3.xhave the 0.3 hardening around inline auth,
metrics, audit file storage, Gateway/Ingress readiness, PKCS#11 runtime
wiring, backup and restore validation, and storage endpoint guards; those
remain included in0.4.0.
Upgrade from 0.3.x
Before upgrading an existing 0.3.x installation:
-
Review every existing
OpenBaoClusterandOpenBaoRestoreagainst the new
delegated authorization and Hardened validation rules. -
Grant only the required delegated RBAC roles to the identities that need
network publication, restore, helper image, trust root, cloud identity, or
custom executable authority. -
For Hardened clusters, replace broad or implicit configuration with
explicit ingress peers, port-scoped egress rules, non-static unseal, trusted
TLS, and explicit backup/restore identity. -
For self-init clusters, confirm
spec.selfInit.requestscreates a user
login path before root token revocation, and addspec.recoveryKeys.initial
only before the first initialization event. -
Apply the
0.4.0CRDs first:kubectl apply -f https://github.com/dc-tec/openbao-operator/releases/download/0.4.0/crds.yaml
-
Upgrade the Helm release:
helm upgrade openbao-operator oci://ghcr.io/dc-tec/charts/openbao-operator \ --version 0.4.0 \ --namespace openbao-operator-system \ --reuse-values
-
Verify admission-policy health, delegated RBAC coverage, operator rollout,
managed cluster conditions, backup/restore events, and recent controller
logs before continuing with production workload changes.
Compatibility
OpenBao Operator requires Kubernetes v1.33+. The current release validation
baseline is Kubernetes v1.34-v1.35 and OpenBao 2.5.5, with config
compatibility coverage for OpenBao 2.4.4 and 2.5.5.
0.4.0 (2026-07-04)
Features
- security: require authority for network publication (#507) (f873094)
- self-init: add initial recovery key bootstrap (#516) (a04cb23)
Bug Fixes
- security: delegate dangerous CR controls (#499) (14e1dad)
- security: enforce CR reference authorization (#500) (875b999)
- security: enforce hardened contract for unsafe controls (#502) (6b8f2ad)
- security: require provenance for managed resources (#505) (fd39a1e)
- self-init: make bootstrap config one-shot (#514) (cc5876c)