Status and events

Condition types, phases, Kubernetes Events, and audit-log signals exposed by the operator.

Updated 16 October 2026 · 5 min read

On this page

Use status for the latest controller observation and Events for the sequence that led to it. A condition’s reason and message contain the actionable detail; do not treat the high-level phase as a complete health check.

Inspect current state

kubectl -n <namespace> get openbaocluster <name> \
  -o jsonpath='{.status.conditions}' | jq

kubectl -n <namespace> get openbaorestore <name> \
  -o jsonpath='{.status.conditions}' | jq

kubectl -n <namespace> get events --sort-by=.lastTimestamp

Use kubectl describe on the parent custom resource to see status and recent Events together.

Workflow checkpoints

WorkflowConditions to inspect
Hardened cluster with External TLSAvailable, TLSReady, UserAccessBootstrap, ProductionReady
Hardened cluster with ACMEAvailable, ACMEIntegrationReady, ACMECacheReady, UserAccessBootstrap, ProductionReady
Gateway exposureGatewayIntegrationReady; inspect Route parent status for controller detail
Strict NetworkPolicyAPIServerNetworkReady
Scheduled backupsBackupConfigurationReady, BackingUp
File audit storageAuditFileStorageReady; inspect Degraded when recreation is required
RestoreRestoreConfigurationReady, then RestoreComplete; RecoveryReleased after an uncertain outcome
Restore testsPassed in status.backup.restoreTest.conditions on the source cluster
Approved policy repairPolicyReconciliationReady; inspect warning events when false

OpenBaoCluster status

status.phase is one of Initializing, Running, Upgrading, BackingUp, or Failed. Conditions provide the specific contract.

Service and integration conditions

TypeSignal
AvailableReady voter workload replicas
TLSReadyTLS assets required by the selected mode
ACMEIntegrationReadyOperator-known ACME reachability and Gateway prerequisites
ACMECacheReadyShared ACME state for HA or blue-green topologies
GatewayIntegrationReadyReferenced Gateway, GatewayClass, listener, and managed Route attachment
IngressIntegrationReadyManaged Ingress prerequisites and load-balancer progress
APIServerNetworkReadyKubernetes API egress configuration in standard NetworkPolicies and the optional Cilium policy; does not probe live connectivity
AuditFileStorageReadyShared audit PVC readiness and workload mount adoption

Security and production conditions

TypeSignal
ProductionReadyOperator-known Hardened posture checks; not API stability or project support
UserAccessBootstrapHeuristic recognition of a human login bootstrap path; not proof that login works
CloudUnsealIdentityReadyOperator-known cloud KMS identity prerequisites
EtcdEncryptionWarningThe operator cannot verify Kubernetes etcd encryption
SecurityRiskDevelopment or otherwise relaxed security controls
NodeSecurityCapabilityMismatchRequested workload hardening is unavailable on the node platform

Operation and storage conditions

TypeSignal
UpgradingUpgrade orchestration is active, idle, or failed
BackingUpBackup orchestration is active or idle
BackupConfigurationReadyOperator-known backup authentication, storage, identity, and egress prerequisites
StorageConfiguredA consistent voter StorageClass is configured or resolved; not proof that a resize completed
ReadReplicaStorageConfiguredEquivalent storage selection for the read-replica pool
ReadReplicasReadyDesired read-replica Pods are Ready
ReadServingAvailableAn observed read replica can serve reads for the validated OpenBao version
RaftMembershipReadyObserved voter and non-voter membership matches the declared topology
ReadReplicasAutopilotHealthyAutopilot reports healthy read-replica peers
DegradedA workload, operation, configuration, or break-glass problem needs attention

Observed OpenBao conditions

TypeSignal
OpenBaoInitializedInitialization state observed from Kubernetes service-registration labels
OpenBaoSealedSeal state observed from service-registration labels
OpenBaoLeaderLeader discovery from service-registration labels

These three conditions report the labels OpenBao publishes; they are not independent API probes.

Policy reconciliation status

PolicyReconciliationReady is present only when spec.reconcilePolicies is enabled. It is True after the current runtime bundle is verified, False while pending or failing, and Unknown when reconciliation is paused or blocked by the security profile. Policy failures also contribute to Degraded.

Field under status.workloadMeaning
policyReconciliation.revisionsPolicy name to verified content digest; an empty value means missing or changed contents awaiting repair; an absent key means unobserved
policyReconciliation.attemptedRevisionRuntime bundle used for the latest attempt and its retry schedule
policyReconciliation.lastVerifiedTime of the last successful complete verification
policyReconciliation.retryAfterEarliest retry for the same attempted runtime bundle after a failure
policyReconciliation.lastErrorPolicy failure, independent of status.workload.lastError
policyRevisionLast completely verified runtime bundle; informational and not an operation gate

Failed policy reads preserve previous observations. See operation gating for how backup and upgrade use them, and policy enrollment for administrator actions.

OpenBaoRestore status

status.phase moves through Pending, Validating, and Running, then ends Completed, Failed, or Unknown. Unknown means the snapshot was submitted but its application is not confirmed; see Recover an uncertain restore.

TypeSignal
RestoreConfigurationReadyOperator-known authentication, storage, identity, and egress prerequisites
RestoreCompleteTerminal restore result
OperationLockOverrideA forced disaster-recovery restore cleared another operation lock
RecoveryReleasedWhether management was handed back after an uncertain outcome; the reason names the current step

AmbientIdentityAssumed means the operator identified a provider default chain. It does not prove that the cloud-side role, service account, or permission binding works.

OpenBaoTenant status

Require status.provisioned: true and Provisioned=True for the current generation. When provisioning is blocked or fails, the condition is false with a specific reason and status.lastError retains the failure summary for compatibility.

Kubernetes Events

The operator emits these lifecycle reasons on parent resources. Normal records progress or accepted input; Warning records failure, contention, a safety override, or another state that needs attention.

WorkflowEvent reasons
Cluster safety and storageProfileNotSet, DevelopmentProfile, UnsafeAdmissionDisabled, AmbientUnsealIdentity, StaticUnsealInUse, RootTokenStored, image-verification reasons, PVCResize, PVCResizeLeaderStepDown, PVCResizePodRestart
InitializationInitStarted, InitCompleted, InitFailed
Policy repairPolicyReconciliationFailed
Tenant Secret RBACTenantSecretRBACSynchronized
UpgradeUpgradeStarted, PreUpgradeSnapshotJobCreated, PreUpgradeSnapshotCompleted, PreUpgradeSnapshotFailed, RollingRetryRequested, RollingRetryAccepted, BlueGreenHoldEntered, BlueGreenPromotionApproved, UpgradeComplete, UpgradeFailed, RollbackStarted, BreakGlassEntered, BreakGlassAcknowledged, OperationLockBlocked
BackupBackupManualTriggerAccepted, BackupSkipped, BackupStarted, BackupIdentityConfiguration, BackupJobCreated, BackupCompleted, BackupFailed, OperationLockBlocked
RestoreRestoreValidationStarted, RestoreStarted, RestoreIdentityConfiguration, RestoreJobCreated, RestoreCompleted, RestoreFailed, OperationLockBlocked, OperationLockLost, OperationLockOverride
Tenant provisioningTenantProvisioned, TenantRBACCleaned, TenantProvisioningBlocked, TenantProvisioningFailed

TenantRBACCleaned confirms that tenant RBAC and the operator-managed ResourceQuota and LimitRange were removed. Pod Security labels are intentionally outside that event’s cleanup contract.

Controllers also write structured audit records to their logs for security-sensitive and lifecycle actions. Condition types are API surface. Reason, Event, and audit-event values can expand as the controller gains new failure modes.

Search the handbook

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