Operator Chart
Installs ceph-csi-operator to automates the deployment, configuration, and management of ceph-csi drivers using new Kubernetes APIs defined as a set of Custom Resource Definitions (CRDs).
Introduction¶
This chart bootstraps a ceph-csi-operator deployment on a Kubernetes cluster using the Helm package manager.
Prerequisites¶
- Kubernetes 1.32+
- Helm 3.x
See the Helm support matrix for more details.
Installing¶
The Ceph-CSI Operator helm chart will install the basic components necessary to install ceph-csi on Kubernetes cluster.
- Install the Helm chart
The helm install command deploys ceph-csi-operator on the Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation.
ceph-csi-operator currently publishes builds of the ceph-csi operator to tagged versions.
Released version¶
helm repo add ceph-csi-operator https://ceph.github.io/ceph-csi-operator/
helm install ceph-csi-operator --create-namespace --namespace ceph-csi-operator-system ceph-csi-operator/ceph-csi-operator
For example settings, see the next section or values.yaml
OpenShift Installation¶
For OpenShift clusters, enable the OpenShift-specific SecurityContextConstraints (SCC) by setting openshift.enabled=true:
helm repo add ceph-csi-operator https://ceph.github.io/ceph-csi-operator/
helm install ceph-csi-operator --create-namespace --namespace ceph-csi-operator-system \
--set openshift.enabled=true \
ceph-csi-operator/ceph-csi-operator
This will create:
* A SecurityContextConstraint (ceph-csi-operator-scc) that grants the necessary permissions for CSI operations
* A ClusterRole (ceph-csi-operator-scc-user) that allows using the SCC
* ClusterRoleBindings that bind all CSI service accounts to the SCC ClusterRole
Note: When deploying drivers on OpenShift, you must also enable OpenShift support in the drivers chart. See the drivers chart documentation for details.
Configuration¶
The following table lists the configurable parameters of the ceph-csi-operator chart and their default values.
| Parameter | Description | Default |
|---|---|---|
controllerManager.manager.args |
Arguments to pass to the manager container (default: ["--leader-elect"]) | ["--leader-elect"] |
controllerManager.manager.containerSecurityContext.allowPrivilegeEscalation |
Disallow privilege escalation for the manager container (default: false) | false |
controllerManager.manager.containerSecurityContext.capabilities.drop |
List of capabilities to drop from the manager container (default: ["ALL"]) | ["ALL"] |
controllerManager.manager.containerSecurityContext.readOnlyRootFilesystem |
Mount root filesystem as read-only (default: true) | true |
controllerManager.manager.env.csiServiceAccountPrefix |
Prefix for CSI service account names created by the operator (default: "ceph-csi-operator-") | "ceph-csi-operator-" |
controllerManager.manager.env.watchNamespace |
Namespace to watch for resources, empty for all namespaces (default: "") | "" |
controllerManager.manager.image.repository |
Repository for the ceph-csi-operator image (default: "quay.io/cephcsi/ceph-csi-operator") | "quay.io/cephcsi/ceph-csi-operator" |
controllerManager.manager.image.tag |
Tag for the ceph-csi-operator image (default: "latest") | "latest" |
controllerManager.manager.resources.limits.cpu |
CPU limit for the manager container (default: "500m") | "500m" |
controllerManager.manager.resources.limits.memory |
Memory limit for the manager container (default: "128Mi") | "128Mi" |
controllerManager.manager.resources.requests.cpu |
CPU request for the manager container (default: "10m") | "10m" |
controllerManager.manager.resources.requests.memory |
Memory request for the manager container (default: "64Mi") | "64Mi" |
controllerManager.nodeSelector |
Node selector for the controller manager pod (default: {}) | {} |
controllerManager.podSecurityContext.runAsNonRoot |
Run the pod as a non-root user (default: true) | true |
controllerManager.priorityClassName |
Priority class name for the controller manager pod (default: "") | "" |
controllerManager.replicas |
Number of controller manager replicas (default: 1) | 1 |
controllerManager.serviceAccount.annotations |
Annotations to add to the controller manager service account (default: {}) | {} |
controllerManager.tolerations |
Tolerations for the controller manager pod (default: []) | [] |
controllerManager.topologySpreadConstraints |
Topology spread constraints for the controller manager pod (default: []) | [] |
imagePullSecrets |
List of image pull secret names for pulling container images (default: []) | [] |
kubernetesClusterDomain |
Kubernetes cluster domain used for DNS resolution (default: "cluster.local") | "cluster.local" |
openshift.enabled |
Enable OpenShift-specific resources (SecurityContextConstraints) (default: false) | false |
serviceAccount.annotations |
Annotations to add to the service account (default: {}) | {} |
serviceAccount.automount |
Automatically mount a ServiceAccount's API credentials (default: true) | true |
serviceAccount.create |
Specifies whether a service account should be created (default: true) | true |
serviceAccount.name |
The name of the service account to use. If not set and create is true, a name is generated using the fullname template (default: "") | "" |
Development Build¶
To deploy from a local build from your development environment:
- Build the cephcsi-operator container image:
make docker-build - Copy the image to your K8s cluster, such as with the
docker savethen thedocker loadcommands - Install the helm chart:
cd deploy/charts/ceph-csi-operator
helm install --create-namespace --namespace ceph-csi-operator-system ceph-csi-operator .
Uninstalling the Chart¶
To see the currently installed ceph-csi-operator chart:
To uninstall/delete the ceph-csi-operator deployment:
The command removes all the Kubernetes components associated with the chart and deletes the release.