Rook Ceph configuration reference for Lokomotive
Introduction
Rook is a storage orchestrator for Kubernetes. This component installs a Ceph cluster managed by the Rook operator.
Prerequisites
-
A Lokomotive cluster accessible via
kubectl
. -
The Rook component deployed on the cluster.
Configuration
Rook-Ceph component configuration example:
component "rook-ceph" {
# Optional arguments
namespace = "rook-test"
monitor_count = 3
enable_toolbox = true
metadata_device = "md127"
node_affinity {
key = "node-role.kubernetes.io/storage"
operator = "Exists"
}
node_affinity {
key = "storage.lokomotive.io"
operator = "In"
# If the `operator` is set to `"In"`, `values` should be specified.
values = [
"foo",
]
}
toleration {
key = "storage.lokomotive.io"
operator = "Equal"
value = "rook-ceph"
effect = "NoSchedule"
}
storage_class {
enable = true
default = true
reclaim_policy = "Delete"
}
resources {
osd {
requests {
cpu = "5"
memory = "5Gi"
}
limits {
cpu = "5"
memory = "5Gi"
}
}
mon {}
mgr {}
mds {}
prepareosd {}
crashcollector {}
mgr_sidecar {}
}
}
The Ceph cluster needs to be deployed in the same namespace as the Rook operator at the moment.
Additional Roles
and RoleBindings
need to be created if deploying across separate namespaces is
desired.
Attribute reference
Table of all the arguments accepted by the component.
Argument | Description | Default | Type | Required |
---|---|---|---|---|
namespace |
Namespace to deploy the Ceph cluster into. Must be the same as the rook operator. | “rook” | string | false |
monitor_count |
Number of Ceph monitors to deploy. An odd number like 3 or 5 is recommended which should also be sufficient for most cases. | 1 | number | false |
enable_toolbox |
Deploy the toolbox pod to debug and manage the Ceph cluster. | false | bool | false |
node_affinity |
Node affinity for deploying the Ceph cluster pods. | - | list(object({key = string, operator = string, values = list(string)})) | false |
toleration |
Tolerations that the Ceph cluster pods will tolerate. | - | list(object({key = string, effect = string, operator = string, value = string, toleration_seconds = string })) | false |
metadata_device |
Name of the device to store the metadata on each storage machine. Note: Provide just the name of the device and skip prefixing with /dev/ . |
- | string | false |
storage_class.enable |
Install Storage Class config. | false | bool | false |
storage_class.default |
Make this Storage Class as a default one. | false | bool | false |
storage_class.reclaim_policy |
Persistent volumes created with this storage class will have this reclaim policy. This field decides what happens to the volume after a user deletes a PVC. Valid values: Retain , Recycle and Delete . Read more in the
Kubernetes docs
. |
Retain |
string | false |
resources.osd |
Resource request and/or limits for OSDs. Read this doc , to find out the minimum prescribed resource requirements. | - | object(request {cpu = string, memory = string}, limits {cpu = string, memory = string}) | false |
resources.mon |
Resource request and/or limits for MONs. Read this doc , to find out the minimum prescribed resource requirements. | - | object(request {cpu = string, memory = string}, limits {cpu = string, memory = string}) | false |
resources.mgr |
Resource request and/or limits for MGRs. Read this doc , to find out the minimum prescribed resource requirements. | - | object(request {cpu = string, memory = string}, limits {cpu = string, memory = string}) | false |
resources.mds |
Resource request and/or limits for MDS. Read this doc , to find out the minimum prescribed resource requirements. | - | object(request {cpu = string, memory = string}, limits {cpu = string, memory = string}) | false |
resources.prepareosd |
Resource request and/or limits for OSD prepare job. Read this doc , to find out the minimum prescribed resource requirements. | - | object(request {cpu = string, memory = string}, limits {cpu = string, memory = string}) | false |
resources.crashcollector |
Resource request and/or limits for Crashcollector. Read this doc , to find out the minimum prescribed resource requirements. | - | object(request {cpu = string, memory = string}, limits {cpu = string, memory = string}) | false |
resources.mgr_sidecar |
Resource request and/or limits for MGR sidecar. Read this doc , to find out the minimum prescribed resource requirements. | - | object(request {cpu = string, memory = string}, limits {cpu = string, memory = string}) | false |
Applying
To apply the Rook-Ceph component:
lokoctl component apply rook-ceph
Once the Ceph cluster is ready, an object store can be deployed to start writing to Ceph. More information is available at configuring Ceph object store CRD
Deleting
To destroy the component:
lokoctl component delete rook-ceph
After removing the component from the cluster, make sure to delete /var/lib/rook
from the host
filesystem of all worker nodes for a clean reinstallation.