Home > Workload Solutions > Container Platforms > Red Hat OpenShift Container Platform > Archive > Deployment Guide—Integrating Dell Unity Storage with OpenShift 4.3 Using Helm v3 > Creating the CSI Unity driver instance
Create the CSI Unity driver instance:
$ cat rbac1.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: unity-node
rules:
- apiGroups:
- security.openshift.io
resourceNames:
- privileged
resources:
- securitycontextconstraints
verbs:
- use
$ cat rbac1bind.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: unity-node
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: unity-node
subjects:
- kind: ServiceAccount
name: unity-node
namespace: unity
$ cat snapshot-crd.yaml
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: volumesnapshotclasses.snapshot.storage.k8s.io
spec:
group: snapshot.storage.k8s.io
names:
kind: VolumeSnapshotClass
plural: volumesnapshotclasses
scope: Cluster
version: v1alpha1
$ cat myvalues.yaml
# Represents number of certificate secrets, which user is going to create for ssl authentication. (unity-cert-0..unity-cert-n)
certSecretCount: 1
# Time interval to add node info to array. Default 15 minutes. Minimum value should be 1.
# If your specifies 0, then time is set to default value.
syncNodeInfoInterval: 15
# "volumeNamePrefix" defines a string prepended to each volume created by the CSI driver.
volumeNamePrefix: csivol
# "snapNamePrefix" defines a string prepended to each snapshot registered by the CSI driver.
snapNamePrefix: csi-snap
# To set the debug log policy for CSI driver
csiDebug: "true"
# The default pull policy is IfNotPresent which causes the Kubelet to skip pulling an image
# if it already exists. If you would like to always force a pull, use "Always"
imagePullPolicy: IfNotPresent
# The installation process will generate multiple storageclasses based on "arrayIDList" parameter.
# Only the primary storageclass for the driver will be marked default if specified.
# The following are default values for storageclass parameters if user does not specify in "arrayIDList"
storageClass:
# To set File system type. Possible values are ext3,ext4,xfs. Default value is ext4
FsType: "ext4"
# To set volume thinProvisioned. Default value is true
thinProvisioned: "true"
# To set volume data reduction. Default value is false
isDataReductionEnabled: "false"
# To set volume tiering policy. Default 0
tieringPolicy: "0"
# To set unity host IO limit
hostIOLimitName: ""
# NAS server for filesystem (NFS)
nasServer: ""
# hostIoSize for filesystem (NFS). Default value is 8192
hostIoSize: "8192"
# "storageClass.reclaimPolicy" defines what will happen when a volume is
# removed from the Kubernetes API. Valid values are "Retain" and "Delete".
reclaimPolicy: Delete
# To handle the existing volumes created in csi-unity v1.0, 1.1 and 1.1.0.1.
# The user needs to provide "isDefaultArray": true in secret.json. This entry should be present only for one array and that array will be marked for existing volumes.
isDefaultArray: "false"
# The installation process will generate snapshotClasses based on these parameters.
snapshotClass:
#To set snapshot retention duration. Format:"1:23:52:50" (number of days:hours:minutes:sec)
retentionDuration: ""
# The installation process will generate multiple storageclasses based on these parameters.
# Only the primary storageclass for the driver will be marked default if specified.
storageArrayList:
- name: "APM01234567890"
storageClass:
storagePool: pool_2
FsType: "xfs"
thinProvisioned: "true"
isDataReductionEnabled: "false"
tieringPolicy: "0"
hostIOLimitName: ""
nasServer: "nas_1"
reclaimPolicy: Delete
snapshotClass:
retentionDuration: ""
#To set different protocols based on which different default storage classes would be generated during driver installation.
storageClassProtocols:
- protocol: "FC"
- protocol: "NFS"
- protocol: "iSCSI"
# IT IS RECOMMENDED YOU DO NOT CHANGE THE IMAGES TO BE DOWNLOADED.
images:
# "images.driver" defines the container images used for the driver container.
driver: dellemc/csi-unity:v1.2.0.000R
Note: The FC, NFS, and iSCSI protocols are specified under storageClassProtocols. Different storage classes for each protocol are created.
$ helm install unity --values myvalues.yaml --values csi-unity/k8s-1.16-values.yaml -n unity ./csi-unity
$ oc get pods -n unity
NAME READY STATUS RESTARTS AGE
unity-controller-0 3/3 Running 0 23h
unity-node-llgcx 2/2 Running 0 23h
unity-node-mqh2n 2/2 Running 0 23h
unity-node-v5fm2 2/2 Running 0 23h
Notes:
All the IQNs and FC ports WWNs of the worker nodes are automatically added to the Unity Unisphere.
There is one controller pod for each storage provider and one Unity node pod per worker node in the cluster.
$ oc get sc
NAME PROVISIONER AGE
unity-apm01234567890-fc csi-unity.dellemc.com 15d
unity-apm01234567890-iscsi csi-unity.dellemc.com 15d
unity-apm01234567890-nfs csi-unity.dellemc.com 15d