Sovereign Cloud Stack

One platform — standardized, built and operated by many.

Ceph deployment with Rook

Rafael te Boekhorst October 14, 2024

Ceph Deployment with Rook

With the depreceation of ceph-ansible, the SCS reference implementation now supports Ceph deployment with Rook, a graduated-level cloud-native project.

OSISM Reference Implementation

In OSISM, Rook is can be deployed using the officially recommended Helm Charts. Ansible is used to deploy the Helm charts for both the Rook Operator and the Rook Custom Resoruce Definitions.

Rook deployment has also been integrated into the OSISM testbed. If you have a running testbed, you can login with make login and view the various OSISM commands related to rook by simply typing osism apply and grepping for ‘rook’:

dragon@testbed-manager:/opt/configuration/scripts/deploy$ osism apply | grep rook
| rook                                                             | rook           |
| rook-cleanup                                                     | rook           |
| rook-crd                                                         | rook           |
| rook-fetch-keys                                                  | rook           |
| rook-helm                                                        | rook           |
| rook-operator                                                    | rook           |

To install a minimal working rook you can use the helper script located in /opt/configuration/scripts/deploy/100-rook-services.sh, which automates the installation of k3s and then runs the following commands:

osism apply rook-operator
osism apply rook
osism apply rook-fetch-keys

# the role for the cephclient is informed which type of client should be installed. 
echo "cephclient_install_type: rook" >> /opt/configuration/environments/infrastructure/configuration.yml
osism apply cephclient

Note: the cephclient for OSISM is configured specifically for rook. It is a small role that ensures only the Rook client is setup.

Configuration

Rook can be configured by editing the variables for the Helm chart in the file environments/rook/configuration.yml. For more information on the various configuration options, see the SCS configration guide.

The OSISM testbed provides the following default configuration at /opt/configuration/environments/rook/config.yml on the manager node:

---
rook_network_public: "192.168.16.0/20"
rook_storage_devicefilter: "^sd[b-c]"
rook_storage_nodes:
  - name: "testbed-node-0"
  - name: "testbed-node-1"
  - name: "testbed-node-2"
## reduce resources to fit into testbed
rook_resources_cephfilesystem:
  limits:
    memory: "4Gi"
  requests:
    cpu: "500m"
    memory: "4Gi"
rook_resources_cephobjecstore:
  limits:
    memory: "2Gi"
  requests:
    cpu: "500m"
    memory: "1Gi"
## set to true to enable monitoring
# rook_monitoring_enabled: true
## set to true to enable cleanup
# rook_cleanup: true

About the author

Rafael Boekhorst
Junior Software Developer @ B1 Systems GmbH
Rafael is a Junior Software Developer with an interest in Open Source Software Development and Linux.