Ceph
PLEASE NOTE: This document applies to v0.9 version and not to the latest stable release v1.9
Ceph Operator Helm Chart
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
- Kubernetes 1.8+
RBAC
If role-based access control (RBAC) is enabled in your cluster, you may need to give Tiller (the server-side component of Helm) additional permissions. If RBAC is not enabled, be sure to set rbacEnable
to false
when installing the chart.
# Create a ServiceAccount for Tiller in the `kube-system` namespace
kubectl --namespace kube-system create sa tiller
# Create a ClusterRoleBinding for Tiller
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
# Patch Tiller's Deployment to use the new ServiceAccount
kubectl --namespace kube-system patch deploy/tiller-deploy -p '{"spec": {"template": {"spec": {"serviceAccountName": "tiller"}}}}'
Installing
The Ceph Operator helm chart will install the basic components necessary to create a storage platform for your Kubernetes cluster. After the helm chart is installed, you will need to 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-system
namespace (you will install your clusters into separate namespaces).
Rook currently publishes builds of the Ceph operator to the stable
, beta
, alpha
, and master
channels.
Stable
The stable channel is the most recent release of Rook that is considered stable for the community, starting with the v0.9 release.
helm repo add rook-stable https://charts.rook.io/stable
helm install --namespace rook-ceph-system rook-stable/rook-ceph
Beta
The beta channel is the most recent release of Rook that is considered nearly stable for the community, starting with the v0.8 release.
helm repo add rook-beta https://charts.rook.io/beta
helm install --namespace rook-ceph-system rook-beta/rook-ceph
Alpha
The alpha channel is the most recent release of Rook that is considered ready for testing by the community.
helm repo add rook-alpha https://charts.rook.io/alpha
helm install --namespace rook-ceph-system rook-alpha/rook-ceph
Master
The master channel includes the latest commits, with all automated tests green. Historically it has been very stable, though there is no guarantee.
To install the helm chart from master, you will need to pass the specific version returned by the search
command.
helm repo add rook-master https://charts.rook.io/master
helm search rook-ceph
helm install --namespace rook-ceph-system rook-master/rook-ceph --version <version>
For example:
helm install --namespace rook-ceph-system rook-master/rook-ceph --version v0.7.0-278.gcbd9726
Development Build
To deploy from a local build from your development environment:
- Build the Rook docker image:
make
- Copy the image to your K8s cluster, such as with the
docker save
then thedocker load
commands - Install the helm chart
cd cluster/charts/rook-ceph helm install --namespace rook-ceph-system --name rook-ceph .
Uninstalling the Chart
To uninstall/delete the rook-ceph
deployment:
$ helm delete --purge rook-ceph
The command removes all the Kubernetes components associated with the chart and deletes the release.
Configuration
The following tables lists the configurable parameters of the rook-operator chart and their default values.
Parameter | Description | Default |
---|---|---|
image.repository |
Image | rook/ceph |
image.tag |
Image tag | master |
image.pullPolicy |
Image pull policy | IfNotPresent |
rbacEnable |
If true, create & use RBAC resources | true |
pspEnable |
If true, create & use PSP resources | true |
resources |
Pod resource requests & limits | {} |
annotations |
Pod annotations | {} |
logLevel |
Global log level | INFO |
nodeSelector |
Kubernetes nodeSelector to add to the Deployment. |
|
tolerations |
List of Kubernetes tolerations to add to the Deployment. |
[] |
hostpathRequiresPrivileged |
Runs Ceph Pods as privileged to be able to write to hostPath s in OpenShift with SELinux restrictions. |
false |
agent.flexVolumeDirPath |
Path where the Rook agent discovers the flex volume plugins (*) | /usr/libexec/kubernetes/kubelet-plugins/volume/exec/ |
agent.libModulesDirPath |
Path where the Rook agent should look for kernel modules (*) | /lib/modules |
agent.mounts |
Additional paths to be mounted in the agent container | |
agent.mountSecurityMode |
Mount Security Mode for the agent. | Any |
agent.toleration |
Toleration for the agent pods | |
agent.tolerationKey |
The specific key of the taint to tolerate | |
discover.toleration |
Toleration for the discover pods | |
discover.tolerationKey |
The specific key of the taint to tolerate | |
mon.healthCheckInterval |
The frequency for the operator to check the mon health | 45s |
mon.monOutTimeout |
The time to wait before failing over an unhealthy mon | 300s |
* For information on what to set agent.flexVolumeDirPath
to, please refer to the Rook flexvolume documentation
* agent.mounts
should have this format mountname1=/host/path:/container/path,mountname2=/host/path2:/container/path2
Command Line
You can pass the settings with helm command line parameters. Specify each parameter using the
--set key=value[,key=value]
argument to helm install
. For example, the following command will install rook where RBAC is not enabled.
$ helm install --namespace rook-ceph-system --name rook-ceph rook-stable/rook-ceph --set rbacEnable=false
Settings File
Alternatively, a yaml file that specifies the values for the above parameters (values.yaml
) can be provided while installing the chart.
$ helm install --namespace rook-ceph-system --name rook-ceph rook-stable/rook-ceph -f values.yaml
Here are the sample settings to get you started.
image:
prefix: rook
repository: rook/ceph
tag: master
pullPolicy: IfNotPresent
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
rbacEnable: true
pspEnable: true