As for all Kubernetes clouds, bootstrapping a controller creates the following resources in the cluster.
When bootstrapping a controller on a Kubernetes cloud, Juju creates a namespace for the controller and deploys the controller as a StatefulSet with associated resources. The controller manages the Juju state database (MongoDB) and API server within Kubernetes pods.
Resources created at bootstrap:
Namespace: A dedicated namespace for the controller (namedcontroller-<controller-name>).Service: A KubernetesServiceto expose the controller API (type depends on the cloud:LoadBalancerfor public clouds,ClusterIPfor localhost clouds).ServiceAccount: A service account for the controller with cluster-admin privileges.ClusterRoleBinding: Binds the controller service account to the cluster-adminClusterRole.StatefulSet: AStatefulSetwith the controller pod containing two containers:mongodb(Juju’s state database) andapi-server(Juju API server).Secrets: Multiple secrets for TLS certificates (server.pem), shared secrets, and optionally docker registry credentials for private image registries.ConfigMaps: Configuration maps for bootstrap parameters and agent configuration.PersistentVolumeandPersistentVolumeClaim: Storage for the controller’s operator-storage (MongoDB data and API server state).Proxy resources (if using
ClusterIPService): AdditionalConfigMap,Role,RoleBinding, andServiceAccountfor cluster IP proxy access.