Quobyte CSI is the implementation of Container Storage Interface (CSI). Quobyte CSI enables easy integration of Quobyte Storage into Kubernetes. Current Quobyte CSI plugin supports the following functionality
- Dynamic volume Create
- Volume Delete
- Pre-provisioned volumes (Delete policy does not apply to these volumes)
- Kubernetes v1.10.7 or higher
- Quobyte installation with reachable registry and api services from the nodes
- Quobyte client with
QUOBYTE_REGISTRY
environment variable set with Quobyte registryQUOBYTE_MOUNT_POINT
environment variable set to/mnt/quobyte/mounts
- host path volume
/mnt/quobyte
- Additionally, Kubernetes CSI requires some Kubernetes helper containers and corresponding RBAC permissions
Deploy RBAC as required by CSI and CSI helper containers along with Quobyte CSI plugin containers
kubectl create -f deploy/attacher-rbac.yaml
kubectl create -f deploy/nodeplugin-rbac.yaml
kubectl create -f deploy/provisioner-rbac.yaml
kubectl create -f deploy/attacher.yaml
kubectl create -f deploy/plugin.yaml
kubectl create -f deploy/provisioner.yaml
Quobyte requires a secret to authenticate volume create and delete requests. Create this secret with
your Quobyte login credentials. Kubernetes requires base64 encoding for secrets which can be created
with the command echo -n "<user>" | base64
.
kubectl create -f example/csi-secret.yaml
Create a storage class with the provisioner
set to quobyte-csi
along with other configuration
parameters.
kubectl create -f example/StorageClass.yaml
Creating a PVC referencing the storage class created in previous step would provision dynamic volume.The provisoning happens through Kubernetes CSI - creates the PV inside Kubernetes and Quobyte CSI- provisions the volume for created PV.
kubectl create -f example/pvc-dynamic-provision.yaml
Mount the PVC in a pod as shown in the following example
kubectl create -f example/pod-with-dynamic-vol.yaml
Quobyte CSI requires the volume UUID to be passed on to the PV as VolumeHandle
In order to use the test
volume belonging to the tenant My Test
, user needs to create a PV
referring the volume as shown in the example/pv-existing-vol.yaml
NOTE:
- Quobyte-csi supports both volume name and UUID
- To use Volume Name
VolumeHandle
should be of the format<API_URL>|<Tenant_Name/UUID>|<Volume_Name>
andnodePublishSecretRef
with Quobyte API login credentials should be specified as shown in the example PVexample/pv-existing-vol.yaml
- To use Volume UUID
VolumeHandle
can be||<Volume_UUID>
.
- To use Volume Name
kubectl create -f example/pv-existing-vol.yaml
Create a PVC that matches the storage requirements with the above PV (make sure both PV and PVC refer to the same storage class)
kubectl create -f example/pvc-existing-vol.yaml
Create a pod referring the PVC as shown in the below example
kubectl create -f example/pod-with-existing-vol.yaml