Skip to content

Core Components ​

The components of the CobaltCore stack, organized by layer. Each entry links to the reference page that documents it in depth; the way the layers fit together is described on the Architecture page.

The figure shows where the components of the first five sections sit on the management cluster.

The management cluster: GitOps (flux-operator, FluxInstance) and Secrets & PKI (cert-manager, OpenBao, External Secrets Operator) next to the c5c3-operator, whose ControlPlane CR creates infrastructure CRs, service CRs, and K-ORC resources. One service operator per service (keystone, horizon, glance, placement, barbican, neutron, cinder, nova, ovn) runs the OpenStack services, exposed via the Gateway API. The infrastructure (MariaDB Galera, Memcached, opt-in RabbitMQ, Garage S3) is managed by its own operators. Optional target clusters, registered via kubeconfig Secrets, receive projected service workloads.

Orchestration ​

The c5c3-operator (operators/c5c3/) owns the top of the stack. It reconciles a ControlPlane CR into infrastructure CRs, service CRs, and K-ORC resources, and aggregates their readiness.

CRDAPI groupDescription
ControlPlanec5c3.io/v1alpha1Top-level resource for a whole control plane: infrastructure, services, identity plane (CRD reference)
CredentialRotationc5c3.io/v1alpha1Rotates the admin application credential (reconciler reference)
SecretAggregatec5c3.io/v1alpha1Aggregates secrets from multiple sources into one consumer Secret
KeystoneServicec5c3.io/v1alpha1Registers one service against a ControlPlane's identity plane: catalog entry and service account, from the service's own namespace (CRD reference)
KeystoneUserc5c3.io/v1alpha1Orders one Keystone user from a namespace a ControlPlane assigns, on the management cluster or a target cluster, and delivers its credentials as a Secret beside the order (CRD reference)
KeystoneProjectc5c3.io/v1alpha1Orders one Keystone project in the ControlPlane's admin domain from an assigned namespace (CRD reference)
KeystoneRoleAssignmentc5c3.io/v1alpha1Orders one role, on the namespace's role allowlist, for an ordered user on an ordered project (CRD reference)
KeystoneCatalogEntryc5c3.io/v1alpha1Orders one catalog entry, a service row and its endpoints, from an assigned namespace that admits catalog entries (CRD reference)
KeystoneApplicationCredentialc5c3.io/v1alpha1Orders one application credential for an ordered user on an ordered project, rotates it on a schedule, and delivers it as a Secret beside the order (CRD reference)
MariaDBDatabasec5c3.io/v1alpha1Orders one database on the ControlPlane's shared MariaDB from an assigned namespace, with a user the OpenBao database engine issues and replaces every day, and delivers its credential as a Secret beside the order (CRD reference)
RabbitMQVhostc5c3.io/v1alpha1Orders one vhost and a user on the ControlPlane's managed message bus from an assigned namespace, rotates the user on a schedule, and delivers the credentials as a Secret beside the order (CRD reference)

Service operators ​

One operator per OpenStack service (operators/<service>/), all built on the scaffolding the Keystone operator establishes and all following the API-group convention <service>.openstack.c5c3.io.

OperatorCRDsServiceReference
keystone-operatorKeystone, KeystoneIdentityBackendIdentityOverview
glance-operatorGlance, GlanceBackendImageOverview
placement-operatorPlacementResource trackingOverview
horizon-operatorHorizonDashboardOverview
barbican-operatorBarbican, BarbicanSecretStoreKey managementOverview
ovn-operatorOVNCentral, OVNChassisSDN control plane and chassisOverview
neutron-operatorNeutron, NeutronMetadataAgentNetworkingOverview
cinder-operatorCinder, CinderBackend, CinderBackupBackendBlock storageOverview
nova-operatorNovaCompute control planeOverview

The ovn-operator is the exception to the one-operator-per-service rule. It manages no OpenStack service of its own; it owns the OVN and Open vSwitch layer that the Neutron ML2/OVN driver programs.

OpenStack resource management ​

K-ORC, the upstream OpenStack Resource Controller (API group openstack.k-orc.cloud), manages Keystone resources declaratively: domains, projects, users, application credentials, regions, catalog services, and endpoints. It is applied by a Flux Kustomization rather than a HelmRelease, and the c5c3-operator drives its CRs for the admin application credential, the service accounts, and the catalog. See K-ORC in the infrastructure manifests.

Infrastructure stack ​

The HelmReleases under deploy/flux-system/ install the backing services the control plane depends on. Their configuration and the CRs built on top are documented per component in Infrastructure Manifests:

  • cert-manager — the base layer of the dependency graph; issues webhook and endpoint TLS certificates (section).
  • mariadb-operator with a Galera MariaDB CR as the shared database backend (section).
  • memcached-operator with a Memcached CR for token and content caching (section).
  • rabbitmq-cluster-operator serving the RabbitmqCluster CRD behind a ControlPlane's opt-in shared message bus (section).
  • garage-operator with a Garage CR providing the S3 object store that backs Glance multi-store (section).
  • openbao-operator and the OpenBao proving instance, the secret store for the whole stack (section, bootstrap).
  • External Secrets Operator (ESO) syncing secrets between OpenBao and the cluster in both directions (section).
  • prometheus-operator CRDs so operators can ship ServiceMonitor resources without a full monitoring stack (section).

GitOps ​

The flux-operator manages FluxCD through a FluxInstance CR that syncs deploy/flux-system/ from Git. HelmRelease ordering is expressed as dependsOn edges with cert-manager at the base. See FluxInstance and the dependency order.

Observability and test infrastructure ​

Every operator exports Prometheus metrics (Keystone Operator Metrics is the reference set). The remaining pieces ship only with the kind overlay (deploy/kind/) for development and CI:

Planned components ​

Components from the original C5C3 architecture document without an implementation in this repository are sketched under Future: the Hypervisor Cluster, the Storage Cluster, and a dedicated Management Cluster. The not-yet-onboarded OpenStack services are listed on the Architecture page.