The CSI Operator should only be used for installation of PSO in an OpenShift 4.2 and 4.3 Environment
For all other deployments of Kubernetes, including OpenShift 4.4 and higher, use the Helm installation process.
The Pure CSI Operator packages and deploys the Pure Service Orchestrator (PSO) CSI plugin on OpenShift for dynamic provisioning of persistent volumes on FlashArray and FlashBlade storage appliances. This Operator is created as a Custom Resource Definition from the pure-csi Helm chart using the Operator-SDK. This installation process does not require Helm installation.
-
- Red Hat OpenShift 4.3 - 4.4
-
- Latest linux multipath software package for your operating system (Required)
- Latest Filesystem utilities/drivers (XFS by default, Required)
- Latest iSCSI initiator software for your operating system (Optional, required for iSCSI connectivity)
- Latest NFS software package for your operating system (Optional, required for NFS connectivity)
- Latest FC initiator software for your operating system (Optional, required for FC connectivity, FC Supported on Bare-metal installations only)
-
- The FlashArray and/or FlashBlade should be connected to the compute nodes using Pure's best practices
* Please see release notes for details
More details on using the snapshot and clone functionality can be found here
More details on using customized filesystem options can be found here.
More details on using Read-Write-Many (RWX) volumes with Kubernetes can be found here
Whilst there are some example StorageClass
definitions provided by the PSO installation, refer here for more details on these default storage classes and how to create your own custom storage classes that can be used by PSO.
Clone this GitHub repository, selecting the version of the operator you wish to install. We recommend using the latest released version. Information on this can be found here
git clone --branch <version> https://github.com/purestorage/helm-charts.git
cd operator-csi-plugin
Create your own values.yaml
. The easiest way is to copy the default ./values.yaml with wget
.
The pure-csi-operator namespace/project is created by the install script (see below).
Run the install script to set up the Pure CSI Operator.
# For OpenShift 4.3 only
install.sh --image=<image> --namespace=<namespace> --orchestrator=openshift -f <values.yaml>
# For OpenShift 4.4 and 4.5
install_ose4.sh --image=<image> --namespace=<namespace> --orchestrator=openshift -f <values.yaml>
Parameter list:
image
is the Pure CSI Operator image. If unspecifiedimage
resolves to the released version at quay.io/purestorage/pso-operator.namespace
is the namespace/project in which the Pure CSI Operator and its entities will be installed. If unspecified, the operator creates and installs in thepure-csi-operator
namespace. Pure CSI Operator MUST be installed in a new project with no other pods. Otherwise an uninstall may delete pods that are not related to the Pure CSI Operator.values.yaml
is the customized helm-chart configuration parameters. This is a required parameter and must contain the list of all backend FlashArray and FlashBlade storage appliances. All parameters that need a non-default value must be specified in this file. Refer to Configuration for values.yaml.
The install script will do the following:
- Create New Project.
The script creates a new project (if it does not already exist) with the given namespace. If no namespace parameter is specified, thepure-csi-operator
namespace is used. - Create a Custom Resource Definition (CRD) for the Pure CSI Operator.
The script waits for the CRD to be published in the cluster. If after 10 seconds the API server has not setup the CRD, the script times out. To wait longer, pass the parameter--timeout=<timeout_in_sec>
to the install script. - Create RBAC rules for the Operator.
The Pure CSI Operator needs the following Cluster-level Roles and RoleBindings.
Resource | Permissions | Notes |
---|---|---|
Namespace | Get | Pure CSI Operator needs the ability to get created namespaces |
Storageclass | Create/Delete | Create and cleanup storage classes to be used for Provisioning |
ClusterRoleBinding | Create/Delete/Get | PSO Operator needs to create and cleanup a ClusterRoleBinding used by the external-provisioner sidecar and cluster-driver-registrar sidecar(only K8s 1.13) |
The operator also needs all the Cluster-level Roles that are needed by the external-provisioner and cluster-driver-registrar sidecars. In addition, the operator needs access to multiple resources in the project/namespace that it is deployed in to function correctly. Hence it is recommended to install the Pure CSI Operator in the non-default namespace.
- Creates a deployment for the Operator.
Finally the script creates and deploys the operator using the customized parameters passed in thevalues.yaml
file.
The update.sh
script is used to apply changes from values.yaml
as follows.
./update.sh -f values.yaml
To uninstall the Pure CSI Operator, run
oc delete PSOPlugin/psoplugin-operator -n <pure-csi-operator-installed-namespace>
oc delete all --all -n <pure-csi-operator-installed-namespace>
where pure-csi-operator-installed-namespace
is the project/namespace in which the Pure CSI Operator is installed. It is strongly recommended to install the Pure CSI Operator in a new project and not add any other pods to this project/namespace. Any pods in this project will be cleaned up on an uninstall.
To completely remove the CustomResourceDefinition used by the Operator run
oc delete crd psoplugins.purestorage.com