Skip to main content
Version: 0.1.0

At a glance

Control path

  • dedicated OpenBaoTenant controller
  • internal/app/provisioner
  • internal/service/provisioner

Owns

  • tenant-scoped operator Role and RoleBinding resources
  • reader and writer Secret allowlists derived from tenant clusters
  • Pod Security labels plus optional ResourceQuota and LimitRange defaults

Writes

  • tenant Role / RoleBinding and Secret RBAC resources
  • namespace labels that enforce Pod Security defaults
  • ResourceQuota and LimitRange resources from OpenBaoTenant.spec

Depends on

  • OpenBaoTenant namespace targeting rules and resource policies
  • admission dependencies before tenant Secret RBAC sync can proceed
  • current OpenBaoCluster objects that still exist in the tenant namespace

Architectural Placement

Provisioning follows a dedicated tenant-controller path:

  1. internal/controller/provisioner receives the reconcile event for OpenBaoTenant.
  2. The controller delegates orchestration to internal/app/provisioner.
  3. The app layer invokes internal/service/provisioner to apply RBAC, labels, allowlists, and cleanup behavior.

That keeps tenant onboarding separate from OpenBaoCluster steady-state reconciliation while still using the same design system and policy language.

Reference table

Owned surfaces

Owned surfaces.
SurfaceWhat the manager decidesWhy it matters
Secret allowlistsWhich Secrets the operator may read or write for managed clusters in the tenant namespace.Multi-tenant safety depends on explicit Secret access instead of wildcard RBAC.
Pod Security labelsThe baseline namespace policy applied to tenant workloads and operator-managed pods.Tenants need a secure default even before any cluster objects are created.
Quota defaultsOptional ResourceQuota and LimitRange resources derived from OpenBaoTenant.spec.Tenants need resource guardrails that travel with the namespace onboarding contract.

Provisioning Flow

Diagram

Tenant onboarding flow

Provisioning applies namespace-scoped guardrails first, then keeps Secret allowlists synchronized as managed clusters appear or disappear in the tenant namespace.

Reference table

Security guardrails

Security guardrails.
ConcernManager behavior
Admission dependenciesTenant Secret allowlists wait for admission-policy dependencies so Secret access is not widened before enforcement is ready.
Shared RBAC lifecycleProvisioned tenant RBAC avoids OwnerReferences that would let a single cluster deletion garbage-collect shared namespace permissions.
Secret scopeReader and writer Secret Roles are derived from explicit cluster references instead of wildcard list or get access to every Secret in the namespace.

Reference table

Deletion lifecycle

Deletion lifecycle.
PhaseManager intent
Namespace emptied of managed clustersRemove provisioned Role, RoleBinding, Secret allowlist roles, and default quota resources.
Finalizer removalOnly remove the tenant finalizer after namespace-scoped provisioning artifacts are cleaned up.

Related deep dives

Published release documentation

You are reading docs for version 0.1.0. Use the version menu to switch to next or another archived release.

Was this page helpful?

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