|
| 1 | +# CEPH-ROOK: Ceph Integration for Kubernetes |
| 2 | +Make Ceph storage work seamlessly with your Kubernetes setup using CEPH-ROOK. It lets Kubernetes nodes use Ceph effortlessly, connecting with both ceph-csi and openstack-helm. |
| 3 | + |
| 4 | +## Pre-installation Checks: |
| 5 | +Before proceeding with the Ceph-ROOK installation, ensure the following prerequisites: |
| 6 | + |
| 7 | +- Ensure that Kubernetes nodes are correctly labeled to designate their roles and Ceph components. |
| 8 | +``` |
| 9 | +role: storage-node |
| 10 | +ceph-rgw: enabled |
| 11 | +ceph-mds: enabled |
| 12 | +``` |
| 13 | +- OSD disks are formatted |
| 14 | +- ArgoCD is up and running as expected. |
| 15 | +- Git repository is connected to the ArgoCD. Refer to [\[1\]](https://argo-cd.readthedocs.io/en/stable/user-guide/private-repositories/)[\[2\]](https://argo-cd.readthedocs.io/en/latest/user-guide/commands/argocd_repo_add/) |
| 16 | + |
| 17 | +## Installation: |
| 18 | +To install CEPH according as per your requirement, navigate to the CEPH directory, make the necessary modifications to Kubernetes manifest/values.yaml, and deploy it using ArgoCD. You can kickstart your setup by copying the provided examples from this repository. |
| 19 | + |
| 20 | +**Note:** You can use the manifests from this repository as an example and update the details according to your requirements. |
| 21 | + |
| 22 | +- Clone this repository and navigate to the ceph-rook directory: |
| 23 | +```bash |
| 24 | +git clone --recurse-submodules https://github.com/pratik705/trinity.git |
| 25 | +cd trinity/ceph-rook/ |
| 26 | +``` |
| 27 | +Note: The `--recurse-submodules` option is used to clone the repository along with its submodules. |
| 28 | +- Once you have made your changes, commit and push them to your Git repository. |
| 29 | +```bash |
| 30 | +git add . |
| 31 | +git commit -m "Describe your changes" |
| 32 | +git push origin main |
| 33 | +``` |
| 34 | +- Proceed with applying ArgoCD manifests: |
| 35 | +### Deploy namespace for CEPH installation: |
| 36 | +```bash |
| 37 | +kubectl apply -f ceph-rook/argoCD/00-ceph-namespace-argo.yaml |
| 38 | +``` |
| 39 | +--- |
| 40 | + |
| 41 | +### Deploy ceph-operator: |
| 42 | +```bash |
| 43 | +kubectl apply -f ceph-rook/argoCD/01-ceph-operator-argo.yaml |
| 44 | +``` |
| 45 | +--- |
| 46 | + |
| 47 | +### Deploy CEPH: |
| 48 | +```bash |
| 49 | +kubectl apply -f ceph-rook/argoCD/02-ceph-argo.yaml |
| 50 | +``` |
| 51 | +- Sets up a storage class(`general`) for creating rbd volumes. |
| 52 | +- Creates an rbd client and pool for openstack-helm. |
| 53 | +--- |
| 54 | + |
| 55 | +### Deploy ceph-rgw: |
| 56 | +```bash |
| 57 | +kubectl apply -f ceph-rook/argoCD/03-ceph-rgw-argo.yaml |
| 58 | +``` |
| 59 | +--- |
| 60 | + |
| 61 | +### Deploy ceph-mds: |
| 62 | +```bash |
| 63 | +kubectl apply -f ceph-rook/argoCD/04-ceph-mds-argo.yaml |
| 64 | +``` |
| 65 | +- Adds a storage class(`rook-cephfs`) for creating `rwx` volumes. |
| 66 | +--- |
| 67 | + |
| 68 | +### Deploy toolbox to interact with CEPH: |
| 69 | +```bash |
| 70 | +kubectl apply -f ceph-rook/argoCD/05-toolbox-argo.yaml |
| 71 | +``` |
| 72 | +--- |
| 73 | + |
| 74 | +## Validation: |
| 75 | +```bash |
| 76 | +kubectl get pods -n rook-ceph |
| 77 | +kubectl exec -it rook-ceph-tools-xxxxx -n rook-ceph -- ceph -s |
| 78 | +kubectl exec -it rook-ceph-tools-xxxxx -n rook-ceph -- ceph osd tree |
| 79 | +``` |
| 80 | + |
| 81 | +ArgoCD continuously monitors the configured Git repository for changes and automatically applies them to the Kubernetes cluster. Once the changes are pushed to the repository, ArgoCD will detect the update and synchronize with the latest version. |
| 82 | + |
| 83 | +Check the ArgoCD UI to track the synchronization progress and ensure that the modifications are successfully applied to the cluster. |
0 commit comments