diff --git a/doc/source/introduction/terms.rst b/doc/source/introduction/terms.rst index 75a839e0f..3345b5cdf 100644 --- a/doc/source/introduction/terms.rst +++ b/doc/source/introduction/terms.rst @@ -224,3 +224,13 @@ commonly used in the |org| community and in this documentation. A single physical port that can be shared by two or more system networks (oam, mgmt., cluster-host, pxeboot and data) For more information, see :ref:`sriov-port-sharing`. + + |CSM| Observability + An OpenTelemetry agent that collects array-level metrics for Dell storage. + + Prometheus + An open source software application that is used to monitor and alert + events. For more information, see ``__. + + Unity XT + A simple, fast, flexible, and all-inclusive unified storage platform. diff --git a/doc/source/shared/abbrevs.txt b/doc/source/shared/abbrevs.txt index aa9ea9b7e..4613366c4 100755 --- a/doc/source/shared/abbrevs.txt +++ b/doc/source/shared/abbrevs.txt @@ -32,6 +32,7 @@ .. |CNI| replace:: :abbr:`CNI (Container Networking Interface)` .. |CNIs| replace:: :abbr:`CNIs (Container Networking Interfaces)` .. |CoW| replace:: :abbr:`CoW (Copy on Write)` +.. |CO| replace:: :abbr:`CO (Container Orchestrator)` .. |CR| replace:: :abbr:`CR (Custom Resource)` .. |CRs| replace:: :abbr:`CRs (Custom Resources)` .. |CRD| replace:: :abbr:`CRD (Custom Resource Definition)` @@ -40,6 +41,8 @@ .. |CSIs| replace:: :abbr:`CSIs (Container Storage Interfaces)` .. |CSK| replace:: :abbr:`CSK (Code Signing Key)` .. |CSKs| replace:: :abbr:`CSKs (Code Signing Keys)` +.. |CSM| replace:: :abbr:`CSM (Container Storage Module)` +.. |CSMs| replace:: :abbr:`CSMs (Container Storage Modules)` .. |CSR| replace:: :abbr:`CSR (Certificate Signing Request)` .. |CSV| replace:: :abbr:`CSV (Comma-Separated Values)` .. |CVE| replace:: :abbr:`CVE (Common Vulnerabilities and Exposures)` @@ -72,6 +75,7 @@ .. |FPGA| replace:: :abbr:`FPGA (Field Programmable Gate Array)` .. |FQDN| replace:: :abbr:`FQDN (Fully Qualified Domain Name)` .. |FQDNs| replace:: :abbr:`FQDNs (Fully Qualified Domain Names)` +.. |JWT| replace:: :abbr:`JWT (JSON Web Token)` .. |GC| replace:: :abbr:`GC (Garbage Collection)` .. |GM| replace:: :abbr:`GM (Grand Master)` .. |GNP| replace:: :abbr:`GNP (Global Network Policy)` @@ -110,9 +114,11 @@ .. |MNFA| replace:: :abbr:`MNFA (Multi-Node Failure Avoidance)` .. |MOTD| replace:: :abbr:`MOTD (Message of the Day)` .. |MSR| replace:: :abbr:`MSR (Model-specific Registers)` +.. |mTLS| replace:: :abbr:`mTLS (Mutual Transport Layer Security)` .. |MTU| replace:: :abbr:`MTU (Maximum Transmission Unit)` .. |NA| replace:: :abbr:`NA (Not Applicable)` .. |NAT| replace:: :abbr:`NAT (Network Address Translation)` +.. |NAS| replace:: :abbr:`NAS (Network Attached Storage)` .. |NF| replace:: :abbr:`NF (Network Function)` .. |NFD| replace:: :abbr:`NFD (Node Feature Discovery)` .. |NFs| replace:: :abbr:`NFs (Network Functions)` @@ -123,6 +129,7 @@ .. |NUMA| replace:: :abbr:`NUMA (Non-Uniform Memory Access)` .. |NVMe| replace:: :abbr:`NVMe (Non-Volatile Memory express)` .. |OAM| replace:: :abbr:`OAM (Operations, administration and management)` +.. |OAuth| replace:: :abbr:`OAuth (Open standard for authorization)` .. |OEM| replace:: :abbr:`OEM (Original Equipment Manufacturer)` .. |OC| replace:: :abbr:`OC (Ordinary Clock)` .. |OCI| replace:: :abbr:`OCI (Open Container Initiative)` @@ -171,6 +178,8 @@ .. |RBD| replace:: :abbr:`RBD (RADOS Block Device)` .. |RCA| replace:: :abbr:`RCA (Root Certificate Authority)` .. |RCAs| replace:: :abbr:`RCAs (Root Certificate Authorities)` +.. |RG| replace:: :abbr:`RG (Replication Group)` +.. |RPOs| replace:: :abbr:`RPOs (Recovery Point Objective)` .. |RPC| replace:: :abbr:`RPC (Remote Procedure Call)` .. |RST| replace:: :abbr:`rST (reStructuredText)` .. |RVMC| replace:: :abbr:`RVMC (Redfish Virtual Media Controller)` @@ -179,6 +188,7 @@ .. |SAS| replace:: :abbr:`SAS (Serial Attached SCSI)` .. |SATA| replace:: :abbr:`SATA (Serial AT Attachment)` .. |SBR| replace:: :abbr:`SBR (Source-Based Routing)` +.. |SCSI| replace:: :abbr:`SCSI (Small Computer System Interface)` .. |SCTP| replace:: :abbr:`SCTP (Stream Control Transmission Protocol)` .. |SDO| replace:: :abbr:`SDO (Secure Device Onboard)` .. |SGX| replace:: :abbr:`SGX (Software Guard Extensions)` @@ -195,6 +205,8 @@ .. |SPO| replace:: :abbr:`SPO (Security Profiles Operator)` .. |SRIOV| replace:: :abbr:`SR-IOV (Single Root I/O Virtualization)` .. |SRIOVs| replace:: :abbr:`SR-IOVs (Single Root I/O Virtualizations)` +.. |SRDF| replace:: :abbr:`SRDF (Symmetrix Remote Data Facility)` +.. |SRP| replace:: :abbr:`SRP (Storage Resource Pool)` .. |SSD| replace:: :abbr:`SSD (Solid State Drive)` .. |SSDs| replace:: :abbr:`SSDs (Solid State Drives)` .. |SSH| replace:: :abbr:`SSH (Secure Shell)` @@ -219,6 +231,7 @@ .. |UDS| replace:: :abbr:`UDS (Unix Domain Socket)` .. |UEFI| replace:: :abbr:`UEFI (Unified Extensible Firmware Interface)` .. |UFT| replace:: :abbr:`UFT (Unified Flow Tool)` +.. |USM| replace:: :abbr:`USM (Unified Software Management)` .. |UUID| replace:: :abbr:`UUID (Universally Unique Identifier)` .. |UUIDs| replace:: :abbr:`UUIDs (Universally Unique Identifiers)` .. |VF| replace:: :abbr:`VF (Virtual Function)` diff --git a/doc/source/storage/kubernetes/configure-dell-storage-csms-937563b7bb36.rst b/doc/source/storage/kubernetes/configure-dell-storage-csms-937563b7bb36.rst new file mode 100644 index 000000000..d987fe267 --- /dev/null +++ b/doc/source/storage/kubernetes/configure-dell-storage-csms-937563b7bb36.rst @@ -0,0 +1,239 @@ +.. WARNING: Add no lines of text between the label immediately following +.. and the title. + +.. _configure-dell-storage-csms-937563b7bb36: + +=========================== +Configure Dell-Storage CSMs +=========================== + +.. contents:: + :local: + :depth: 2 + +----------------- +CSM Observability +----------------- + +|CSM| Observability is an OpenTelemetry agent that collects array-level metrics +for Dell storage so they can be exported into a Prometheus database. With |CSM| +for Observability, you will gain visibility not only on the capacity of the +volumes/file shares you manage with Dell |CSM| |CSI| drivers but also on their +performance in terms of bandwidth, |IOPS|, and response time. + +.. note:: + + The |CSM| Observability is not available for Unity XT and is not fully + available for all storages. You can check the compatibility/capabilities on + `Dell Documentation `__. + +****************** +Enable Helm Charts +****************** + +.. note:: + + Disable any other |CSI|/|CSM| if not used/configured, otherwise it could + cause the application to fail on apply. + + .. code-block:: none + + (keystone_admin)$ system helm-chart-attribute-modify --enabled false dell-storage dell-storage + +Enable |CSM| Observability using the following command: + +.. code-block:: none + + (keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csm-observability dell-storage + +********************* +Update User Overrides +********************* + +.. note:: + + ``karaviMetricsPowerstore`` is enabled by default. All others are disabled. + The ``karaviTopology`` and ``otelCollector`` collectors are also enabled by default. + +.. rubric:: |proc| + +#. Create user overrides by enabling the metrics that you need. + + .. code-block:: none + + :name: observabilityOverrides.yaml + karaviMetricsPowerstore: + enabled: true + + karaviMetricsPowerflex: + enabled: false + + karaviMetricsPowerscale: + enabled: false + + karaviMetricsPowermax: + enabled: false + +#. Apply the overrides. + + .. code-block:: none + + (keystone_admin)$ system helm-override-update dell-storage csm-observability dell-storage --values=observabilityOverrides.yml + +#. Apply the application. + + .. code-block:: none + + (keystone_admin)$ system application-apply dell-storage + + +#. Check that the metrics are being generated by accessing the otel-collector pod API. + + .. code-block:: none + + curl -k https://$(kubectl get -n dell-storage pods -o wide | grep otel-collector | awk '{print $6}'):8443/metrics + + +**************************** +CSM Observability Parameters +**************************** + +.. table:: + :widths: auto + + +---------------------------------+---------------------------------------------+----------+---------+ + | Parameter | Description | Required | default | + +=================================+=============================================+==========+=========+ + | karaviMetricsPowerstore.enabled | If true, enable metrics for CSI-Powerstore. | No | True | + +---------------------------------+---------------------------------------------+----------+---------+ + | karaviMetricsPowerflex.enabled | If true, enable metrics for CSI-Powerflex. | No | False | + +---------------------------------+---------------------------------------------+----------+---------+ + | karaviMetricsPowerscale.enabled | If true, enable metrics for CSI-Powerscale. | No | False | + +---------------------------------+---------------------------------------------+----------+---------+ + | karaviMetricsPowermax.enabled | If true, enable metrics for CSI-Powermax. | No | False | + +---------------------------------+---------------------------------------------+----------+---------+ + +-------------- +CSM Resiliency +-------------- + +User applications can have problems if you want their pods to be resilient to +node failure. This is especially true for those deployed with StatefulSets that +use PersistentVolumeClaims. Kubernetes makes sure that there will never be two +copies of the same StatefulSet pod running at the same time and accessing +storage volumes. Therefore, it does not clean up StatefulSet pods if the node executing +them fails. + +********************* +Enable csm-resiliency +********************* + +.. rubric:: |proc| + +#. Add the ``csm.resiliency: true`` parameter to the user overrides. Below is + an example using Powerstore: + + .. code-block:: none + + :name: powerstoreOverrides.yaml + csm: + resiliency: true + storageClasses: + - name: csi-powerstore-iscsi + arrayID: + fstype: ext4 + + secret: + arrays: + - globalID: + username: + password: + endpoint: https:///api/rest + isDefault: true + blockProtocol: "ISCSI" + +#. Apply the user overrides. + + .. code-block:: none + + (keystone_admin)$ system helm-override-update dell-storage csi-powerstore dell-storage --values=powerstoreOverrides.yaml + +#. Apply the application. + + .. code-block:: none + + (keystone_admin)$ system application-apply dell-storage + +--------------- +CSM Replication +--------------- + +|CSM| for replication project aims to bring replication and disaster recovery +capabilities of Dell Storage Arrays to Kubernetes clusters. It helps users +replicate groups of volumes using the native replication technology available +on the storage array and can provide you a way to restart applications in case +of both planned and unplanned migration. + +***************************** +Enable CSM Replication Charts +***************************** + +.. rubric:: |prereq| + +Ensure that the csm-replication chart is enabled. + +.. code-block:: none + + (keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csm-replication dell-storage + +.. rubric:: |proc| + +#. Add the ``csm.replication: true`` parameter to the user overrides. Below is + an example using Powerstore: + + .. code-block:: none + + :name: powerstoreOverrides.yaml + csm: + replication: true + app.starlingx.io/component: platform + storageClasses: + - name: csi-powerstore-iscsi + arrayID: + fstype: ext4 + replication: + remoteStorageClassName: remote_storageclass + remoteClusterID: remote_clusterid + remoteSystem: remote_system + rpo: "Five_Minutes" + ignoreNamespaces: false + volumeGroupPrefix: + + secret: + arrays: + - globalID: + username: + password: + endpoint: https:///api/rest + isDefault: true + blockProtocol: "ISCSI" + + .. note:: + + The replication parameters need to be configured on each storage class + that will use it. Check the ``StorageClasses`` Parameter session of the |CSI| + you are using to know which parameters to set. + +#. Apply the user overrides. + + .. code-block:: none + + (keystone_admin)$ system helm-override-update dell-storage csi-powerstore dell-storage --values=powerstoreOverrides.yaml + +#. Apply the application. + + .. code-block:: none + + (keystone_admin)$ system application-apply dell-storage + + diff --git a/doc/source/storage/kubernetes/configure-powerflex-csi-backend-20a371e4f7d3.rst b/doc/source/storage/kubernetes/configure-powerflex-csi-backend-20a371e4f7d3.rst new file mode 100644 index 000000000..419c778b8 --- /dev/null +++ b/doc/source/storage/kubernetes/configure-powerflex-csi-backend-20a371e4f7d3.rst @@ -0,0 +1,215 @@ +.. WARNING: Add no lines of text between the label immediately following +.. and the title. + +.. _configure-powerflex-csi-backend-20a371e4f7d3: + +=============================== +Configure PowerFlex CSI Backend +=============================== + +|CSI| driver for PowerFlex is a part of the |CSM| open-source suite of +Kubernetes storage enablers for Dell products. It is a |CSI| driver that +provides support for provisioning persistent storage using Dell PowerFlex +storage array. + +.. note:: + + VxFlexOs is the legacy name for PowerFlex. + +.. note:: + + By default, the csi-powerflex chart is disabled. It is necessary to enable + the chart and update user-overrides before applying the dell-storage + application. + +.. contents:: + :local: + :depth: 2 + +-------------------------- +Enable CSI PowerFlex Chart +-------------------------- + +.. note:: + + Disable any other |CSI|/|CSM| if not used/configured, otherwise it could cause the + application to fail on apply. + + .. code-block:: + + system helm-chart-attribute-modify --enabled false dell-storage dell-storage + + +#. Enable the chart using the following command: + + .. code-block:: none + + (keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csi-powerflex dell-storage + +#. Create overrides to configure the storage connection. + + .. code-block:: none + + :name: powerflexOverrides.yaml + app.starlingx.io/component: platform + + storageClasses: + - name: csi-powerflex-nfs + arrayId: + nasServer: nas_2 + provisioner: csi-vxflexos.dellemc.com + fstype: nfs + path: /target + reclaimPolicy: Delete + allowVolumeExpansion: true + volumeBindingMode: Immediate + mountOptions: ["hard"] + hostIoSize: 8192 + tieringPolicy: 0 + isDataReductionEnabled: "false" + thinProvisioned: "true" + storagePool: pool_2 + protocol: NFS + + secret: + arrays: + - arrayId: + username: + password: + systemID: + allSystemNames: "pflex-1" + endpoint: https:///api/rest + isDefault: true + skipCertificateValidation: true + nasName: nas_2 + +#. Apply overrides using the following command: + + .. code-block:: + + (keystone_admin)$ system helm-override-update dell-storage csi-powerflex dell-storage --values=powerflexOverrides.yaml + +#. Apply the chart using the following command: + + .. code-block:: + + (keystone_admin)$ system application-apply dell-storage + +------------------------ +UserOverrides Parameters +------------------------ + +****************** +General Parameters +****************** + +.. table:: + :widths: auto + + +------------------------------------+-----------------------------------------------------------+----------+----------+ + | Parameter | Description | Required | Default | + +====================================+===========================================================+==========+==========+ + | csm.replication | Enables/disables replication sidecar container. | No | false | + +------------------------------------+-----------------------------------------------------------+----------+----------+ + | csm.resiliency | Enables/disables dell-csi-replicator sidecar container. | No | false | + +------------------------------------+-----------------------------------------------------------+----------+----------+ + | app.starlingx.io/component | Core affinity. | No | platform | + +------------------------------------+-----------------------------------------------------------+----------+----------+ + | controller.snapshot.deletionPolicy | Specifies what happens when VolumeSnapshot is deleted. | No | Delete | + +------------------------------------+-----------------------------------------------------------+----------+----------+ + +************************* +StorageClasses Parameters +************************* + +.. table:: + :widths: auto + + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | Parameter | Description | Required | Default | + +=======================================================+==========================================================================================================================================================================+==========+===========================+ + | storageClasses[0].name | StorageClass name. | No | "csi-powerflex-" + fstype | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].systemID | ID of array to be used for volumes. arrayID corresponding to array's globalID specified in secrets. | Yes | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].nasName | |NAS| server's name. Important: required for |NFS| protocol. | No | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].provisioner | Driver name. | No | csi-vxflexos.dellemc.com | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].fstype | Filesystem type for mounted volumes. | No | nfs | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].reclaimPolicy | PVs that are dynamically created by a StorageClass will have the reclaim policy specified here. | No | Delete | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].allowVolumeExpansion | Allows the users to resize the volume by editing the corresponding |PVC| object. | No | true | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].volumeBindingMode | Controls when volume binding and dynamic provisioning should occur. | No | Immediate | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].protectionDomain | Protection domain that storage pool belongs to. Needed if array has two storagepools that share the same name but belong to different protection domains. | No | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].iopsLimit | Limit the volume |IOPS|. | No | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].path | The relative path to the root of the associated filesystem. | No | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].softLimit | Time for soft limit to quota. Specified as percentage. | No | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].gracePeriod | Requires the configuration of softLimit. Defines the period in which the soft limit time has reached and can exceed until process ends. | No | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].bandwithLimitInKbps | The value to limit the volume network bandwidth. | No | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].mkfsFormatOption | A string value to dictate de fs format options to pass to mkfs. | No | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].storagePool | Defines storage pool. The value should be picked from the column labeled "CLI ID" of pools in the Unisphere GUI. | Yes | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].replication | Used to configure replication sidecar container. | No | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].replication.remoteStorageClassName | Remote StorageClass name. | No | csi-powerflex-replication | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].replication.remoteClusterID | Remote ClusterID. | No | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].replication.remoteSystem | Remote PowerStore system. | No | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].replication.remoteStoragePool | Defines storage pool for the replication. The value should be picked from the column labeled "CLI ID" of Pools in the Unisphere GUI. | No | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].replication.rpo | Change to any other |RPOs| supported by PowerStore. | No | Five_Minutes | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].replication.consistencyGroupName | Defines the group name in array of a replication. | No | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].replication.volumeGroupPrefix | Volume group prefix. | No | csi-powerflex | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].replication.protectionDomain | Protection domain that storage pool of replication belongs to. Needed if array has two storagepools that share the same name but belong to different protection domains. | No | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].replication.remotePVRetentionPolicy | Reclaim policy for PersistentVolumes. Can accept ``Retain``, ``Recycle``, and ``Delete``. | No | Delete | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].replication.remoteRGRetentionPolicy | Reclaim policy for |RG|. Can accept ``Retain``, ``Recycle``, and ``Delete``. | No | Delete | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + | storageClasses[0].allowedTopologies | This feature lets you specify sub-divisions of a cluster for a volume to be placed in. | No | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+ + +***************** +Secret Parameters +***************** + +.. table:: + :widths: auto + + +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+ + | Parameter | Description | Required | Default | + +============================================+=========================================================================================+==========+================+ + | secret.arrays | List of Unity XT. | Yes | Not Applicable | + +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].systemID | Array ID of Powerflex. | Yes | Not Applicable | + +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].username | Username for accessing PowerFlex system. | Yes | Not Applicable | + +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].password | Password for accessing PowerFlex system. | Yes | Not Applicable | + +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].endpoint | HTTPS localhost endpoint that the authorization sidecar will listen on. | Yes | Not Applicable | + +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].isDefault | Treat current array as a default. Important: use at least one of the arrays as default. | No | false | + +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].skipCertificateValidation | Indicates if client-side validation of server's certificate can be skipped. | No | true | + +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].AllSystemNames | Previous names used in secret of Powerflex system. | Yes | Not Applicable | + +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].nasName | What |NAS| should be used for |NFS| volumes. Required for |NFS| protocol. | No | Not Applicable | + +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+ diff --git a/doc/source/storage/kubernetes/configure-powermax-csi-backend-7b6e65e3a811.rst b/doc/source/storage/kubernetes/configure-powermax-csi-backend-7b6e65e3a811.rst new file mode 100644 index 000000000..85eb28010 --- /dev/null +++ b/doc/source/storage/kubernetes/configure-powermax-csi-backend-7b6e65e3a811.rst @@ -0,0 +1,271 @@ +.. WARNING: Add no lines of text between the label immediately following +.. and the title. + +.. _configure-powermax-csi-backend-7b6e65e3a811: + +============================== +Configure PowerMax CSI Backend +============================== + +|CSI| driver for PowerMax is a part of the |CSM| open-source suite of +Kubernetes storage enablers for Dell products. It is a |CSI| driver that +provides support for provisioning persistent storage using Dell PowerMax +storage array. + +.. note:: + + By default, the csi-powermax chart is disabled. It is necessary to enable + the chart and update user-overrides before applying the dell-storage + application. + +.. contents:: + :local: + :depth: 2 + +------------------------- +Enable CSI PowerMax Chart +------------------------- + +.. note:: + + Disable any other |CSI|/|CSM| if not used/configured, otherwise it could cause the + application to fail on apply. + + .. code-block:: none + + (keystone_admin)$ system helm-chart-attribute-modify --enabled false dell-storage dell-storage + +#. Enable the chart. + + .. code-block:: none + + (keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csi-powermax dell-storage + +#. Create overrides to configure the storage connection. + + .. code-block:: none + + :name: powermaxOverrides.yaml + secret: + username: + password: + + authorization: + configs: + - username: + password: + intendedEndpoint: endpoint1 + systemID: + isDefault: true + + global: + managementServers: + - endpoint: https://primary-1.unisphe.re:8443 + credentialsSecret: primary-1-secret + username: + password: + skipCertificateValidation: true + + storageClasses: + - name: "sc-0" + SRP: "TEST" + SYMID: "TEST1" + ApplicationPrefix: "prefix1" + HostLimitName: "1000" + DynamicDistribution: "Optimized + +#. Apply overrides. + + .. code-block:: none + + (keystone_admin)$ system helm-override-update dell-storage csi-powermax dell-storage --values=powermaxOverrides.yaml + +#. Apply the chart. + + .. code-block:: none + + (keystone_admin)$ system application-apply dell-storage + +------------------------ +UserOverrides Parameters +------------------------ + +****************** +General Parameters +****************** + +.. table:: + :widths: auto + + +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+ + | Parameter | Description | Required | Default | + +========================================+==================================================================================================================================+==========+==============================+ + | csm.replication | Enables/disables replication sidecar container. | No | false | + +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+ + | csm.authorization | Enables/disables |CSM| authorization and sidecar container. | No | false | + +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+ + | app.starlingx.io/component | Core affinity. | No | platform | + +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+ + | replication.replicationPrefix | Change replication prefix. | No | replication.storage.dell.com | + +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+ + | controller.snapshot.deletionPolicy | Specifies what happens when VolumeSnapshot is deleted. | No | Delete | + +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+ + | defaultFsType | Default value for Filesystem type for mounted volumes. | No | ext4 | + +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+ + | certSecret | Secret containing the certificate. | No | Not Applicable | + +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+ + | global.storageArrays | This refers to the list of arrays managed by the driver and Reverse Proxy in StandAlone mode. | Yes | Not Applicable | + +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+ + | global.storageArrays[0].storageArrayId | This refers to PowerMax Symmetrix ID. | Yes | Not Applicable | + +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+ + | global.storageArrays[0].endpoint | This refers to the URL of the Unisphere server managing storageArrayId. | Yes | Not Applicable | + +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+ + | global.storageArrays[0].backupEndpoint | This refers to the URL of the backup Unisphere server managing storageArrayId, if Reverse Proxy is installed in StandAlone mode. | Yes | Not Applicable | + +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+ + +************************* +StorageClasses Parameters +************************* + +.. table:: + :widths: auto + + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | Parameter | Description | Required | Default | + +======================================================+=================================================================================================+==========+==========================+ + | storageClasses[0].name | StorageClass name. | Yes | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].ServiceLevel | Name of service level on PowerMax array that should be used for provisioning. | No | Optimized | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].SRP | Serial ID of the array that is used for provisioning. | Yes | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].SYMID | Name of service level on PowerMax array that should be used for provisioning. | No | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].ApplicationPrefix | Name of application to be used to group volumes. | No | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].HostLimitName | HostLimitName uniquely identifies given set of limits on a storage class (max of 3 letters). | No | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].HostIOLimitMBSec | The MBs per Second Host IO limit for the storage class. | No | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].HostIOLimitIOSec | The IOs per Second Host IO limit for the storage class. | No | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].DynamicDistribution | Distribution of the Host IO limits for the storage class. | No | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].nasServer | |NAS| server's name. Important: required for |NFS| protocol. | No | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].provisioner | Driver name. | No | csi-powermax.dellemc.com | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].fstype | Filesystem type for mounted volumes. | No | $.Values.defaultFsType | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].reclaimPolicy | PVs that are dynamically created by a StorageClass will have the reclaim policy specified here. | No | Delete | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].allowVolumeExpansion | Allows the users to resize the volume by editing the corresponding |PVC| object. | No | true | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].volumeBindingMode | Controls when volume binding and dynamic provisioning should occur. | No | Immediate | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].allowRoot | Enables or disables root squashing (valid only for |NFS|). | No | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].mountOptions | Specifies additional mount options when a persistent volume is being mounted on a node. | No | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].allowedTopologies | This feature lets you specify sub-divisions of a cluster for a volume to be placed in. | Yes | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].replication | Used to configure replication sidecar container. | No | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].replication.remoteStorageClassName | Storage class name on remote cluster to create remote PV. | No | csi-powermax-replication | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].replication.remoteClusterID | ClusterID to which resources will get replicated. | No | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].replication.RemoteSRP | Name of |SRP| on the remote array that should be used for provisioning. | No | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].replication.RemoteSYMID | Serial ID of the remote array that is used for replication. | No | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].replication.RemoteServiceLevel | Service Level on remote PowerMax array. | No | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].replication.RdfMode | SRDF mode of the replication. | No | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].replication.RdfGroup | Local |SRDF| group which protects using mode mentioned above. | No | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].replication.Bias | Configure Bias for Metro mode. | No | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + | storageClasses[0].replication.RemoteRDFGroup | Remote |SRDF| Group which is bound with Local |SRDF| group. | No | Not Applicable | + +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+ + +***************** +Secret Parameters +***************** + +.. table:: + :widths: auto + + +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | Parameter | Description | Required | Default | + +======================================================================+============================================================================================================+==========+===============================+ + | global.defaultSecret | Used to configure default credential secrets values. | Yes | Not Applicable | + +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | global.defaultSecret.username | Username for connecting to REST API server. | Yes | Not Applicable | + +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | global.defaultSecret.password | Password for connecting to REST API server. | Yes | Not Applicable | + +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | global.defaultSecret.chapsecret | Secret that contains chap to authentication. | No | Not Applicable | + +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | global.defaultSecret.managementServers | A list of values to configure all credential secrets used. | Yes | [] | + +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | global.defaultSecret.managementServers[0].credentialsSecret | Secret name. | No | $.Release.Name -creds- $index | + +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | global.defaultSecret.managementServers[0].username | Username for connecting to REST API server. | Yes | Not Applicable | + +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | global.defaultSecret.managementServers[0].password | Password for connecting to REST API server. | Yes | Not Applicable | + +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | global.defaultSecret.managementServers[0].chapsecret | Secret that contains chap to authentication. | No | Not Applicable | + +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | global.defaultSecret.managementServers[0].endpoint | Endpoint to REST API server. | Yes | Not Applicable | + +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | global.defaultSecret.managementServers[0].skipCertificateValidation | Indicates if client side validation of server's certificate can be skipped. | Yes | Not Applicable | + +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | global.defaultSecret.managementServers[0].certSecret | Secret containing the certificate. | No | Not Applicable | + +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | global.defaultSecret.managementServers[0].limits | This refers to various limits for Reverse Proxy. | No | Not Applicable | + +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | global.defaultSecret.managementServers[0].limits.maxActiveRead | This refers to the maximum concurrent READ request handled by the reverse proxy. | No | 5 | + +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | global.defaultSecret.managementServers[0].limits.maxActiveWrite | This refers to the maximum concurrent WRITE request handled by the reverse proxy. | No | 4 | + +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | global.defaultSecret.managementServers[0].limits.maxOutStandingRead | This refers to maximum queued READ request when reverse proxy receives more than maxActiveRead requests. | No | 50 | + +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | global.defaultSecret.managementServers[0].limits.maxOutStandingWrite | This refers to maximum queued WRITE request when reverse proxy receives more than maxActiveWrite requests. | No | 50 | + +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + + +************************ +Authorization Parameters +************************ + +.. table:: + :widths: auto + + +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+ + | Parameter | Description | Required | Default | + +===========================================+=====================================================================================+==========+========================+ + | authorization.configs | List of authorization configurations. | No | Not Applicable | + +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+ + | authorization.configs[0].username | Username for connecting to the backend storage array. This parameter is ignored. | No | Not Applicable | + +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+ + | authorization.configs[0].password | Password for connecting to the backend storage array. This parameter is ignored. | No | Not Applicable | + +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+ + | authorization.configs[0].intendedEndpoint | HTTPS REST API endpoint of the backend storage array. | No | Not Applicable | + +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+ + | authorization.configs[0].endpoint | HTTPS localhost endpoint that the authorization sidecar will listen on. | No | https://localhost:9400 | + +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+ + | authorization.configs[0].SystemID | System ID of the backend storage array. | No | " " | + +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+ + | authorization.configs[0].isDefault | If the configuration is default or not. | No | false | + +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+ + | skipCertificateValidation | If certificate is used or not. | No | true | + +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+ + | proxyAuthzTokens | |JWT| information | No | Not Applicable | + +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+ + | proxyAuthzTokens.access | Access token for authorization sidecar container access. | No | Not Applicable | + +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+ + | proxyAuthzTokens.refresh | Refresh token for authorization sidecar container access. | No | Not Applicable | + +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+ + diff --git a/doc/source/storage/kubernetes/configure-powerscale-csi-backend-aa6a128c0b44.rst b/doc/source/storage/kubernetes/configure-powerscale-csi-backend-aa6a128c0b44.rst new file mode 100644 index 000000000..f70417dd8 --- /dev/null +++ b/doc/source/storage/kubernetes/configure-powerscale-csi-backend-aa6a128c0b44.rst @@ -0,0 +1,263 @@ +.. WARNING: Add no lines of text between the label immediately following +.. and the title. + +.. _configure-powerscale-csi-backend-aa6a128c0b44: + +================================ +Configure PowerScale CSI Backend +================================ + +|CSI| driver for PowerScale is part of the |CSM| open-source suite of +Kubernetes storage enablers for Dell Technology (Dell) products. It is a |CSI| +driver that provides support for provisioning persistent storage using Dell +PowerScale storage array. + +.. note:: + + Isilon is the legacy name for PowerScale. + +.. note:: + + By default, the csi-powerscale chart is disabled. It is necessary to enable + and update user-overrides before applying dell-storage application. + +.. contents:: + :local: + :depth: 2 + +--------------------------- +Enable CSI PowerScale Chart +--------------------------- + +.. note:: + + Disable any other |CSI|/|CSM| if not used/configured, otherwise it could cause the + application to fail on apply. + + .. code-block:: + + (keystone_admin)$ system helm-chart-attribute-modify --enabled false dell-storage dell-storage + +#. Enable the chart. + + .. code-block:: + + (keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csi-powerscale dell-storage + +#. Create overrides to configure the storage connection. + + .. code-block:: none + + :name: powerscaleOverrides.yaml + + isiPath: "/my/isi/path" + + controller: + replication: + replicationPrefix: "myCustomReplicationPrefix" + + secret: + arrays: + - clusterName: Cluster1 + username: + password: + endpoint: https:// + endpointPort: 8888 + isDefault: true + skipCertificateValidation: false + isiPath: "/my/isi/path" + isiVolumePathPermissions: "0755" + ignoreUnresolvableHosts: true + replicationCertificateID: "dd9c736cc17e6dd5f7d85fe13528cfc20f3b4b0af4f26595d22328c8d1f461af" + authorizationEndpoint: "https://localhost:9999" + + - clusterName: "Cluster2" + username: + password: + endpoint: https:// + isiPath: "/my/isi/path2" + + storageClasses: + - name: "storageClassDefault" + + proxyAuthzTokens: + access: "YWJjZGVmCg==" + refresh: "YWJjZGVmCg==" + +#. Apply override. + + .. code-block:: + + (keystone_admin)$ system helm-override-update dell-storage csi-powerscale dell-storage --values=powerscaleOverrides.yaml + +#. Apply chart. + + .. code-block:: + + (keystone_admin)$ system application-apply dell-storage + +------------------------ +UserOverrides Parameters +------------------------ + +****************** +General Parameters +****************** + +.. table:: + :widths: auto + + +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+ + | Parameter | Description | Required | Default | + +==========================================+====================================================================+==================================+==============================+ + | app.starlingx.io/component | Code affinity. | No | platform | + +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+ + | authorization.rootCertificate | Authorization proxy server root certificate. | Only if authorization is enabled | Not Applicable | + +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+ + | certSecret | Secret containing the certificate. | No | Not Applicable | + +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+ + | controller.replication.replicationPrefix | Change replication prefix. | No | replication.storage.dell.com | + +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+ + | controller.snapshot.deletionPolicy | Specifies what happens when VolumeSnapshot is deleted. | No | Delete | + +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+ + | csm.authorization | Enables/disables authorization sidecar container. | No | false | + +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+ + | csm.replication | Enables/disables dell-csi-replicator sidecar container. | No | false | + +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+ + | csm.resiliency | Enables/disables podmon sidecar container. | No | false | + +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+ + | driverName | Driver name. | No | csi-isilon.dellemc.com | + +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+ + | isiPath | The base path for the volumes to be created on PowerScale cluster. | No | /ifs/data/csi | + +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+ + | proxyAuthzTokens.access | Access token for authorization sidecar container access. | Only if authorization is enabled | Not Applicable | + +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+ + | proxyAuthzTokens.refresh | Refresh token for authorization sidecar container access. | Only if authorization is enabled | Not Applicable | + +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+ + +************************* +StorageClasses Parameters +************************* + +.. table:: + :widths: auto + + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | Parameter | Description | Required | Default | + +=======================================================+==========================================================================================================================================================================+==========+===============================+ + | storageClasses | List of storage classes. | no | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].name | StorageClass name. | yes | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].provisioner | Driver name. | no | "csi-isilon.dellemc.com" | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].reclaimPolicy | PVs that are dynamically created by a StorageClass will have the reclaim policy specified here. | no | Delete | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].allowVolumeExpansion | Allows the users to resize the volume by editing the corresponding |PVC| object. | no | true | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].AccessZone | The name of the access zone a volume can be created in. | no | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].IsiPath | The base path for the volumes to be created on PowerScale cluster. | no | Same as General isiPath | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].IsiVolumePathPermissions | The permissions for isi volume directory path. | no | "0777" | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].AzServiceIP | AccessZone groupnet service IP. | no | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].RootClientEnabled | Determines whether the driver should enable root squashing or not. | no | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].ClusterName | Name of PowerScale cluster where PV will be provisioned. | no | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].AdvisoryLimit | Parameter to set advisory limit to quota. | no | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].SoftLimit | Parameter to set soft limit to quota. | no | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].SoftGracePrd | Parameter which must be mentioned along with soft limit. | no | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].fstype | Sets the filesystem type which will be used to format the new volume. | no | "nfs" | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].volumeBindingMode | Controls when volume binding and dynamic provisioning should occur. | no | Immediate | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].allowedTopologies | Helps scheduling pods on worker nodes which match all of the below expressions. | no | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].mountOptions | Specifies additional mount options for when a persistent volume is being mounted on a node. | no | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].replication.isReplicationEnabled | If set to true, will mark this storage class as replication enabled. | no | "true" | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].replication.remoteStorageClassName | Name of the remote storage class. | no | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].replication.remoteClusterID | ID of a remote cluster. | no | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].replication.remoteSystem | Name of the remote system that should match whatever clusterName you called it in csI-powerscale-creds secret. | no | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].replication.rpo | Recovery Point Objective value. | no | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].replication.ignoreNamespaces | If set to true PowerScale driver, it will ignore what namespace volumes are created and put every volume created using this storage class into a single volume group. | no | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].replication.volumeGroupPrefix | String that would be appended to the volume group name to differentiate the Volume Groups. | no | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].replication.remoteAccessZone | Name of the access zone a remote volume can be created in. | no | Same as General isiAccessZone | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].replication.remoteAzServiceIP | AccessZone groupnet service IP. | no | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + | storageClasses[0].replication.remoteRootClientEnabled | Determines whether the driver should enable root squashing or not for the remote volume. | no | Not Applicable | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+ + + +************************** +SnapshotClasses Parameters +************************** + +.. table:: + :widths: auto + + +-----------------------------------+-----------------------------------------------------------------------------------------------+----------+-------------------------+ + | Parameter | Description | Required | Default | + +===================================+===============================================================================================+==========+=========================+ + | snapshotClasses | List of snapshot classes. | no | Not Applicable | + +-----------------------------------+-----------------------------------------------------------------------------------------------+----------+-------------------------+ + | snapshotClasses[0].name | SnapshotClass name. | yes | Not Applicable | + +-----------------------------------+-----------------------------------------------------------------------------------------------+----------+-------------------------+ + | snapshotClasses[0].deletionPolicy | Configure what happens to a VolumeSnapshotContent when the VolumeSnapshot object is deleted. | yes | Delete | + +-----------------------------------+-----------------------------------------------------------------------------------------------+----------+-------------------------+ + | snapshotClasses[0].IsiPath | The base path of the volumes on Isilon cluster for which snapshot is being created. | no | Same as General isiPath | + +-----------------------------------+-----------------------------------------------------------------------------------------------+----------+-------------------------+ + + +****************** +Secrets Parameters +****************** + +.. table:: + :widths: auto + + +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+ + | Parameter | Description | Required | Default | + +============================================+=======================================================================================================+==========+=========================+ + | secret.arrays | List of PowerStore array. | no | Not Applicable | + +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+ + | secret.arrays[0].clusterName | Logical name of PowerScale Cluster. | yes | Not Applicable | + +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+ + | secret.arrays[0].username | Username for connecting to PowerScale OneFS API server. | yes | Not Applicable | + +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+ + | secret.arrays[0].password | Password for connecting to PowerScale OneFS API server. | yes | Not Applicable | + +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+ + | secret.arrays[0].endpoint | HTTPS endpoint of the PowerScale OneFS API server. | yes | Not Applicable | + +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+ + | secret.arrays[0].endpointPort | Specifies the HTTPs port number of the PowerScale OneFS API server. | no | 8080 | + +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+ + | secret.arrays[0].isDefault | Is this a default cluster? | no | false | + +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+ + | secret.arrays[0].skipCertificateValidation | Specifies whether the PowerScale OneFS API server's certificate chain and host name should be verified| no | true | + +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+ + | secret.arrays[0].isiPath | The base path for the volumes to be created on PowerScale cluster. | no | Same as General isiPath | + +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+ + | secret.arrays[0].isiVolumePathPermissions | The permissions for isi volume directory path. | no | "0777" | + +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+ + | secret.arrays[0].ignoreUnresolvableHosts | Ignore unresolvable hosts on the OneFS. | no | false | + +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+ + | secret.arrays[0].replicationCertificateID | Unique ID if the certificate is used to encrypt replication policy. | no | "" | + +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+ + | secret.arrays[0].authorizationEndpoint | HTTPS localhost endpoint that the authorization sidecar will listen on. | no | https://localhost:9400 | + +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+ + + diff --git a/doc/source/storage/kubernetes/configure-powerstore-csi-backend-02af0aa983b0.rst b/doc/source/storage/kubernetes/configure-powerstore-csi-backend-02af0aa983b0.rst new file mode 100644 index 000000000..f29c84e9c --- /dev/null +++ b/doc/source/storage/kubernetes/configure-powerstore-csi-backend-02af0aa983b0.rst @@ -0,0 +1,197 @@ +.. WARNING: Add no lines of text between the label immediately following +.. and the title. + +.. _configure-powerstore-csi-backend-02af0aa983b0: + +================================ +Configure Powerstore CSI Backend +================================ + +|CSI| driver for PowerStore is a part of the |CSM| open-source suite of +Kubernetes storage enablers for Dell products. It is a |CSI| driver that +provides support for provisioning persistent storage using Dell PowerStore +storage array. + +.. contents:: + :local: + :depth: 2 + +--------------------------- +Enable CSI PowerStore Chart +--------------------------- + +.. note:: + + By default, the csi-powerstore chart is enabled. Disable any other + |CSI|/|CSM| if not used/configured, otherwise it could cause the + application to fail on apply. + + .. code-block:: + + (keystone_admin)$ system helm-chart-attribute-modify --enabled false dell-storage dell-storage + +#. Enable the chart. + + .. code-block:: none + + (keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csi-powerstore dell-storage + +#. Create overrides to configure the storage connection. + + **ISCSI Protocol** + + .. code-block:: none + + :name: powerstoreOverrides.yaml + storageClasses: + - name: csi-powerstore-iscsi + arrayID: + fstype: ext4 + + secret: + arrays: + + - globalID: + username: + password: + endpoint: https:///api/rest + isDefault: true + blockProtocol: "ISCSI" + + **NFS Protocol** + + .. code-block:: none + + :name: powerstoreOverrides.yaml + storageClasses: + - name: csi-powerstore-nfs + arrayID: + fstype: ext4 + nasName: NAS1 + + secret: + arrays: + + - globalID: + username: + password: + endpoint: https:///api/rest + isDefault: true + blockProtocol: None + nasName: NAS1 + +#. Apply overrides. + + .. code-block:: none + + (keystone_admin)$ system helm-override-update dell-storage csi-powerstore dell-storage --values=powerstoreOverrides.yaml + +#. Apply the chart. + + .. code-block:: none + + (keystone_admin)$ system application-apply dell-storage + +------------------------ +UserOverrides Parameters +------------------------ + +****************** +General Parameters +****************** + +.. table:: + :widths: auto + + +------------------------------------------+-------------------------------------------------------+----------+------------------------------+ + | Parameter | Description | Required | Default | + +==========================================+=======================================================+==========+==============================+ + | csm.replication | Enables/disables replication sidecar container. | No | false | + +------------------------------------------+-------------------------------------------------------+----------+------------------------------+ + | csm.resiliency | Enables/disables podmon sidecar container. | No | false | + +------------------------------------------+-------------------------------------------------------+----------+------------------------------+ + | app.starlingx.io/component | Core Affinity. | No | platform | + +------------------------------------------+-------------------------------------------------------+----------+------------------------------+ + | controller.replication.replicationPrefix | Change replication prefix. | No | replication.storage.dell.com | + +------------------------------------------+-------------------------------------------------------+----------+------------------------------+ + | controller.snapshot.deletionPolicy | Specifies what happens when VolumeSnapshot is deleted.| No | Delete | + +------------------------------------------+-------------------------------------------------------+----------+------------------------------+ + +************************* +StorageClasses Parameters +************************* + +.. table:: + :widths: auto + + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + | Parameter | Description | Required | Default | + +======================================================+===========================================================================================================+==========+============================+ + | storageClasses[0].name | StorageClass name. | Yes | "csi-powerstore-" + fstype | + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + | storageClasses[0].arrayID | ID of array to be used for volumes. arrayID corresponding to array's globalID specified in secrets. | Yes | Not Applicable | + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + | storageClasses[0].nasName | |NAS| server's name. Important: required for |NFS| protocol. | No | Not Applicable | + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + | storageClasses[0].provisioner | Driver name. | No | csi-powerstore.dellemc.com | + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + | storageClasses[0].fstype | Filesystem type for mounted volumes. | No | nfs | + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + | storageClasses[0].reclaimPolicy | PVs that are dynamically created by a StorageClass will have the reclaim policy specified here. | No | Delete | + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + | storageClasses[0].allowVolumeExpansion | Allows the users to resize the volume by editing the corresponding |PVC| object. | No | false | + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + | storageClasses[0].volumeBindingMode | Controls when volume binding and dynamic provisioning should occur. | No | Immediate | + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + | storageClasses[0].allowRoot | Enables or disables root squashing (valid only for |NFS|). | No | false | + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + | storageClasses[0].nfsAcls | Enables setting permissions on |NFS| mount directory. | No | 0777 | + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + | storageClasses[0].allowedTopologies | This feature lets you specify sub-divisions of a cluster for a volume to be placed in. | Yes | Not Applicable | + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + | storageClasses[0].replication | Used to configure replication sidecar container. | No | Not Applicable | + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + | storageClasses[0].replication.remoteStorageClassName | Remote StorageClass name. | No | csi-powerstore-replication | + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + | storageClasses[0].replication.remoteClusterID | Remote ClusterID. | No | Not Applicable | + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + | storageClasses[0].replication.remoteSystem | Remote PowerStore system. | No | Not Applicable | + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + | storageClasses[0].replication.rpo | Change to any other |RPOs| supported by PowerStore. | No | Five_Minutes | + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + | storageClasses[0].replication.ignoreNamespaces | Set to true if you want to ignore namespaces and if false creates separate volume group per namespace. | No | false | + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + | storageClasses[0].replication.volumeGroupPrefix | Volume group prefix. | No | csi-powerstore | + +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+ + +***************** +Secret Parameters +***************** + +.. table:: + :widths: auto + + +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+ + | Parameter | Description | Required | Default | + +============================================+===================================================================================================+==========+================+ + | secret.arrays | List of PowerStore array. | Yes | Not Applicable | + +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].globalID | Unique ID of the PowerStore array. globalID corresponding to arrayID specified in storageClasses. | Yes | Not Applicable | + +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].username | Username for connecting to REST API server. | Yes | Not Applicable | + +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].password | Password for connecting to REST API server. | Yes | Not Applicable | + +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].endpoint | HTTPS endpoint of the REST API server. | Yes | Not Applicable | + +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].isDefault | Treat current array as a default. Important: requires one array as default. | No | false | + +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].skipCertificateValidation | Indicates if client side validation of server's certificate can be skipped. | No | true | + +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].blockProtocol | What SCSI transport protocol used on node side (FC, ISCSI, NVMeTCP, NVMeFC, None, or auto). | No | auto | + +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].nasName | What |NAS| should be used for |NFS| volumes. Required for |NFS| protocol. | No | Not Applicable | + +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].nfsAcls | Enables setting permissions on |NFS| mount directory. | No | 0777 | + +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+ + diff --git a/doc/source/storage/kubernetes/configure-unity-xt-csi-backend-c1abbbd371dc.rst b/doc/source/storage/kubernetes/configure-unity-xt-csi-backend-c1abbbd371dc.rst new file mode 100644 index 000000000..9891efa94 --- /dev/null +++ b/doc/source/storage/kubernetes/configure-unity-xt-csi-backend-c1abbbd371dc.rst @@ -0,0 +1,182 @@ +.. WARNING: Add no lines of text between the label immediately following +.. and the title. + +.. _configure-unity-xt-csi-backend-c1abbbd371dc: + +============================== +Configure Unity XT CSI Backend +============================== + +|CSI| driver for Unity XT is a part of the |CSM| open-source suite of +Kubernetes storage enablers for Dell products. It is a CSI driver that provides +support for provisioning persistent storage using Dell Unity XT storage array. + +.. note:: + + By default, the csi-unity chart is disabled. It is necessary to enable the + chart and update user-overrides before applying the dell-storage application. + +.. contents:: + :local: + :depth: 2 + +---------------------- +Enable CSI Unity Chart +---------------------- + +.. note:: + + Disable any other |CSI|/|CSM| if not used/configured, otherwise it could + cause the application to fail on apply. + + .. code-block:: + + (keystone_admin)$ system helm-chart-attribute-modify --enabled false dell-storage dell-storage + +#. Enable the chart. + + .. code-block:: none + + (keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csi-unity dell-storage + +#. Create overrides to configure the storage connection. + + .. code-block:: none + + :name: unityOverrides.yaml + + csm: + resiliency: false + app.starlingx.io/component: platform + + storageClasses: + - name: unity-virt2307pjxdbt-nfs + arrayId: + nasServer: nas_2 + provisioner: csi-unity.dellemc.com + fstype: nfs + reclaimPolicy: Delete + allowVolumeExpansion: true + volumeBindingMode: Immediate + mountOptions: ["hard"] + hostIoSize: 8192 + tieringPolicy: 0 + isDataReductionEnabled: "false" + thinProvisioned: "true" + storagePool: pool_2 + protocol: NFS + allowedTopologies: + - matchLabelExpressions: + - key: "csi-unity.dellemc.com/virt2307pjxdbt-nfs" + values: + - "true" + + secret: + arrays: + - arrayId: + username: + password: + endpoint: https:// + isDefault: true + skipCertificateValidation: true + +#. Apply overrides. + + .. code-block:: none + + (keystone_admin)$ system helm-override-update dell-storage csi-unity dell-storage --values=unityOverrides.yaml + +#. Apply the chart. + + .. code-block:: none + + (keystone_admin)$ system application-apply dell-storage + +------------------------ +UserOverrides Parameters +------------------------ + +****************** +General Parameters +****************** + +.. table:: + :widths: auto + + +----------------------------+--------------------------------------------+----------+----------+ + | Parameter | Description | Required | Default | + +============================+============================================+==========+==========+ + | csm.resiliency | Enables/disables podmon sidecar container. | No | false | + +----------------------------+--------------------------------------------+----------+----------+ + | app.starlingx.io/component | Core Affinity. | No | platform | + +----------------------------+--------------------------------------------+----------+----------+ + + +************************* +StorageClasses Parameters +************************* + +.. table:: + :widths: auto + + +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+ + | Parameter | Description | Required | Default | + +==========================================+==================================================================================================================+==========+=====================================+ + | storageClasses[0].hostIoSize | Inserts Host IO size that is to be set for the filesystem. | No | 8192 | + +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+ + | storageClasses[0].name | StorageClass name. | No | "unity-" + arrayId + "-" + protocol | + +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+ + | storageClasses[0].mountOptions | Defines mount input values. | No | [] | + +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+ + | storageClasses[0].provisioner | Driver name. | No | csi-unity.dellemc.com | + +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+ + | storageClasses[0].reclaimPolicy | PVs that are dynamically created by a StorageClass will have the reclaim policy specified here. | No | Delete | + +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+ + | storageClasses[0].volumeBindingMode | Controls when volume binding and dynamic provisioning should occur. | No | Immediate | + +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+ + | storageClasses[0].fstype | Filesystem type for mounted volumes. | No | nfs | + +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+ + | storageClasses[0].protocol | Defines FC or FIBRE for FibreChannel, ISCSI, |NFS|, or "" for auto selection. | No | |NFS| | + +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+ + | storageClasses[0].allowVolumeExpansion | Allows the users to resize the volume by editing the corresponding |PVC| object. | No | true | + +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+ + | storageClasses[0].isDataReductionEnabled | Defines Boolean to choose value of is DataReductionEnabled while creating a new volume. Type: string. | No | true | + +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+ + | storageClasses[0].thinProvisioned | Defines Boolean to choose value of thinProvisioned while creating a new volume. Type: string. | No | true | + +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+ + | storageClasses[0].arrayId | ID of array to be used for volumes. arrayID corresponding to array's globalID specified in secrets. | Yes | Not Applicable | + +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+ + | storageClasses[0].nasServer | |NAS| server's name. Important: required for |NFS| protocol. | No | Not Applicable | + +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+ + | storageClasses[0].hostIOLimitName | Insert Host IO Limit Name that is to be used for provisioning here. | No | Not Applicable | + +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+ + | storageClasses[0].tieringPolicy | Tiering policy to be used during provisioning. Requires FAST VP license. | No | Not Applicable | + +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+ + | storageClasses[0].storagePool | Defines storage pool. Value should be picked from the column labeled "CLI ID" of pools in the Unisphere GUI. | Yes | Not Applicable | + +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+ + | storageClasses[0].allowedTopologies | This feature lets you specify sub-divisions of a cluster for a volume to be placed in. | No | Not Applicable | + +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+ + +***************** +Secret Parameters +***************** + +.. table:: + + +--------------------------------------------+----------------------------------------------------------------------------------------+----------+----------------+ + | Parameter | Description | Required | Default | + +============================================+========================================================================================+==========+================+ + | secret.arrays | List of Unity XT. | Yes | Not Applicable | + +--------------------------------------------+----------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].arrayId | Array ID of Unity XT. | Yes | Not Applicable | + +--------------------------------------------+----------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].username | Username for connecting to Unity XT Unisphere REST API server. | Yes | Not Applicable | + +--------------------------------------------+----------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].password | Password for connecting to Unity XT Unisphere REST API server. | Yes | Not Applicable | + +--------------------------------------------+----------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].endpoint | HTTPS endpoint of the Unity XT Unisphere REST API server. | Yes | Not Applicable | + +--------------------------------------------+----------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].isDefault | Treats current array as a default. Use at least one of the arrays as default. | No | false | + +--------------------------------------------+----------------------------------------------------------------------------------------+----------+----------------+ + | secret.arrays[0].skipCertificateValidation | Indicates if client side validation of server's certificate can be skipped. | No | true | + +--------------------------------------------+----------------------------------------------------------------------------------------+----------+----------------+ diff --git a/doc/source/storage/kubernetes/dell-storage-backend-28f5771e6d9b.rst b/doc/source/storage/kubernetes/dell-storage-backend-28f5771e6d9b.rst new file mode 100644 index 000000000..092bfc791 --- /dev/null +++ b/doc/source/storage/kubernetes/dell-storage-backend-28f5771e6d9b.rst @@ -0,0 +1,97 @@ +.. WARNING: Add no lines of text between the label immediately following +.. and the title. + +.. _dell-storage-backend-28f5771e6d9b: + +==================== +Dell Storage Backend +==================== + +The |CSI| drivers by Dell implement an interface between |CSI| (|CSI| spec +v1.6) enabled |CO| and Dell Storage Arrays. It is a plug-in that is installed +in Kubernetes to provide persistent storage using the Dell storage system. + +For details about Dell |CSIs|, see ``__. + +The Dell Technologies (Dell) |CSM| enables simple and consistent integration, +and automation experiences, extending enterprise storage capabilities to +Kubernetes for cloud-native stateful applications. + +For details about Dell |CSMs|, see ``__. + +: rubric:: |prereq| + +- Check if your Dell storage platform is supported. To check, see ``__. +- If using any |CSM|, check if it is supported for your platform. To check, see ``__. +- Controller is unlocked. +- The Dell-storage application is on the uploaded state. +- All commands are executed on the active controller. + +.. note:: + + For every change on user-overrides to be updated on the application, you + need to reapply the override before applying the Dell-storage application. + +.. note:: + + csi-powerstore is enabled by default. Disable any other |CSI|/|CSM| if + not used, otherwise it could cause the application to fail on apply. + + .. code-block:: none + + (keystone_admin)$ system helm-chart-attribute-modify --enabled false dell-storage dell-storage + +--------------- +Common Commands +--------------- + +- Get list of enabled/disabled Dell-storage application charts. + + .. code-block:: none + + (keystone_admin)$ system helm-override-list dell-storage --long + +- Check |CSM|/|CSI| overrides. + + .. code-block:: none + + (keystone_admin)$ system helm-override-show dell-storage dell-storage + +- Enable/disable the chart. + + .. code-block:: none + + (keystone_admin)$ system helm-chart-attribute-modify --enabled dell-storage dell-storage + +- Apply overrides. + + .. code-block:: none + + (keystone_admin)$ system helm-override-update dell-storage dell-storage --values= + +- Get the Dell-storage pods list. + + .. code-block:: none + + (keystone_admin)$ kubectl get pods -n dell-storage + +- Apply/abort/remove the Dell-storage application. + + .. code-block:: none + + (keystone_admin)$ system application- dell-storage + +-------------- +Related Topics +-------------- + +- :ref:`configure-powermax-csi-backend-7b6e65e3a811` +- :ref:`configure-powerflex-csi-backend-20a371e4f7d3` +- :ref:`configure-powerscale-csi-backend-aa6a128c0b44` +- :ref:`configure-powerstore-csi-backend-02af0aa983b0` +- :ref:`configure-dell-storage-csms-937563b7bb36` +- :ref:`configure-unity-xt-csi-backend-c1abbbd371dc` +- :ref:`dell-storage-snapshots-46916ac34bf0` +- :ref:`dell-storage-backend-28f5771e6d9b` + + diff --git a/doc/source/storage/kubernetes/dell-storage-snapshots-46916ac34bf0.rst b/doc/source/storage/kubernetes/dell-storage-snapshots-46916ac34bf0.rst new file mode 100644 index 000000000..1e0e4396c --- /dev/null +++ b/doc/source/storage/kubernetes/dell-storage-snapshots-46916ac34bf0.rst @@ -0,0 +1,94 @@ +.. WARNING: Add no lines of text between the label immediately following +.. and the title. + +.. _dell-storage-snapshots-46916ac34bf0: + +================ +Create Snapshots +================ + +.. rubric:: |context| + +A Volume Snapshot Class enables the creation of snapshots for |PVCs|, allowing +efficient backups and data restoration. This functionality ensures data +protection, facilitating point-in-time recovery, and minimizing the risk of data +loss in Kubernetes clusters. + +The procedure below demonstrates how to create a Volume Snapshot Class and +Volume Snapshot for the Dell |CSI| provisioner. + +.. note:: + + It is necessary to have the |CSI| controller running to be able to create + and mount the |PVC|. + +.. note:: + + The Dell-storage |CSIs| charts already create default snapshotclasses. You + can list them by using the following command: + + .. code-block:: none + + ~(keystone_admin)$ kubectl get volumesnapshotclasses.snapshot.storage.k8s.io + +.. rubric:: |proc| + +|CSI|-Powerstore is used in this example. + +#. Check if the Dell-storage application is successfully applied. + + .. code-block:: none + + ~(keystone_admin)$ system application-list + +--------------------------+-----------+-------------------------------------------+------------------+--------------+-----------+ + | application | version | manifest name | manifest file | status | progress | + +--------------------------+-----------+-------------------------------------------+------------------+--------------+-----------+ + | dell-storage | 24.03-36 | dell-storage-fluxcd-manifests | fluxcd-manifests | applied | completed | + +--------------------------+-----------+-------------------------------------------+------------------+--------------+-----------+ + +#. Check if the |PVC| is created and bound. + + .. code-block:: none + + ~(keystone_admin)$ kubectl get -n dell-storage pvc + NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE + pvol0 Bound csi-powerstore-vol-0fca78f7dd 8Gi RWO csi-powerstore-nfs 5m + +#. Check the available snapshot classes. + + .. code-block:: none + + ~(keystone_admin)$ kubectl get volumesnapshotclasses.snapshot.storage.k8s.io + NAME DRIVER DELETIONPOLICY AGE + csi-powerstore-snapshot csi-powerstore.dellemc.com Delete 5m + +#. Create the |PVC| snapshot file and apply it. + + .. code-block:: none + + ~(keystone_admin)$ cat << EOF > ~/powerstore-volume-snapshot.yaml + apiVersion: snapshot.storage.k8s.io/v1 + kind: VolumeSnapshot + metadata: + name: csi-powerstore-pvc-snapshot + namespace: dell-storage + spec: + volumeSnapshotClassName: csi-powerstore-snapshot + source: + persistentVolumeClaimName: pvol0 + EOF + + ~(keystone_admin)$ kubectl apply -f ~/powerstore-volume-snapshot.yaml + volumesnapshot.snapshot.storage.k8s.io/csi-powerstore-pvc-snapshot created + +#. Confirm that the |PVC| snapshot file was created successfully. + + .. code-block:: none + + ~(keystone_admin)$ kubectl get volumesnapshots.snapshot.storage.k8s.io + NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE + csi-powerstore-pvc-snapshot true pvol0 8Gi csi-powerstore-snapshot snapcontent-dcfdbb32- 13s 21s + c936-469e-aa01-abe59f574fd1 + + + diff --git a/doc/source/storage/kubernetes/index-storage-kub-e797132c87a8.rst b/doc/source/storage/kubernetes/index-storage-kub-e797132c87a8.rst index 968828329..ceada59bb 100644 --- a/doc/source/storage/kubernetes/index-storage-kub-e797132c87a8.rst +++ b/doc/source/storage/kubernetes/index-storage-kub-e797132c87a8.rst @@ -168,6 +168,22 @@ Ceph File System Provisioner enable-readwritemany-pvc-support-in-additional-namespaces create-cephfs-volume-snapshot-class-92f4ad13d166 +************************************ +Dell Storage File System Provisioner +************************************ + +.. toctree:: + :maxdepth: 1 + + dell-storage-backend-28f5771e6d9b + configure-powerstore-csi-backend-02af0aa983b0 + configure-powerflex-csi-backend-20a371e4f7d3 + configure-powermax-csi-backend-7b6e65e3a811 + configure-powerscale-csi-backend-aa6a128c0b44 + configure-unity-xt-csi-backend-c1abbbd371dc + configure-dell-storage-csms-937563b7bb36 + dell-storage-snapshots-46916ac34bf0 + ---------------------------- Storage-Related CLI Commands ----------------------------