Operator

This topic describes the configuration parameters to be defined for creating a CSIScaleOperator custom resource that is used to configure IBM Spectrum Scale Container Storage Interface driver.

A sample configuration yaml file is available here: https://raw.githubusercontent.com/IBM/ibm-spectrum-scale-csi/v2.1.0/operator/deploy/crds/csiscaleoperators.csi.ibm.com_cr.yaml.

Figure 1. Operator configuration
Operator concept.
  • Primary cluster: IBM Spectrum Scale cluster where some or all of the client nodes are also worker nodes of Red Hat® OpenShift®/Kubernetes cluster. The aim of running IBM Spectrum Scale on worker node is to provide persistent storage from IBM Spectrum Scale to the application running on Kubernetes/Red Hat OpenShift.
  • Primary file system: One of the existing IBM Spectrum Scale file systems from the primary cluster must be designated as the primary file system. One fileset from this file system is used by the IBM Spectrum Scale Container Storage Interface driver internally to store the volume references. This fileset is referred to as primary fileset. For proper functioning of IBM Spectrum Scale Container Storage Interface driver, the primary file system must be mounted on all worker nodes all the time.

The CSIScaleOperator custom resource for a sample deployment looks like the following. There are two file systems gpfs0 and gpfs1. For this deployment, we chose gpfs0 as PrimaryFs.

csiscaleoperators.csi.ibm.com_cr.yam file


---
apiVersion: csi.ibm.com/v1
kind: "CSIScaleOperator"
metadata:
  name: "ibm-spectrum-scale-csi"
  namespace: "ibm-spectrum-scale-csi-driver"
  labels:
    app.kubernetes.io/name: ibm-spectrum-scale-csi-operator
    app.kubernetes.io/instance: ibm-spectrum-scale-csi-operator
    app.kubernetes.io/managed-by: ibm-spectrum-scale-csi-operator
    release: ibm-spectrum-scale-csi-operator
status: {}
spec:
  scaleHostpath: "/ibm/gpfs0"
  clusters:
    - id: "<cluster id of IBM Spectrum Scale running on node1,node2,node3>"
      secrets: "guisecretNode1"
      secureSslMode: false
      primary:
        primaryFs: "gpfs0"
      restApi:
        - guiHost: "<FQDN/IP of Node 1>"
  attacherNodeSelector:
    - key: "scale"
      value: "true"
  provisionerNodeSelector:
    - key: "scale"
      value: "true"
  pluginNodeSelector:
    - key: "scale"
      value: "true"
---
Table 1. CSIScaleOperator configuration parameter description
Parameter Usage Description
id Mandatory Cluster ID of the primary IBM Spectrum Scale cluster. For more information, see mmlscluster command in the IBM Spectrum Scale: Concepts, Planning, and Installation Guide.
primaryFs Mandatory Primary file system name.
primaryFset Optional Primary fileset name. This will be created if the fileset does not exist. Default value: spectrum-scale-csi-volume-store
inodeLimit Optional Inode limit for the primary fileset. If not specified, fileset is created with 1 M inodes, which is the IBM Spectrum Scale default.
cacert Mandatory if secureSslMode is true. Name of the pre-created CA certificate configmap that is used to connect to the GUI server (running on the "guiHost"). For more information, see Certificates.
secrets Mandatory Name of the pre-created Secret containing username and password that are used to connect to the GUI server for the cluster specificed against the id parameter. For more information, see Secrets.
guiHost Mandatory FQDN or IP address of the GUI node of IBM Spectrum Scale cluster that is specified against the id parameter.
scaleHostpath Mandatory Mount path of the primary file system (primaryFs).
imagePullSecrets Optional An array of imagePullSecrets to be used for pulling images from a private registry. This is a pass-through option that distributes the imagePullSecrets array to the containers generated by the Operator. For more information on creating imagePullSecrets, see https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/.

For deployment involving two or more IBM Spectrum Scale clusters, see Remote cluster support.