Skip to content

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.

  1. 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:

  1. Build the cephcsi-operator container image: make docker-build
  2. Copy the image to your K8s cluster, such as with the docker save then the docker load commands
  3. 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:

helm ls --namespace ceph-csi-operator-system

To uninstall/delete the ceph-csi-operator deployment:

helm delete --namespace ceph-csi-operator-system ceph-csi-operator

The command removes all the Kubernetes components associated with the chart and deletes the release.