Skip to content

Commit

Permalink
Merge branch 'release-1.8.0' into Powermax_operator_support_wizard
Browse files Browse the repository at this point in the history
  • Loading branch information
boyamurthy authored Aug 21, 2023
2 parents 6b0b218 + d280aec commit 5b6b019
Show file tree
Hide file tree
Showing 40 changed files with 1,242 additions and 131 deletions.
14 changes: 7 additions & 7 deletions content/docs/csidriver/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ description: About Dell Technologies (Dell) CSI Drivers
weight: 3
---

The CSI Drivers by Dell implement an interface between [CSI](https://kubernetes-csi.github.io/docs/) (CSI spec v1.5) enabled Container Orchestrator (CO) and Dell Storage Arrays. It is a plug-in that is installed into Kubernetes to provide persistent storage using Dell storage system.
The CSI Drivers by Dell implement an interface between [CSI](https://kubernetes-csi.github.io/docs/) (CSI spec v1.5) enabled Container Orchestrator (CO) and Dell Storage Arrays. It is a plug-in that is installed into Kubernetes to provide persistent storage using the Dell storage system.

![CSI Architecture](Architecture_Diagram.png)

Expand All @@ -16,14 +16,14 @@ The CSI Drivers by Dell implement an interface between [CSI](https://kubernetes-
{{<table "table table-striped table-bordered table-sm">}}
| | PowerMax | PowerFlex | Unity XT | PowerScale | PowerStore |
|---------------|:----------------:|:-------------------:|:----------------:|:-----------------:|:----------------:|
| Kubernetes | 1.25, 1.26, 1.27 | 1.25, 1.26, 1.27 | 1.25, 1.26, 1.27 | 1.25, 1.26, 1.27 | 1.25, 1.26, 1.27 |
| RHEL | 7.x,8.x,9.0 | 7.x,8.x | 7.x,8.x | 7.x,8.x | 7.x,8.x |
| Kubernetes | 1.26, 1.27, 1.28 | 1.25, 1.26, 1.27 | 1.25, 1.26, 1.27 | 1.25, 1.26, 1.27 | 1.25, 1.26, 1.27 |
| RHEL | 7.x,8.x | 7.x,8.x | 7.x,8.x | 7.x,8.x | 7.x,8.x |
| Ubuntu | 20.04 | 20.04 | 18.04, 20.04 | 20.04, 22.04 | 20.04 |
| CentOS | 7.8, 7.9 | 7.8, 7.9 | 7.9 | 7.8, 7.9 | 7.8, 7.9 |
| SLES | 15SP4 | 15SP4 | 15SP4 | 15SP3 | 15SP4 |
| Red Hat OpenShift | 4.12, 4.12 EUS, 4.13 | 4.11, 4.12, 4.12 EUS | 4.11, 4.12, 4.12 EUS | 4.11, 4.12, 4.12 EUS | 4.11, 4.12, 4.12 EUS |
| Red Hat OpenShift | 4.12, 4.12 EUS, 4.13 | 4.12, 4.12 EUS, 4.13 | 4.11, 4.12, 4.12 EUS | 4.11, 4.12, 4.12 EUS | 4.12, 4.13, 4.13 EUS |
| Mirantis Kubernetes Engine | 3.6.x | 3.5.x,3.6.x | 3.6.x | 3.5.x, 3.6.x | 3.6.x |
| Google Anthos | 1.14 | 1.12 | no | 1.15 | 1.15 |
| Google Anthos | 1.15 | 1.12 | no | 1.15 | 1.15 |
| VMware Tanzu | no | no | NFS | NFS | NFS,iSCSI |
| Rancher Kubernetes Engine | 1.4.1 | 1.4.1 | 1.4.5 | 1.4.1 | 1.4.5 |
| Amazon Elastic Kubernetes Service<br> Anywhere | yes | yes | yes | yes | yes |
Expand All @@ -48,13 +48,13 @@ The CSI Drivers by Dell implement an interface between [CSI](https://kubernetes-
| Topology | yes | yes | yes | yes | yes |
| Multi-array | yes | yes | yes | yes | yes |
| Volume Health Monitoring | yes | yes | yes | yes | yes |
| Storage Capacity Tracking | yes | no | no | yes | yes |
| Storage Capacity Tracking | yes | no | yes | yes | yes |
{{</table>}}
### Supported Storage Platforms
{{<table "table table-striped table-bordered table-sm">}}
| | PowerMax | PowerFlex | Unity XT | PowerScale | PowerStore |
|---------------|:-------------------------------------------------------:|:----------------:|:--------------------------:|:----------------------------------:|:----------------:|
| Storage Array | PowerMax 2500/8500 PowerMaxOS 10 (6079) , PowerMaxOS 10.0.1 (6079) <br> PowerMax 2000/8000 - 5978.711.xxx, 5978.479.xxx <br>Unisphere 10.0,10.0.1 | 3.5.x, 3.6.x, 4.0 | 5.1.x, 5.2.x, 5.3.0 | OneFS 8.1, 8.2, 9.0, 9.1, 9.2, 9.3, 9.4 | 2.0.x, 2.1.x, 3.0, 3.2, 3.5 |
| Storage Array | PowerMax 2500/8500 PowerMaxOS 10 (6079) , PowerMaxOS 10.0.1 (6079) <br> PowerMax 2000/8000 - 5978.711.xxx, 5978.479.xxx <br>Unisphere 10.0,10.0.1 | 3.5.x, 3.6.x, 4.0 | 5.1.x, 5.2.x, 5.3.0 | OneFS 8.1, 8.2, 9.0, 9.1, 9.2, 9.3, 9.4, 9.5.0.4 | 2.0.x, 2.1.x, 3.0, 3.2, 3.5 |
{{</table>}}
### Backend Storage Details
{{<table "table table-striped table-bordered table-sm">}}
Expand Down
11 changes: 11 additions & 0 deletions content/docs/csidriver/features/powerflex.md
Original file line number Diff line number Diff line change
Expand Up @@ -750,3 +750,14 @@ node:
> NOTE: Currently, the CSI-PowerFlex driver only supports GUID for the restricted SDC mode.

If SDC approval is denied, then provisioning of the volume will not be attempted and an appropriate error message is reported in the logs/events so the user is informed.

## Volume Limit

The CSI Driver for Dell PowerFlex allows users to specify the maximum number of PowerFlex volumes that can be used in a node.

The user can set the volume limit for a node by creating a node label `max-vxflexos-volumes-per-node` and specifying the volume limit for that node.
<br/> `kubectl label node <node_name> max-vxflexos-volumes-per-node=<volume_limit>`

The user can also set the volume limit for all the nodes in the cluster by specifying the same to `maxVxflexosVolumesPerNode` attribute in values.yaml file.

>**NOTE:** <br>To reflect the changes after setting the value either via node label or in values.yaml file, user has to bounce the driver controller and node pods using the command `kubectl get pods -n vxflexos --no-headers=true | awk '/vxflexos-/{print $1}'| xargs kubectl delete -n vxflexos pod`. <br><br> If the value is set both by node label and values.yaml file then node label value will get the precedence and user has to remove the node label in order to reflect the values.yaml value. <br><br>The default value of `maxVxflexosVolumesPerNode` is 0. <br><br>If `maxVxflexosVolumesPerNode` is set to zero, then Container Orchestration decides how many volumes of this type can be published by the controller to the node.<br><br>The volume limit specified to `maxVxflexosVolumesPerNode` attribute is applicable to all the nodes in the cluster for which node label `max-vxflexos-volumes-per-node` is not set.
17 changes: 17 additions & 0 deletions content/docs/csidriver/features/powermax.md
Original file line number Diff line number Diff line change
Expand Up @@ -624,3 +624,20 @@ Without storage capacity tracking, pods get scheduled on a node satisfying the t
Storage Capacity can be tracked by setting the attribute `storageCapacity.enabled` to true in values.yaml (set to true by default) during driver installation. To configure how often driver checks for changed capacity, set `storageCapacity.pollInterval` (set to 5m by default) attribute. In case of driver installed via operator, this interval can be configured in the sample file provided [here.](https://github.com/dell/csm-operator/blob/main/samples/storage_csm_powermax_v280.yaml) by editing the `--capacity-poll-interval` argument present in the provisioner sidecar.

>Note: This feature requires kubernetes v1.24 and above and will be automatically disabled in lower version of kubernetes.


## Volume Limits

The CSI Driver for Dell PowerMax allows users to specify the maximum number of PowerMax volumes that can be created on a node.

The user can set the volume limit for a node by creating a node label `max-powermax-volumes-per-node` and specifying the volume limit for that node.
<br/> `kubectl label node <node_name> max-powermax-volumes-per-node=<volume_limit>`

The user can also set the volume limit for all the nodes in the cluster by specifying the same to `maxPowerMaxVolumesPerNode` attribute in values.yaml. In case of driver installed via operator, this attribute can be modified in the sample file provided [here] https://github.com/dell/csm-operator/blob/main/samples/storage_csm_powermax_v280.yaml by editing the `X_CSI_MAX_VOLUMES_PER_NODE` parameter.

This feature is also supported for limiting the volume provisioning on Kubernetes clusters running on vSphere (VMware hypervisor) via RDM mechanism. User can set `vSphere.enabled` to true and also set volume limits to positive values less than or equal 60 via labels or in Values.yaml file.


>**NOTE:** <br>The default value of `maxPowerMaxVolumesPerNode` is 0. <br>If `maxPowerMaxVolumesPerNode` is set to zero, then CO shall decide how many volumes of this type can be published by the controller to the node.<br><br>The volume limit specified to `maxPowerMaxVolumesPerNode` attribute is applicable to all the nodes in the cluster for which node label `max-powermax-volumes-per-node` is not set.
<br>Supported maximum number of RDM Volumes per VM is 60 as per the limitations. <br>If the value is set both by node label and values.yaml file then node label value will get the precedence and user has to remove the node label in order to reflect the values.yaml value.

10 changes: 10 additions & 0 deletions content/docs/csidriver/features/unity.md
Original file line number Diff line number Diff line change
Expand Up @@ -492,6 +492,16 @@ This feature:
```
By default this is disabled in CSI Driver for Unity XT. You will have to set the `healthMonitor.enable` flag for controller, node or for both in `values.yaml` to get the volume stats and volume condition.

## Storage Capacity Tracking
CSI for Unity XT driver version 2.8.0 and above supports Storage Capacity Tracking.

This feature helps the scheduler to make more informed choices about where to schedule pods which depends on unbound volumes with late binding (aka "wait for first consumer"). Pods will be scheduled on a node (satisfying the topology constraints) only if the requested capacity is available on the storage array.
If such a node is not available, the pods stay in Pending state. This means pods are not scheduled.

Without storage capacity tracking, pods get scheduled on a node satisfying the topology constraints. If the required capacity is not available, volume attachment to the pods fails, and pods remain in ContainerCreating state. Storage capacity tracking eliminates unnecessary scheduling of pods when there is insufficient capacity.

The attribute `storageCapacity.enabled` in `values.yaml` can be used to enable/disable the feature during driver installation using helm. This is by default set to true. To configure how often driver checks for changed capacity set `storageCapacity.pollInterval` attribute. In case of driver installed via operator, this interval can be configured in the sample file provided [here.](https://github.com/dell/csm-operator/blob/main/samples/storage_csm_unity_v280.yaml) by editing the `--capacity-poll-interval` argument present in the provisioner sidecar.

## Dynamic Logging Configuration

### Helm based installation
Expand Down
11 changes: 6 additions & 5 deletions content/docs/csidriver/installation/helm/powerflex.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,12 +140,12 @@ Use the below command to replace or update the secret:
6. If using automated SDC deployment:
- Check the SDC container image is the correct version for your version of PowerFlex.

7. Copy the default values.yaml file
7. Download the default values.yaml file
```bash
cd helm && cp csi-vxflexos/values.yaml myvalues.yaml
cd dell-csi-helm-installer && wget -O myvalues.yaml https://github.com/dell/helm-charts/raw/csi-vxflexos-2.7.1/charts/csi-vxflexos/values.yaml
```

8. If you are using a custom image, check the `version` and `driverRepository` fields in `myvalues.yaml` to make sure that they are pointing to the correct image repository and driver version. These two fields are spliced together to form the image name, as shown here: `<driverRepository>/csi-vxflexos:v<version>`
8. If you are using a custom image, check the `version` and `driverRepository` fields in `my-vxflexos-settings.yaml` to make sure that they are pointing to the correct image repository and driver version. These two fields are spliced together to form the image name, as shown here: `<driverRepository>/csi-vxflexos:v<version>`

9. Look over all the other fields `myvalues.yaml` and fill in/adjust any as needed. All the fields are described here:

Expand All @@ -164,6 +164,7 @@ Use the below command to replace or update the secret:
| enablesnapshotcgdelete | A boolean that, when enabled, will delete all snapshots in a consistency group everytime a snap in the group is deleted. | Yes | false |
| enablelistvolumesnapshot | A boolean that, when enabled, will allow list volume operation to include snapshots (since creating a volume from a snap actually results in a new snap). It is recommend this be false unless instructed otherwise. | Yes | false |
| allowRWOMultiPodAccess | Setting allowRWOMultiPodAccess to "true" will allow multiple pods on the same node to access the same RWO volume. This behavior conflicts with the CSI specification version 1.3. NodePublishVolume description that requires an error to be returned in this case. However, some other CSI drivers support this behavior and some customers desire this behavior. Customers use this option at their own risk. | Yes | false |
| maxVxflexosVolumesPerNode | Maximum number of volumes that controller can publish to the node. | No | 0 |
| **controller** | This section allows the configuration of controller-specific parameters. To maximize the number of available nodes for controller pods, see this section. For more details on the new controller pod configurations, see the [Features section](../../../features/powerflex#controller-ha) for Powerflex specifics. | - | - |
| volumeNamePrefix | Set so that volumes created by the driver have a default prefix. If one PowerFlex/VxFlex OS system is servicing several different Kubernetes installations or users, these prefixes help you distinguish them. | Yes | "k8s" |
| controllerCount | Set to deploy multiple controller instances. If the controller count is greater than the number of available nodes, excess pods remain in a pending state. It should be greater than 0. You can increase the number of available nodes by configuring the "controller" section in your values.yaml. For more details on the new controller pod configurations, see the [Features section](../../../features/powerflex#controller-ha) for Powerflex specifics. | Yes | 2 |
Expand Down Expand Up @@ -199,7 +200,7 @@ Use the below command to replace or update the secret:
| skipCertificateValidation | A boolean that enables/disables certificate validation of the csm-authorization proxy server. | No | true |


10. Install the driver using `csi-install.sh` bash script by running `cd dell-csi-helm-installer && ./csi-install.sh --namespace vxflexos --values ../helm/myvalues.yaml`. You may modify the release name with the `--release` arg. If arg is not provided, release will be named `vxflexos` by default.
10. Install the driver using `csi-install.sh` bash script by running `cd dell-csi-helm-installer && ./csi-install.sh --namespace vxflexos --values myvalues.yaml`. You may modify the release name with the `--release` arg. If arg is not provided, release will be named `vxflexos` by default.
Alternatively, to do a helm install solely with Helm charts (without shell scripts), refer to `helm/README.md`.

*NOTE:*
Expand Down Expand Up @@ -294,7 +295,7 @@ There are samples storage class yaml files available under `samples/storageclass
*NOTE*:
- At least one storage class is required for one array.
- If you uninstall the driver and reinstall it, you can still face errors if any update in the `values.yaml` file leads to an update of the storage class(es):
- If you uninstall the driver and reinstall it, you can still face errors if any update in the `myvalues.yaml` file leads to an update of the storage class(es):
```
Error: cannot patch "<sc-name>" with kind StorageClass: StorageClass.storage.k8s.io "<sc-name>" is invalid: parameters: Forbidden: updates to parameters are forbidden
Expand Down
3 changes: 2 additions & 1 deletion content/docs/csidriver/installation/helm/powermax.md
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,7 @@ CRDs should be configured during replication prepare stage with repctl as descri
| version | Current version of the driver. Don't modify this value as this value will be used by the install script. | Yes | v2.3.0 |
| images | Defines the container images used by the driver. | - | - |
| driverRepository | Defines the registry of the container image used for the driver. | Yes | dellemc |
| maxPowerMaxVolumesPerNode | Specifies the maximum number of volume that can be created on a node. | Yes| 0 |
| **controller** | Allows configuration of the controller-specific parameters.| - | - |
| controllerCount | Defines the number of csi-powerscale controller pods to deploy to the Kubernetes release| Yes | 2 |
| volumeNamePrefix | Defines a string prefix for the names of PersistentVolumes created | Yes | "k8s" |
Expand Down Expand Up @@ -325,7 +326,7 @@ CRDs should be configured during replication prepare stage with repctl as descri
- This script also runs the verify.sh script in the same directory. You will be prompted to enter the credentials for each of the Kubernetes nodes. The `verify.sh` script needs the credentials to check if the iSCSI initiators have been configured on all nodes. You can also skip the verification step by specifying the `--skip-verify-node` option
- In order to enable authorization, there should be an authorization proxy server already installed.
- PowerMax Array username must have role as `StorageAdmin` to be able to perform CRUD operations.
- If the user is using complex K8s version like “v1.23.3-mirantis-1”, use this kubeVersion check in [helm Chart](https://github.com/dell/csi-powermax/blob/main/helm/csi-powermax/Chart.yaml) file. kubeVersion: “>= 1.23.0-0 < 1.27.0-0”.
- If the user is using complex K8s version like “v1.23.3-mirantis-1”, use this kubeVersion check in [helm Chart](https://github.com/dell/csi-powermax/blob/main/helm/csi-powermax/Chart.yaml) file. kubeVersion: “>= 1.24.0-0 < 1.29.0-0”.
- User should provide all boolean values with double-quotes. This applies only for values.yaml. Example: “true”/“false”.
- controllerCount parameter value should be <= number of nodes in the kubernetes cluster else install script fails.
- Endpoint should not have any special character at the end apart from port number.
Expand Down
2 changes: 2 additions & 0 deletions content/docs/csidriver/installation/helm/unity.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,8 @@ Procedure
| podmon.image| pod man image name | false | - |
| tenantName | Tenant name added while adding host entry to the array | No | |
| fsGroupPolicy | Defines which FS Group policy mode to be used, Supported modes `None, File and ReadWriteOnceWithFSType` | No | "ReadWriteOnceWithFSType" |
| storageCapacity.enabled | Enable/Disable storage capacity tracking | No | true |
| storageCapacity.pollInterval | Configure how often the driver checks for changed capacity | No | 5m |
| **controller** | Allows configuration of the controller-specific parameters.| - | - |
| controllerCount | Defines the number of csi-unity controller pods to deploy to the Kubernetes release| Yes | 2 |
| volumeNamePrefix | Defines a string prefix for the names of PersistentVolumes created | Yes | "k8s" |
Expand Down
Loading

0 comments on commit 5b6b019

Please sign in to comment.