diff --git a/docs/content/en/docs/fleet-manager/distributedstorage-plugin.md b/docs/content/en/docs/fleet-manager/distributedstorage-plugin.md new file mode 100644 index 000000000..cede40059 --- /dev/null +++ b/docs/content/en/docs/fleet-manager/distributedstorage-plugin.md @@ -0,0 +1,366 @@ +--- +title: "Enable Policy Management with fleet" +linkTitle: "Unified Distributed Storage" +weight: 50 +description: > + Guidance on using unified distributed storage with fleet. +--- + +In this tutorial, we will cover how to implement unified distributed storage on a set of clusters, using [Fleet](https://kurator.dev/docs/references/fleet-api/#fleet) + +## Architecture + +Fleet's unified distributed storage is built on top of [Rook](https://rook.io/), and the overall architecture is shown as below: + +{{< image width="100%" + link="./image/distributedstorage.svg" + >}} + +## Prerequisites + +### 1. Fleet Manager Setup + +Set up the Fleet manager by following the instructions in the [installation guide](/docs/setup/install-fleet-manager/). + +### 2. Rook prerequisites + +To support Kurator's Unified Distributed Storage, you must first configure the Distributed Storage plug-in for [Fleet](https://kurator.dev/docs/references/fleet-api/#fleet). Kurator uses [Rook](https://rook.io) as the Distributed Storage plugin. These are some of the prerequisites needed to use rook. + +1. Kubernetes v1.22 or higher is supported +1. To configure the Ceph storage cluster, at least one of these local storage types is required: + + - Raw devices (no partitions or formatted filesystems) + - Raw partitions (no formatted filesystem) + - LVM Logical Volumes (no formatted filesystem) + - Persistent Volumes available from a storage class in `block` mode + +The easiest way to do this is to mount an Raw disk on the nodes. + +### 3. Secrets and Setup for Attached Clusters + +In Kurator, clusters not created by Kurator are called AttachedClusters. Kurator provides the ability to incorporate these AttachedClusters into the kurator fleet management and implement unified distributed storage on these attachedclusters with fleet. Therefore we need a fleet that already manages several AttachedClusters. Specific operations can be referred to [Manage AttachedCluster](https://kurator.dev/docs/fleet-manager/manage-attachedcluster/). + +## Create a Fleet with the DistributedStorage Plugin Enabled + +Run following command to create rook operator and rook ceph cluster in the Fleet: + +```console +kubectl apply -f -< + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/fleet/distributedstorage/nginx-storage-demo.yaml b/examples/fleet/distributedstorage/nginx-storage-demo.yaml new file mode 100644 index 000000000..5182ed4b0 --- /dev/null +++ b/examples/fleet/distributedstorage/nginx-storage-demo.yaml @@ -0,0 +1,27 @@ +apiVersion: storage.k8s.io/v1 +kind: PersistentVolumeClaim +metadata: + name: block-pvc +spec: + storageClassName: rook-ceph-block + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +--- +apiVersion: v1 +kind: Pod +metadata: + name: nginx-blockstorage +spec: + containers: + - name: app-container + image: nginx + volumeMounts: + - name: block-volume + mountPath: "/etc/nginx" + volumes: + - name: block-volume + persistentVolumeClaim: + claimName: block-pvc