diff --git a/hadoop-hdds/docs/content/interface/CSI.md b/hadoop-hdds/docs/content/interface/CSI.md new file mode 100644 index 000000000000..b70572f77f5d --- /dev/null +++ b/hadoop-hdds/docs/content/interface/CSI.md @@ -0,0 +1,84 @@ +--- +title: CSI Protocol +weight: 3 +summary: Ozone supports Container Storage Interface(CSI) protocol. You can use Ozone by mounting an Ozone volume by Ozone CSI. +--- + + + +`Container Storage Interface` (CSI) will enable storage vendors (SP) to develop a plugin once and have it work across a number of container orchestration (CO) systems. + +To get more information about CSI at [SCI spec](https://github.com/container-storage-interface/spec/blob/master/spec.md) + +Ozone CSI is an implementation of CSI, it can make possible of using Ozone as a storage volume for a container. + +## Getting started + +First of all, we need an Ozone cluster with s3gateway, and its OM rpc port and s3gateway port must be visible to CSI pod, +because CSIServer will access OM to create or delete a bucket, also, CSIServer will publish volume by creating a mount point to s3g +through goofys. + +If you don't have an Ozone cluster on kubernetes, you can reference [Kubernetes]({{< ref "start/Kubernetes.md" >}}) to create one. Use the resources from `kubernetes/examples/ozone` where you can find all the required Kubernetes resources to run cluster together with the dedicated Ozone CSI daemon (check `kubernetes/examples/ozone/csi`) + +You should check if you already have a name of `/s3v` volume, if not create it by execute follow command: + +```bash +kubectl exec -it scm-0 bash +[hadoop@scm-0 ~]$ ozone sh vol create s3v +``` + +Now, create the CSI related resources by execute the follow command. + +```bash +kubectl create -f /ozone/kubernetes/examples/ozone/csi +``` + +## Crete pv-test and visit the result. + +Create pv-test related resources by execute the follow command. + +```bash +kubectl create -f /ozone/kubernetes/examples/ozone/pv-test +``` + +Attach the pod scm-0 and put a key into the /s3v/pvc* bucket. + +```bash +kubectl exec -it scm-0 bash +[hadoop@scm-0 ~]$ ozone sh bucket list s3v +{ + "metadata" : { }, + "volumeName" : "s3v", + "name" : "pvc-861e2d8b-2232-4cd1-b43c-c0c26697ab6b", + "storageType" : "DISK", + "versioning" : false, + "creationTime" : "2020-06-11T08:19:47.469Z", + "encryptionKeyName" : null +} +[hadoop@scm-0 ~]$ ozone sh key put /s3v/pvc-861e2d8b-2232-4cd1-b43c-c0c26697ab6b/A LICENSE.txt +``` + +Now, let's forward port of the `ozone-csi-test-webserver-7cbdc5d65c-h5mnn` to see the UI through the web browser. + +```bash +kubectl port-forward ozone-csi-test-webserver-7cbdc5d65c-h5mnn 8000:8000 +``` + +Eventually, we can see the result from `http://localhost:8000/` + +![pvtest-webui](pvtest-webui.png) diff --git a/hadoop-hdds/docs/content/interface/pvtest-webui.png b/hadoop-hdds/docs/content/interface/pvtest-webui.png new file mode 100644 index 000000000000..69e0aa121bdb Binary files /dev/null and b/hadoop-hdds/docs/content/interface/pvtest-webui.png differ