Back to Rook

Ceph Operator Helm Chart

Documentation/Helm-Charts/operator-chart.md

1.20.010.1 KB
Original Source
<!--- Document is generated by `make helm-docs`. DO NOT EDIT. Edit the corresponding *.gotmpl.md file instead -->

Installs rook to create, configure, and manage Ceph clusters on Kubernetes.

Introduction

This chart bootstraps a rook-ceph-operator deployment on a Kubernetes cluster using the Helm package manager.

Prerequisites

  • Helm 3.13+

See the Helm support matrix for more details.

Installing

The Ceph Operator helm chart will install the basic components necessary to create a storage platform for your Kubernetes cluster.

  1. Install the Helm chart
  2. Install the Ceph-CSI drivers chart so CSI can provision and mount volumes
  3. Create a Rook cluster.

The helm install command deploys rook on the Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation. It is recommended that the rook operator be installed into the rook-ceph namespace (you will install your clusters into separate namespaces).

Release

The release channel is the most recent release of Rook that is considered stable for the community.

console
helm repo add rook-release https://charts.rook.io/release
helm install --create-namespace --namespace rook-ceph rook-ceph rook-release/rook-ceph -f values.yaml

For example settings, see the next section or values.yaml

Configuration

The following table lists the configurable parameters of the rook-operator chart and their default values.

ParameterDescriptionDefault
allowLoopDevicesIf true, loop devices are allowed to be used for osds in test clustersfalse
annotationsPod annotations{}
ceph-csi-operator.controllerManager.manager.env.csiServiceAccountPrefix""
ceph-csi-operator.fullnameOverride"ceph-csi"
ceph-csi-operator.nameOverride"ceph-csi"
cephCommandsTimeoutSecondsThe timeout for ceph commands in seconds"15"
containerSecurityContextSet the container security context for the operator{"capabilities":{"drop":["ALL"]},"runAsGroup":2016,"runAsNonRoot":true,"runAsUser":2016}
crds.enabledWhether the helm chart should create and update the CRDs. If false, the CRDs must be managed independently with deploy/examples/crds.yaml. WARNING Only set during first deployment. If later disabled the cluster may be DESTROYED. If the CRDs are deleted in this case, see the disaster recovery guide to restore them.true
csi.attacher.repositoryKubernetes CSI Attacher image repository"registry.k8s.io/sig-storage/csi-attacher"
csi.attacher.tagAttacher image tag"v4.12.0"
csi.cephcsi.repositoryCeph CSI image repository"quay.io/cephcsi/cephcsi"
csi.cephcsi.tagCeph CSI image tag"v3.17.0"
csi.csiAddons.repositoryCSIAddons sidecar image repository"quay.io/csiaddons/k8s-sidecar"
csi.csiAddons.tagCSIAddons sidecar image tag"v0.14.0"
csi.installCsiOperatorWhen true, install the ceph-csi-operator subchart (see Chart.yaml condition).true
csi.provisioner.repositoryKubernetes CSI provisioner image repository"registry.k8s.io/sig-storage/csi-provisioner"
csi.provisioner.tagProvisioner image tag"v6.2.0"
csi.registrar.repositoryKubernetes CSI registrar image repository"registry.k8s.io/sig-storage/csi-node-driver-registrar"
csi.registrar.tagRegistrar image tag"v2.17.0"
csi.resizer.repositoryKubernetes CSI resizer image repository"registry.k8s.io/sig-storage/csi-resizer"
csi.resizer.tagResizer image tag"v2.1.0"
csi.serviceMonitor.enabledEnable ServiceMonitor for CSI metricsfalse
csi.serviceMonitor.intervalInterval at which metrics should be scraped"5s"
csi.serviceMonitor.labelsAdditional labels for the ServiceMonitor{}
csi.serviceMonitor.namespaceNamespace in which to deploy the ServiceMonitorthe release namespace
csi.snapshotter.repositoryKubernetes CSI snapshotter image repository"registry.k8s.io/sig-storage/csi-snapshotter"
csi.snapshotter.tagSnapshotter image tag"v8.5.0"
currentNamespaceOnlyWhether the operator should watch cluster CRD in its own namespace or notfalse
customHostnameLabelCustom label to identify node hostname. If not set kubernetes.io/hostname will be usednil
deleteUnusedCrushRulesIf true, delete unused generated CRUSH rules after the mgr startstrue
disableDeviceHotplugDisable automatic orchestration when new devices are discovered.false
discover.nodeAffinityThe node labels for affinity of discover-agent 1nil
discover.podLabelsLabels to add to the discover podsnil
discover.resourcesAdd resources to discover daemon podsnil
discover.tolerationToleration for the discover pods. Options: NoSchedule, PreferNoSchedule or NoExecutenil
discover.tolerationKeyThe specific key of the taint to toleratenil
discover.tolerationsArray of tolerations in YAML format which will be added to discover deploymentnil
discoverDaemonUdevBlacklist certain disks according to the regex provided.nil
discoveryDaemonIntervalSet the discovery daemon device discovery interval (default to 60m)"60m"
enableDiscoveryDaemonEnable discovery daemonfalse
enableOBCWatchOperatorNamespaceWhether the OBC provisioner should watch on the operator namespace or not, if not the namespace of the cluster will be usedtrue
enforceHostNetworkWhether to create all Rook pods to run on the host network, for example in environments where a CNI is not enabledfalse
hostpathRequiresPrivilegedRuns Ceph Pods as privileged to be able to write to hostPaths in OpenShift with SELinux restrictions.false
image.pullPolicyImage pull policy"IfNotPresent"
image.repositoryImage"docker.io/rook/ceph"
image.tagImage tagmaster
imagePullSecretsimagePullSecrets option allow to pull docker images from private docker registry. Option will be passed to all service accounts.nil
logLevelGlobal log level for the operator. Options: ERROR, WARNING, INFO, DEBUG"INFO"
monRunAsRootIf true, ceph mon pods will be run as rootfalse
monitoring.enabledEnable monitoring. Requires Prometheus to be pre-installed. Enabling will also create RBAC rules to allow Operator to create ServiceMonitorsfalse
nodeSelectorKubernetes nodeSelector to add to the Deployment.{}
obcAllowAdditionalConfigFieldsMany OBC additional config fields may be risky for administrators to allow users control over. The safe and default-allowed fields are 'maxObjects' and 'maxSize'. Other fields should be considered risky. To allow all additional configs, use this value: "maxObjects,maxSize,bucketMaxObjects,bucketMaxSize,bucketPolicy,bucketLifecycle,bucketOwner""maxObjects,maxSize"
obcProvisionerNamePrefixSpecify the prefix for the OBC provisioner in place of the cluster namespaceceph cluster namespace
operatorPodLabelsCustom pod labels for the operator{}
priorityClassNameSet the priority class for the rook operator deployment if desirednil
rbacAggregate.enableOBCsIf true, create a ClusterRole aggregated to user facing roles for objectbucketclaimsfalse
rbacEnableIf true, create & use RBAC resourcestrue
reconcileConcurrentClustersNumber of clusters the operator reconciles concurrently1
resourcesPod resource requests & limits{"limits":{"memory":"512Mi"},"requests":{"cpu":"200m","memory":"128Mi"}}
revisionHistoryLimitThe revision history limit for all pods created by Rook. If blank, the K8s default is 10.nil
scaleDownOperatorIf true, scale down the rook operator. This is useful for administrative actions where the rook operator must be scaled down, while using gitops style tooling to deploy your helm charts.false
tolerationsList of Kubernetes tolerations to add to the Deployment.[]
unreachableNodeTolerationSecondsDelay to use for the node.kubernetes.io/unreachable pod failure toleration to override the Kubernetes default of 5 minutes5
useOperatorHostNetworkIf true, run rook operator on the host networknil

Development Build

To deploy from a local build from your development environment:

  1. Build the Rook docker image: make
  2. Copy the image to your K8s cluster, such as with the docker save then the docker load commands
  3. Install the helm chart:
console
cd deploy/charts/rook-ceph
helm install --create-namespace --namespace rook-ceph rook-ceph .

Uninstalling the Chart

To see the currently installed Rook chart:

console
helm ls --namespace rook-ceph

To uninstall/delete the rook-ceph deployment:

console
helm delete --namespace rook-ceph rook-ceph

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

After uninstalling you may want to clean up the CRDs as described on the teardown documentation.

Footnotes

  1. nodeAffinity and *NodeAffinity options should have the format "role=storage,rook; storage=ceph" or storage;role=rook-example or storage; (checks only for presence of key)