Container technology was born in the cloud and one of the great things about the cloud is that you have all kind of services available to you. Particularly for containers in the public cloud, you can just request persistent file or block storage, as these services are provided by your cloud provider. However once you run Kubernetes on-prem you now need to provide those services by yourself. However you want to keep the developer first / Infrastructure-as-Code advantages that containers offer.
This is why Pure Storage has created the Pure Service Orchestrator (or PSO). PSO delivers Storage-as-a-Service to your container platform, be it Kubernetes, RedHat OpenShift or others.
The Pure Storage Service orchestrator can be installed into your container orchestration platform to provide persistent storage services in the same way as you would expect these in the public cloud. As you are used to with Pure Storage, the solution is provided without additional license cost, as part of the Evergeren subscription model.
Installing and initializing Helm
Installing PSO is quite simple, since it is provided as a Helm Chart, which makes it easy to install, upgrade and maintain. The Helm Chart for PSO is hosted on GitHub, the README.MD file provides detailed installation instructions:
For the installation of PSO Helm is required, so make sure you have it installed on our system. The following command will install Helm using Snap.
sudo snap install helm --classic helm init helm version
Secondly Helm need cluster-admin permissions to be able to deploy software on the cluster.
kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
Prepare the PSO configuration
Next we have to add the Pure Storage GitHub repo to Helm:
helm repo add pure https://purestorage.github.io/helm-charts helm repo update helm search pure-k8s-plugin
Next step is to create a values.yml file to specify our FlashArray and/or FlashBlade systems we want to use. The example below is the minimal form of the values.yaml file, here you can add one or more systems bij adding MgmtEndPoints with the management IP address and a valid API token of the Pure Storage system(s):
– MgmtEndPoint: “22.214.171.124”
– MgmtEndPoint: “126.96.36.199”
Now we can check if our values.yml file is correct and everything is prepared for the installation of PSO, by running a dry-run install. Optionally you can add the “–namespace” option to install in a specific namespace.
helm install –name pure-storage-driver pure/pure-k8s-plugin -f ./values.yml –dry-run –debug
If no errors are return, we can go ahead and install PSO. Optionally you can add the “–namespace” option to install in a specific namespace.
helm install –name pure-storage-driver pure/pure-k8s-plugin -f ./values.yml
With this the PSO is installed and you can begin provisioning persistent storage from your containers.
Using PSO to create persistent volumes
The following yams code shows how to provision persistent block storage to a container. Basically all the lines are what we are used to in the public cloud, however the last line “storageClassName: pure-block” specifies that we will use the PSO pure-provisioner to provision the request.
accessModes: – ReadWriteOnce