From f5cebb3249ddf4519c2e241073a924fa45594bc8 Mon Sep 17 00:00:00 2001 From: Zac Dover Date: Mon, 4 May 2026 20:01:03 +1000 Subject: [PATCH] Add installation instructions for Rook-Ceph $TITLE Signed-off-by: Zac Dover --- docs/architecture/cloud-storage/rook-ceph.md | 326 +++++++++++++++++++ docs/architecture/index.md | 4 + 2 files changed, 330 insertions(+) create mode 100644 docs/architecture/cloud-storage/rook-ceph.md diff --git a/docs/architecture/cloud-storage/rook-ceph.md b/docs/architecture/cloud-storage/rook-ceph.md new file mode 100644 index 0000000..4a7ce23 --- /dev/null +++ b/docs/architecture/cloud-storage/rook-ceph.md @@ -0,0 +1,326 @@ +--- +title: Installing Rook-Ceph on Kubernetes +--- + +# Installing Rook-Ceph on Kubernetes + +## Overview + +This guide provides step-by-step instructions for deploying a Ceph storage +cluster using the Rook operator on Kubernetes. Rook automates the deployment, +configuration, and management of Ceph clusters within Kubernetes environments. + +The instructions here are meant only as a general guideline. We recommend that +you use the instructions found in the [official Rook +documentation](https://rook.io/docs/rook/latest/) and the [upstream Ceph +documentation](https://docs.ceph.com/). + + +## Prerequisites + +Before beginning the installation, ensure the following requirements are met: + +### Kubernetes Cluster Requirements + +- Kubernetes v1.25 or higher +- `kubectl` configured to communicate with your cluster +- Administrator access to the Kubernetes cluster +- At least 3 worker nodes for a production cluster (1 node minimum for testing) +- Verify compatibility between your Kubernetes version and the Rook version you +  intend to deploy — see the [Rook releases page](https://github.com/rook/rook/releases) +  for version compatibility information + +### Storage Requirements + +- Raw block devices available on worker nodes (unformatted, no filesystem) +- Minimum 10 GB of storage per OSD +- Devices should not be mounted or in use by the operating system + +### Network Requirements + +- Network connectivity between all cluster nodes +- Network access between pods is handled by the Kubernetes network plugin (CNI). +  Ensure your CNI supports the required pod-to-pod communication. If you need +  to open ports for external access to Ceph services, the typical ports are +  6789, 3300, and 6800-7300. + +### System Requirements + +- Linux kernel 4.5 or higher (5.x recommended) +- LVM2 packages installed on all nodes +- Minimum 2 GB RAM per node (4 GB+ recommended) +- `helm` installed if using Helm-based deployment (optional) + +## Configuration Options + +### Customizing the Cluster + +Edit `cluster.yaml` to customize your deployment before creating the cluster: + +#### Storage Configuration + +Specify which devices to use for OSDs: + +```yaml +storage: +  useAllNodes: true +  useAllDevices: false +  deviceFilter: "^sd[b-z]"  # Use sdb, sdc, etc. +``` + +Or specify devices explicitly: + +```yaml +storage: +  nodes: +  - name: "node1" +    devices: +    - name: "/dev/sdb" +  - name: "node2" +    devices: +    - name: "/dev/sdc" +``` + +#### Resource Limits + +Set resource limits for Ceph daemons: + +```yaml +resources: +  mon: +    limits: +      cpu: "2000m" +      memory: "4Gi" +    requests: +      cpu: "1000m" +      memory: "2Gi" +  osd: +    limits: +      cpu: "2000m" +      memory: "4Gi" +    requests: +      cpu: "1000m" +      memory: "2Gi" +``` + +#### Network Configuration + +Configure network settings for client and cluster traffic: + +```yaml +network: +  provider: host  # or multus for advanced networking +  # Uncomment for dual network configuration +  # connections: +  #   encryption: +  #     enabled: true +``` + +### Dashboard Access + +Enable and access the Ceph dashboard: + +```bash +# The dashboard is enabled by default in cluster.yaml + +# Get the dashboard password +kubectl -n rook-ceph get secret rook-ceph-dashboard-password \ +  -o jsonpath="{['data']['password']}" | base64 --decode && echo + +# Port-forward to access the dashboard +kubectl -n rook-ceph port-forward service/rook-ceph-mgr-dashboard 8443:8443 +``` + +Access the dashboard at: `https://localhost:8443` + +Username: `admin` +Password: (from the command above) + +## Creating Storage Classes + +### Block Storage (RBD) + +Create a storage class for block devices: + +```bash +kubectl create -f csi/rbd/storageclass.yaml +``` + +Test the storage class: + +```bash +# Create a test PVC +cat <