From a3666607fb917d0b6a40496c94a8d772c9c94b8d Mon Sep 17 00:00:00 2001 From: Yamunadevi N Shanmugam Date: Fri, 29 Jul 2022 15:45:08 +0530 Subject: [PATCH 01/55] updated release 1.4 changes --- content/docs/authorization/deployment/helm/_index.md | 8 ++++---- content/docs/authorization/deployment/rpm/_index.md | 2 +- content/docs/csidriver/_index.md | 2 +- content/docs/csidriver/installation/helm/powerstore.md | 2 ++ content/docs/csidriver/installation/helm/unity.md | 2 ++ content/docs/csidriver/release/unity.md | 4 +--- 6 files changed, 11 insertions(+), 9 deletions(-) diff --git a/content/docs/authorization/deployment/helm/_index.md b/content/docs/authorization/deployment/helm/_index.md index 76d0f47c1a..796e55962c 100644 --- a/content/docs/authorization/deployment/helm/_index.md +++ b/content/docs/authorization/deployment/helm/_index.md @@ -47,7 +47,7 @@ The following third-party components are optionally installed in the specified n Use the following command to replace or update the secret: - `kubectl create secret generic karavi-config-secret -n authorization --from-file=config=samples/csm-authorization/config.yaml -o yaml --dry-run=client | kubectl replace -f -` + `kubectl create secret generic karavi-config-secret -n authorization --from-file=config.yaml=samples/csm-authorization/config.yaml -o yaml --dry-run=client | kubectl replace -f -` 4. Copy the default values.yaml file `cp charts/csm-authorization/values.yaml myvalues.yaml` @@ -208,7 +208,7 @@ karavictl rolebinding create --tenant Finance --role FinanceRole --insecure --ad Now that the tenant is bound to a role, a JSON Web Token can be generated for the tenant. For example, to generate a token for the `Finance` tenant: ``` -karavictl generate token --tenant Finance --insecure --addr --addr tenant.csm-authorization.com:30016 +karavictl generate token --tenant Finance --insecure --addr tenant.csm-authorization.com:30016 { "Token": "\napiVersion: v1\nkind: Secret\nmetadata:\n name: proxy-authz-tokens\ntype: Opaque\ndata:\n access: ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SmhkV1FpT2lKcllYSmhkbWtpTENKbGVIQWlPakUyTlRNek1qUXhPRFlzSW1keWIzVndJam9pWm05dklpd2lhWE56SWpvaVkyOXRMbVJsYkd3dWEyRnlZWFpwSWl3aWNtOXNaWE1pT2lKaVlYSWlMQ0p6ZFdJaU9pSnJZWEpoZG1rdGRHVnVZVzUwSW4wLmJIODN1TldmaHoxc1FVaDcweVlfMlF3N1NTVnEyRzRKeGlyVHFMWVlEMkU=\n refresh: ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SmhkV1FpT2lKcllYSmhkbWtpTENKbGVIQWlPakUyTlRVNU1UWXhNallzSW1keWIzVndJam9pWm05dklpd2lhWE56SWpvaVkyOXRMbVJsYkd3dWEyRnlZWFpwSWl3aWNtOXNaWE1pT2lKaVlYSWlMQ0p6ZFdJaU9pSnJZWEpoZG1rdGRHVnVZVzUwSW4wLkxNbWVUSkZlX2dveXR0V0lUUDc5QWVaTy1kdmN5SHAwNUwyNXAtUm9ZZnM=\n" @@ -218,7 +218,7 @@ karavictl generate token --tenant Finance --insecure --addr --addr tenant.csm-au With [jq](https://stedolan.github.io/jq/), you process the above response to filter the secret manifest. For example: ``` -karavictl generate token --tenant Finance --insecure --addr --addr tenant.csm-authorization.com:30016 | jq -r '.Token' +karavictl generate token --tenant Finance --insecure --addr tenant.csm-authorization.com:30016 | jq -r '.Token' apiVersion: v1 kind: Secret metadata: @@ -257,7 +257,7 @@ Given a setup where Kubernetes, a storage system, and the CSM for Authorization | intendedEndpoint | HTTPS REST API endpoint of the backend storage array. | Yes | - | | endpoint | HTTPS localhost endpoint that the authorization sidecar will listen on. | Yes | https://localhost:9400 | | systemID | System ID of the backend storage array. | Yes | " " | - | insecure | A boolean that enables/disables certificate validation of the backend storage array. This parameter is not used. | No | true | + | skipCertificateValidation | A boolean that enables/disables certificate validation of the backend storage array. This parameter is not used. | No | true | | isDefault | A boolean that indicates if the array is the default array. This parameter is not used. | No | default value from values.yaml | diff --git a/content/docs/authorization/deployment/rpm/_index.md b/content/docs/authorization/deployment/rpm/_index.md index 3c037dad45..0eecfaf4c7 100644 --- a/content/docs/authorization/deployment/rpm/_index.md +++ b/content/docs/authorization/deployment/rpm/_index.md @@ -230,7 +230,7 @@ Given a setup where Kubernetes, a storage system, and the CSM for Authorization | intendedEndpoint | HTTPS REST API endpoint of the backend storage array. | Yes | - | | endpoint | HTTPS localhost endpoint that the authorization sidecar will listen on. | Yes | https://localhost:9400 | | systemID | System ID of the backend storage array. | Yes | " " | - | insecure | A boolean that enables/disables certificate validation of the backend storage array. This parameter is not used. | No | true | + | skipCertificateValidation | A boolean that enables/disables certificate validation of the backend storage array. This parameter is not used. | No | true | | isDefault | A boolean that indicates if the array is the default array. This parameter is not used. | No | default value from values.yaml | diff --git a/content/docs/csidriver/_index.md b/content/docs/csidriver/_index.md index 732f364787..4db526b8be 100644 --- a/content/docs/csidriver/_index.md +++ b/content/docs/csidriver/_index.md @@ -24,7 +24,7 @@ The CSI Drivers by Dell implement an interface between [CSI](https://kubernetes- | Red Hat OpenShift | 4.9, 4.10, 4.10 EUS | 4.9, 4.10, 4.10 EUS | 4.9, 4.10, 4.10 EUS | 4.9, 4.10, 4.10 EUS | 4.9, 4.10, 4.10 EUS | | Mirantis Kubernetes Engine | 3.5.x | 3.5.x | 3.5.x | 3.5.x | 3.5.x | | Google Anthos | 1.9 | 1.8 | no | 1.9 | 1.9 | -| VMware Tanzu | no | no | NFS | NFS | NFS | +| VMware Tanzu | no | no | NFS | NFS | NFS,iSCSI | | Rancher Kubernetes Engine | yes | yes | yes | yes | yes | | Amazon Elastic Kubernetes Service
Anywhere | no | yes | no | no | yes | diff --git a/content/docs/csidriver/installation/helm/powerstore.md b/content/docs/csidriver/installation/helm/powerstore.md index 678c096c2b..19032b8e69 100644 --- a/content/docs/csidriver/installation/helm/powerstore.md +++ b/content/docs/csidriver/installation/helm/powerstore.md @@ -229,6 +229,8 @@ CRDs should be configured during replication prepare stage with repctl as descri | node.tolerations | Defines tolerations that would be applied to node daemonset | Yes | " " | | fsGroupPolicy | Defines which FS Group policy mode to be used, Supported modes `None, File and ReadWriteOnceWithFSType` | No | "ReadWriteOnceWithFSType" | | controller.vgsnapshot.enabled | To enable or disable the volume group snapshot feature | No | "true" | +| images.driverRepository | To use an image from custom repository | No | dockerhub | +| version | To use any driver version | No | Latest driver version | 8. Install the driver using `csi-install.sh` bash script by running `./csi-install.sh --namespace csi-powerstore --values ./my-powerstore-settings.yaml` - After that the driver should be installed, you can check the condition of driver pods by running `kubectl get all -n csi-powerstore` diff --git a/content/docs/csidriver/installation/helm/unity.md b/content/docs/csidriver/installation/helm/unity.md index 38000db82b..3b8d958ccf 100644 --- a/content/docs/csidriver/installation/helm/unity.md +++ b/content/docs/csidriver/installation/helm/unity.md @@ -123,6 +123,7 @@ Procedure | podmon.enabled | service to monitor failing jobs and notify | false | - | | 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" | | **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" | @@ -169,6 +170,7 @@ Procedure allowRWOMultiPodAccess: false syncNodeInfoInterval: 5 maxUnityVolumesPerNode: 0 + fsGroupPolicy: ReadWriteOneFSType ``` 4. For certificate validation of Unisphere REST API calls refer [here](#certificate-validation-for-unisphere-rest-api-calls). Otherwise, create an empty secret with file `csi-unity/samples/secret/emptysecret.yaml` file by running the `kubectl create -f csi-unity/samples/secret/emptysecret.yaml` command. diff --git a/content/docs/csidriver/release/unity.md b/content/docs/csidriver/release/unity.md index 701d0778d4..08ffc6e743 100644 --- a/content/docs/csidriver/release/unity.md +++ b/content/docs/csidriver/release/unity.md @@ -7,9 +7,7 @@ description: Release notes for Unity XT CSI driver ### New Features/Changes -- Removed beta volumesnapshotclass sample files. -- Added support for Kubernetes 1.24. -- Added support for OpenShift 4.10. +- Added support to configure fsGroupPolicy. ### Fixed Issues CSM Resiliency: Occasional failure unmounting Unity volume for raw block devices via iSCSI. From 3e68498f645a705509ee06e7378b59a9a6d1499d Mon Sep 17 00:00:00 2001 From: Bahubali Jain <66621574+bpjain2004@users.noreply.github.com> Date: Wed, 3 Aug 2022 21:04:38 +0530 Subject: [PATCH 02/55] Documentation for common cli for Dell CSMs- dellctl (#299) --- content/docs/cli/_index.md | 523 +++++++++++++++++++++++++++++++++++++ 1 file changed, 523 insertions(+) create mode 100644 content/docs/cli/_index.md diff --git a/content/docs/cli/_index.md b/content/docs/cli/_index.md new file mode 100644 index 0000000000..ee500aee7f --- /dev/null +++ b/content/docs/cli/_index.md @@ -0,0 +1,523 @@ +--- +title: "CLI" +linkTitle: "CLI" +weight: 9 +Description: > + CLI for Dell Container Storage Modules (CSM) +--- +dellctl is a common command line interface(CLI) used to interact with and manage your [Container Storage Modules](https://github.com/dell/csm) (CSM) resources. +This document outlines all dellctl commands, their intended use, options that can be provided to alter their execution, and expected output from those commands. + +| Command | Description | +| - | - | +| [dellctl](#dellctl) | dellctl is used to interact with Container Storage Modules | +| [dellctl cluster](#dellctl-cluster) | Manipulate one or more k8s cluster configurations | +| [dellctl cluster add](#dellctl-cluster-add) | Add a k8s cluster to be managed by dellctl | +| [dellctl cluster remove](#dellctl-cluster-remove) | Removes a k8s cluster managed by dellctl | +| [dellctl cluster get](#dellctl-cluster-get) | List all clusters currently being managed by dellctl | +| [dellctl backup](#dellctl-backup) | Allows to manipulate application backups/clones | +| [dellctl backup create](#dellctl-backup-create) | Create an application backup/clones | +| [dellctl backup delete](#dellctl-backup-delete) | Delete application backups | +| [dellctl backup get](#dellctl-backup-get) | Get application backups | +| [dellctl restore](#dellctl-restore) | Allows to manipulate application restores | +| [dellctl restore create](#dellctl-restore-create) | Restore an application backup | +| [dellctl restore delete](#dellctl-restore-delete) | Delete application restores | +| [dellctl restore get](#dellctl-restore-get) | Get application restores | + + +## Installation instructions +1. Download `dellctl` from [here](https://github.com/dell/csm/releases/tag/v1.4.0). +2. chmod +x dellctl +3. Move `dellctl` to `/usr/local/bin` or add `dellctl`'s containing directory path to PATH environment variable. +4. Run `dellctl --help` to know available commands or run `dellctl command --help` to know more about a specific command. + +By default, the `dellctl` runs against local cluster(referenced by `KUBECONFIG` environment variable or by a kube config file present at default location). +The user can register one or more remote clusters for `dellctl`, and run any `dellctl` command against these clusters by specifying the registered cluster id to the command. + + +## General Commands + +### dellctl + +dellctl is a CLI tool for managing Dell Container Storage Resources. + +##### Flags + +``` + -h, --help help for dellctl + -v, --version version for dellctl +``` + +##### Output + +Outputs help text + + + +--- + + + +### dellctl cluster + +Allows to manipulate one or more k8s cluster configurations + +##### Available Commands + +``` + add Adds a k8s cluster to be managed by dellctl + remove Removes a k8s cluster managed by dellctl + get List all clusters currently being managed by dellctl +``` + +##### Flags + +``` + -h, --help help for cluster +``` + +##### Output + +Outputs help text + + + +--- + + + +### dellctl cluster add + +Add one or more k8s clusters to be managed by dellctl + +##### Flags + +``` + -f, --files strings paths for kube config files + --force forcefully add cluster + -h, --help help for add + -n, --names strings cluster names +``` + +##### Output + +``` +# dellctl cluster add -n cluster1 -f ~/kubeconfigs/cluster1-kubeconfig + INFO Adding clusters ... + INFO Cluster: cluster1 + INFO Successfully added cluster cluster1 in /root/.dellctl/clusters folder. 5635 bytes copied +``` + + + +--- + + + +### dellctl cluster remove + +Removes a k8s cluster by name from the list of clusters being managed by dellctl + +##### Aliases + +``` + remove, rm +``` + +##### Flags + +``` + -h, --help help for remove + -n, --name string cluster name +``` + +##### Output + +``` +# dellctl cluster remove -n cluster1 + INFO Removing cluster with id cluster1 + INFO Removed cluster with id cluster1 +``` + + + +--- + + + +### dellctl cluster get + +List all clusters currently being managed by dellctl + +##### Aliases + +``` + get, ls +``` + +##### Flags + +``` + -h, --help help for get +``` + +##### Output + +``` +# dellctl cluster get +CLUSTER ID VERSION URL +cluster1 v1.22 https://1.2.3.4:6443 +cluster2 v1.22 https://1.2.3.5:6443 +``` + + + +--- + + + +## Commands related to application mobility operations + +### dellctl backup + +Allows to manipulate application backups/clones + +##### Available Commands + +``` + create Create an application backup/clones + delete Delete application backups + get Get application backups +``` + +##### Flags + +``` + -h, --help help for backup +``` + +##### Output + +Outputs help text + + + +--- + + + +### dellctl backup create + +Create an application backup/clones + +##### Flags + +``` + --cluster-id string Id of the cluster managed by dellctl + --exclude-namespaces stringArray List of namespace names to exclude from the backup. + --include-namespaces stringArray List of namespace names to include in the backup (use '*' for all namespaces). (default *) + --ttl duration Backup retention period. (default 720h0m0s) + --exclude-resources stringArray Resources to exclude from the backup, formatted as resource.group, such as storageclasses.storage.k8s.io. + --include-resources stringArray Resources to include in the backup, formatted as resource.group, such as storageclasses.storage.k8s.io (use '*' for all resources). + --backup-location string Storage location where k8s resources and application data will be backed up to. (default "default") + --data-mover string Data mover to be used to backup application data. (default "Restic") + --include-cluster-resources optionalBool[=true] Include cluster-scoped resources in the backup + -l, --label-selector labelSelector Only backup resources matching this label selector. (default ) + -n, --namespace string The namespace in which application mobility service should operate. (default "app-mobility-system") + --clones stringArray Creates an application clone into target clusters managed by dellctl. Specify optional namespace mappings where the clone is created. Example: 'cluster1/sourceNamespace1:targetNamespace1', 'cluster1/sourceNamespace1:targetNamespace1;cluster2/sourceNamespace2:targetNamespace2' + -h, --help help for create +``` + +##### Output + +Create a backup of the applications running in namespace `demo1` + +``` +# dellctl backup create backup1 --include-namespaces demo1 + INFO Backup request "backup1" submitted successfully. + INFO Run 'dellctl backup get backup1' for more details. +``` + +Create clones of the application running in namespace `demo1`, on clusters with id `cluster1` and `cluster2` + +``` +# dellctl backup create demo-app-clones --include-namespaces demo1 --clones "cluster1/demo1:restore-ns1" --clones "cluster2/demo1:restore-ns1" + INFO Clone request "demo-app-clones" submitted successfully. + INFO Run 'dellctl backup get demo-app-clones' for more details. +``` + +Take backup of application running in namespace `demo3` on remote cluster with id `cluster2` + +``` +# dellctl backup create backup4 --include-namespaces demo3 --cluster-id cluster2 + INFO Backup request "backup4" submitted successfully. + INFO Run 'dellctl backup get backup4' for more details. +``` + + + +--- + + + +### dellctl backup delete + +Delete one or more application backups + +##### Flags + +``` + --all Delete all backups + --cluster-id string Id of the cluster managed by dellctl + --confirm Confirm deletion + -h, --help help for delete + -n, --namespace string The namespace in which application mobility service should operate. (default "app-mobility-system") +``` + +##### Output + +``` +# dellctl backup delete backup1 +Are you sure you want to continue (Y/N)? Y + INFO Request to delete backup "backup1" submitted successfully. + INFO The backup will be fully deleted after all associated data (backup files, pod volume data, restores, velero backup) are removed. +``` + +Delete multiple backups + +``` +# dellctl backup delete backup1 backup2 +Are you sure you want to continue (Y/N)? Y + INFO Request to delete backup "backup1" submitted successfully. + INFO The backup will be fully deleted after all associated data (backup files, pod volume data, restores, velero backup) are removed. + INFO Request to delete backup "backup2" submitted successfully. + INFO The backup will be fully deleted after all associated data (backup files, pod volume data, restores, velero backup) are removed. +``` + + +Delete all backups without asking for user confirmation + +``` +# dellctl backup delete --all --confirm + INFO Request to delete backup "backup4" submitted successfully. + INFO The backup will be fully deleted after all associated data (backup files, pod volume data, restores, velero backup) are removed. + INFO Request to delete backup "demo-app-clones" submitted successfully. + INFO The backup will be fully deleted after all associated data (backup files, pod volume data, restores, velero backup) are removed. +``` + + +--- + + + +### dellctl backup get + +Get application backups + +##### Flags + +``` + --cluster-id string Id of the cluster managed by dellctl + -h, --help help for get + -n, --namespace string The namespace in which application mobility service should operate. (default "app-mobility-system") + +``` + +##### Output + +``` +# dellctl backup get +NAME STATUS CREATED EXPIRES STORAGE LOCATION DATA MOVER CLONED TARGET CLUSTERS +backup1 Completed 2022-07-27 11:51:00 -0400 EDT 2022-08-26 11:51:00 -0400 EDT default Restic false +backup2 Completed 2022-07-27 11:59:24 -0400 EDT 2022-08-26 11:59:42 -0400 EDT default Restic false +backup4 Completed 2022-07-27 12:02:54 -0400 EDT NA default Restic false +demo-app-clones Restored 2022-07-27 11:53:37 -0400 EDT 2022-08-26 11:53:37 -0400 EDT default Restic true cluster1, cluster2 +``` + +Get backups from remote cluster with id `cluster2` + +``` +# dellctl backup get --cluster-id cluster2 +NAME STATUS CREATED EXPIRES STORAGE LOCATION DATA MOVER CLONED TARGET CLUSTERS +backup1 Completed 2022-07-27 11:52:42 -0400 EDT NA default Restic false +backup2 Completed 2022-07-27 12:02:29 -0400 EDT NA default Restic false +backup4 Completed 2022-07-27 12:01:49 -0400 EDT 2022-08-26 12:01:49 -0400 EDT default Restic false +demo-app-clones Completed 2022-07-27 11:54:55 -0400 EDT NA default Restic true cluster1, cluster2 +``` + +Get backups with their names + +``` +# dellctl backup get backup1 demo-app-clones +NAME STATUS CREATED EXPIRES STORAGE LOCATION DATA MOVER CLONED TARGET CLUSTERS +backup1 Completed 2022-07-27 11:51:00 -0400 EDT 2022-08-26 11:51:00 -0400 EDT default Restic false +demo-app-clones Completed 2022-07-27 11:53:37 -0400 EDT 2022-08-26 11:53:37 -0400 EDT default Restic true cluster1, cluster2 +``` + + + +--- + + + +### dellctl restore + +Allows to manipulate application restores + +##### Available Commands + +``` + create Restore an application backup + delete Delete application restores + get Get application restores +``` + +##### Flags + +``` + -h, --help help for restore +``` + +##### Output + +Outputs help text + + + +--- + + + +### dellctl restore create + +Restore an application backup + +##### Flags + +``` + --cluster-id string Id of the cluster managed by dellctl + --from-backup string Backup to restore from + --namespace-mappings mapStringString Map of source namespace names to target namespace names to restore into in the form src1:dst1,src2:dst2,... + --exclude-namespaces stringArray List of namespace names to exclude from the backup. + --include-namespaces stringArray List of namespace names to include in the backup (use '*' for all namespaces). (default *) + --exclude-resources stringArray Resources to exclude from the backup, formatted as resource.group, such as storageclasses.storage.k8s.io. + --include-resources stringArray Resources to include in the backup, formatted as resource.group, such as storageclasses.storage.k8s.io (use '*' for all resources). + --restore-volumes optionalBool[=true] Whether to restore volumes from snapshots. + --include-cluster-resources optionalBool[=true] Include cluster-scoped resources in the backup + -n, --namespace string The namespace in which application mobility service should operate. (default "app-mobility-system") + -h, --help help for create +``` + +##### Output + +Restore application backup `backup1` on local cluster in namespace `restorens1` + +``` +# dellctl restore create restore1 --from-backup backup1 --namespace-mappings "demo1:restorens1" + INFO Restore request "restore1" submitted successfully. + INFO Run 'dellctl restore get restore1' for more details. +``` + +Restore application backup `backup1` on remote cluster `cluster2` in namespace `demo1` + +``` +# dellctl restore create restore1 --from-backup backup1 --cluster-id cluster2 + INFO Restore request "restore1" submitted successfully. + INFO Run 'dellctl restore get restore1' for more details. +``` + + + +--- + + + +### dellctl restore delete + +Delete one or more application restores + +##### Flags + +``` + --all Delete all restores + --cluster-id string Id of the cluster managed by dellctl + --confirm Confirm deletion + -h, --help help for delete + -n, --namespace string The namespace in which application mobility service should operate. (default "app-mobility-system") +``` + +##### Output + +Delete a restore created on remote cluster with id `cluster2` + +``` +# dellctl restore delete restore1 --cluster-id cluster2 +Are you sure you want to continue (Y/N)? Y + INFO Request to delete restore "restore1" submitted successfully. + INFO The restore will be fully deleted after all associated data (restore files, velero restore) are removed. +``` + +Delete multiple restores + +``` +# dellctl restore delete restore1 restore4 +Are you sure you want to continue (Y/N)? Y + INFO Request to delete restore "restore1" submitted successfully. + INFO The restore will be fully deleted after all associated data (restore files, velero restore) are removed. + INFO Request to delete restore "restore4" submitted successfully. + INFO The restore will be fully deleted after all associated data (restore files, velero restore) are removed. +``` + +Delete all restores without asking for user confirmation + +``` +# dellctl restore delete --all --confirm + INFO Request to delete restore "restore1" submitted successfully. + INFO The restore will be fully deleted after all associated data (restore files, velero restore) are removed. + INFO Request to delete restore "restore2" submitted successfully. + INFO The restore will be fully deleted after all associated data (restore files, velero restore) are removed. +``` + + +--- + + + +### dellctl restore get + +Get application restores + +##### Flags + +``` + --cluster-id string Id of the cluster managed by dellctl + -h, --help help for get + -n, --namespace string The namespace in which application mobility service should operate. (default "app-mobility-system") +``` + +##### Output + +Get all the application restores created on local cluster + +``` +# dellctl restore get +NAME BACKUP STATUS CREATED COMPLETED +restore1 backup1 Completed 2022-07-27 12:35:29 -0400 EDT +restore4 backup1 Completed 2022-07-27 12:39:42 -0400 EDT +``` + +Get all the application restores created on remote cluster with id `cluster2` + +``` +# dellctl restore get --cluster-id cluster2 +NAME BACKUP STATUS CREATED COMPLETED +restore1 backup1 Completed 2022-07-27 12:38:43 -0400 EDT +``` + +Get restores with their names + +``` +# dellctl restore get restore1 +NAME BACKUP STATUS CREATED COMPLETED +restore1 backup1 Completed 2022-07-27 12:35:29 -0400 EDT +``` From c8ae7494e1381b76f66cdbab11adb9784baf742b Mon Sep 17 00:00:00 2001 From: Yamunadevi N Shanmugam <82038610+shanmydell@users.noreply.github.com> Date: Thu, 4 Aug 2022 14:19:54 +0530 Subject: [PATCH 03/55] Update home page (#304) --- content/docs/_index.md | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/content/docs/_index.md b/content/docs/_index.md index 66409655e5..062384ed9b 100644 --- a/content/docs/_index.md +++ b/content/docs/_index.md @@ -1,7 +1,7 @@ --- -title: "Dell Technologies (Dell) Container Storage Modules (CSM)" -linkTitle: "Dell Technologies (Dell) Container Storage Modules (CSM)" +title: "Container Storage Modules" +linkTitle: "Container Storage Modules" weight: 20 menu: main: @@ -14,6 +14,32 @@ The Dell Technologies (Dell) Container Storage Modules (CSM) enables simple and CSM is made up of multiple components including modules (enterprise capabilities), CSI drivers (storage enablement) and, other related applications (deployment, feature controllers, etc). +{{< cardpane >}} + {{< card header="[**Authorization**](authorization/)" + footer="Supports [PowerFlex](csidriver/features/powerflex/) [PowerScale](csidriver/features/powerscale/) [PowerMax](csidriver/features/powermax/)">}} + CSM for Authorization provides storage and Kubernetes administrators the ability to apply RBAC for Dell CSI Drivers. It does this by deploying a proxy between the CSI driver and the storage system to enforce role-based access and usage rules.
+[...Learn more](authorization/) + + {{< /card >}} + {{< card header="[**Replication**](replication/)" + footer="Supports [PowerStore](csidriver/features/powerstore/) [PowerScale](csidriver/features/powerscale/) [PowerMax](csidriver/features/powermax/)">}} + CSM for Replication project aims to bring Replication & Disaster Recovery capabilities of Dell Storage Arrays to Kubernetes clusters. It helps you replicate groups of volumes and can provide you a way to restart applications in case of both planned and unplanned migration. +[...Learn more](replication/) +{{< /card >}} +{{< /cardpane >}} +{{< cardpane >}} +{{< card header="[**Resiliency**](resiliency/)" + footer="Supports [PowerFlex](csidriver/features/powerflex/) [PowerScale](csidriver/features/powerscale/) [Unity](csidriver/features/unity/)">}} + CSM for Resiliency is designed to make Kubernetes Applications, including those that utilize persistent storage, more resilient to various failures. +[...Learn more](resiliency/) + {{< /card >}} +{{< card header="[**Observability**](observability/)" + footer="Supports [PowerFlex](csidriver/features/powerflex/) [PowerStore](csidriver/features/powerstore/)">}} + CSM for Observability provides visibility on the capacity of the volumes/file shares that is being managed with Dell CSM CSI (Container Storage Interface) drivers along with their performance in terms of bandwidth, IOPS, and response time. +[...Learn more](observability/) + {{< /card >}} +{{< /cardpane >}} + CSM Diagram ## CSM Supported Modules and Dell CSI Drivers From 362d5fdea43ea74a879ba8a7de9e979cdca6d173 Mon Sep 17 00:00:00 2001 From: Aaron Tye Date: Thu, 4 Aug 2022 08:12:21 -0400 Subject: [PATCH 04/55] Bug 393 authorization selinux (#300) --- .../authorization/deployment/rpm/_index.md | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/content/docs/authorization/deployment/rpm/_index.md b/content/docs/authorization/deployment/rpm/_index.md index 0eecfaf4c7..8d485b7f4e 100644 --- a/content/docs/authorization/deployment/rpm/_index.md +++ b/content/docs/authorization/deployment/rpm/_index.md @@ -19,7 +19,29 @@ The CSM for Authorization proxy server requires a Linux host with the following These packages need to be installed on the Linux host: - container-selinux -- https://rpm.rancher.io/k3s/stable/common/centos/7/noarch/k3s-selinux-0.4-1.el7.noarch.rpm +- k3s-selinux-0.4-1 + +Use the appropriate package manager on the machine to install the packages. + +### Using yum on CentOS/RedHat 7: + +yum install -y container-selinux + +yum install -y https://rpm.rancher.io/k3s/stable/common/centos/7/noarch/k3s-selinux-0.4-1.el7.noarch.rpm + +### Using yum on CentOS/RedHat 8: + +yum install -y container-selinux + +yum install -y https://rpm.rancher.io/k3s/stable/common/centos/8/noarch/k3s-selinux-0.4-1.el8.noarch.rpm + +### Dark Sites + +For environments where `yum` will not work, obtain the supported version of container-selinux for your OS version and install it. + +The container-selinux RPMs for CentOS/RedHat 7 and 8 can be downloaded from [https://centos.pkgs.org/7/centos-extras-x86_64/](https://centos.pkgs.org/7/centos-extras-x86_64/) and [https://centos.pkgs.org/8/centos-appstream-x86_64/](https://centos.pkgs.org/8/centos-appstream-x86_64/), respectively. + +The k3s-selinux-0.4-1 RPM can be obtained from [https://rpm.rancher.io/k3s/stable/common/centos/7/noarch/k3s-selinux-0.4-1.el7.noarch.rpm](https://rpm.rancher.io/k3s/stable/common/centos/7/noarch/k3s-selinux-0.4-1.el7.noarch.rpm) or [https://rpm.rancher.io/k3s/stable/common/centos/8/noarch/k3s-selinux-0.4-1.el8.noarch.rpm](https://rpm.rancher.io/k3s/stable/common/centos/8/noarch/k3s-selinux-0.4-1.el8.noarch.rpm) for CentOS/RedHat 7 and 8, respectively. Download the supported version of k3s-selinux-0.4-1 for your OS version and install it. ## Deploying the CSM Authorization Proxy Server From 9376fef85b97ee8c78c4c8bbdb277b50a0b0194a Mon Sep 17 00:00:00 2001 From: Don Khan Date: Thu, 4 Aug 2022 15:43:30 -0400 Subject: [PATCH 05/55] Use sed as alternative to jq (#303) --- content/docs/authorization/deployment/helm/_index.md | 6 +++--- content/docs/authorization/deployment/rpm/_index.md | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/content/docs/authorization/deployment/helm/_index.md b/content/docs/authorization/deployment/helm/_index.md index 796e55962c..b1f45ca030 100644 --- a/content/docs/authorization/deployment/helm/_index.md +++ b/content/docs/authorization/deployment/helm/_index.md @@ -13,7 +13,7 @@ The following CSM Authorization components are installed in the specified namesp - role-service, which configures roles for tenants to be bound to - storage-service, which configures backend storage arrays for the proxy-server to foward requests to -The folloiwng third-party components are installed in the specified namespace: +The following third-party components are installed in the specified namespace: - redis, which stores data regarding tenants and their volume ownership, quota, and revokation status - redis-commander, a web management tool for Redis @@ -215,10 +215,10 @@ karavictl generate token --tenant Finance --insecure --addr tenant.csm-authoriza } ``` -With [jq](https://stedolan.github.io/jq/), you process the above response to filter the secret manifest. For example: +Process the above response to filter the secret manifest. For example using sed you can run the following: ``` -karavictl generate token --tenant Finance --insecure --addr tenant.csm-authorization.com:30016 | jq -r '.Token' +karavictl generate token --tenant Finance --insecure --addr tenant.csm-authorization.com:30016 | sed -e 's/"Token": //' -e 's/[{}"]//g' -e 's/\\n/\n/g' apiVersion: v1 kind: Secret metadata: diff --git a/content/docs/authorization/deployment/rpm/_index.md b/content/docs/authorization/deployment/rpm/_index.md index 8d485b7f4e..9e9d413db2 100644 --- a/content/docs/authorization/deployment/rpm/_index.md +++ b/content/docs/authorization/deployment/rpm/_index.md @@ -210,7 +210,7 @@ After creating the role bindings, the next logical step is to generate the acces ``` echo === Generating token === - karavictl generate token --tenant $TenantName --insecure --addr "grpc.${AuthorizationProxyHost}" | jq -r '.Token' > token.yaml + karavictl generate token --tenant $TenantName --insecure --addr "grpc.${AuthorizationProxyHost}" | sed -e 's/"Token": //' -e 's/[{}"]//g' -e 's/\\n/\n/g' > token.yaml echo === Copy token to Driver Host === sshpass -p ${DriverHostPassword} scp token.yaml ${DriverHostVMUser}@{DriverHostVMIP}:/tmp/token.yaml @@ -352,7 +352,7 @@ Replace the data in `config.yaml` under the `data` field with your new, encoded >__Note__: If you are updating the signing secret, the tenants need to be updated with new tokens via the `karavictl generate token` command like so. The `--insecure` flag is only necessary if certificates were not provided in `$HOME/.karavi/config.json` -`karavictl generate token --tenant $TenantName --insecure --addr "grpc.${AuthorizationProxyHost}" | jq -r '.Token' > kubectl -n $namespace apply -f -` +`karavictl generate token --tenant $TenantName --insecure --addr "grpc.${AuthorizationProxyHost}" | sed -e 's/"Token": //' -e 's/[{}"]//g' -e 's/\\n/\n/g' | kubectl -n $namespace apply -f -` ## CSM for Authorization Proxy Server Dynamic Configuration Settings From 1a303c255c2f739db01219016c28b779f970f8c7 Mon Sep 17 00:00:00 2001 From: boyamurthy <92081029+boyamurthy@users.noreply.github.com> Date: Wed, 10 Aug 2022 12:22:42 +0530 Subject: [PATCH 06/55] Adding volume expansion support for replicated (#305) --- content/docs/csidriver/features/powermax.md | 4 +- content/docs/csidriver/release/powermax.md | 11 +---- content/docs/replication/_index.md | 1 + content/docs/replication/volume_expansion.md | 44 ++++++++++++++++++++ 4 files changed, 47 insertions(+), 13 deletions(-) create mode 100644 content/docs/replication/volume_expansion.md diff --git a/content/docs/csidriver/features/powermax.md b/content/docs/csidriver/features/powermax.md index 697c1040b1..36be5f0745 100644 --- a/content/docs/csidriver/features/powermax.md +++ b/content/docs/csidriver/features/powermax.md @@ -160,8 +160,6 @@ To install multiple CSI drivers, follow these steps: Starting in v1.4, the CSI PowerMax driver supports the expansion of Persistent Volumes (PVs). This expansion is done online, which is when the PVC is attached to any node. ->Note: This feature is not supported for replicated volumes. - To use this feature, enable in `values.yaml` ```yaml @@ -564,4 +562,4 @@ spec: When this feature is enabled, the existing `ReadWriteOnce(RWO)` access mode restricts volume access to a single node and allows multiple pods on the same node to read from and write to the same volume. -To migrate existing PersistentVolumes to use `ReadWriteOncePod`, please follow the instruction from [here](https://kubernetes.io/blog/2021/09/13/read-write-once-pod-access-mode-alpha/#migrating-existing-persistentvolumes). \ No newline at end of file +To migrate existing PersistentVolumes to use `ReadWriteOncePod`, please follow the instruction from [here](https://kubernetes.io/blog/2021/09/13/read-write-once-pod-access-mode-alpha/#migrating-existing-persistentvolumes). diff --git a/content/docs/csidriver/release/powermax.md b/content/docs/csidriver/release/powermax.md index 20163037c0..d769ade1c4 100644 --- a/content/docs/csidriver/release/powermax.md +++ b/content/docs/csidriver/release/powermax.md @@ -6,16 +6,7 @@ description: Release notes for PowerMax CSI driver ## Release Notes - CSI PowerMax v2.3.0 ### New Features/Changes -- Updated deprecated StorageClass parameter fsType with csi.storage.k8s.io/fstype. -- Added support for Standalone Helm Charts. -- Removed beta volumesnapshotclass sample files. -- Added mapping of PV/PVC to namespace. -- Added support to configure fsGroupPolicy. -- Added support to filter topology keys based on user inputs. -- Added support for SRDF Metro group sharing multiple namespaces. -- Added support for Kubernetes 1.24. -- Added support for OpenShift 4.10. -- Added support to convert replicated volume to non-replicated volume and vice versa for Sync and Async modes. +- Online volume expansion for replicated volumes. ### Fixed Issues There are no fixed issues in this release. diff --git a/content/docs/replication/_index.md b/content/docs/replication/_index.md index df4d1bb45c..65333cac06 100644 --- a/content/docs/replication/_index.md +++ b/content/docs/replication/_index.md @@ -22,6 +22,7 @@ CSM for Replication provides the following capabilities: | Create `PersistentVolume` objects in the cluster representing the replicated volume | yes | yes | yes | no | no | | Create `DellCSIReplicationGroup` objects in the cluster | yes | yes | yes | no | no | | Failover & Reprotect applications using the replicated volumes | yes | yes | yes | no | no | +| Online Volume Expansion for replicated volumes | yes | no | no | no | no | | Provides a command line utility - [repctl](tools) for configuring & managing replication related resources across multiple clusters | yes | yes | yes | no | no | {{}} diff --git a/content/docs/replication/volume_expansion.md b/content/docs/replication/volume_expansion.md new file mode 100644 index 0000000000..464811d519 --- /dev/null +++ b/content/docs/replication/volume_expansion.md @@ -0,0 +1,44 @@ +--- +title: Volume Expansion +linktitle: Volume Expansion +weight: 6 +description: > + Online expansion of replicated volumes +--- + +Starting in v2.4.0, the CSI PowerMax driver supports the expansion of Replicated Persistent Volumes (PVs). This expansion is done online, which is when the PVC is attached to any node. + +## Prerequisites +- To use this feature, enable resizer in values.yaml. +```yaml +resizer: + enabled: true +``` +- To use this feature, the storage class that is used to create the PVC must have the attribute allowVolumeExpansion set to true. + +## Basic Usage + +To resize a PVC, edit the existing PVC spec and set spec.resources.requests.storage to the intended size. For example, if you have a PVC - pmax-pvc-demo of size 5 Gi, then you can resize it to 10 Gi by updating the PVC. + +```yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: pmax-pvc-demo + namespace: test +spec: + accessModes: + - ReadWriteOnce + volumeMode: Filesystem + resources: + requests: + storage: 10Gi #Updated size from 5Gi to 10Gi + storageClassName: powermax-expand-sc +``` +Update remote PVC with expanded size: + +1. Update the remote PVC size with the same size as on local PVC + +2. After sync with remote CSI driver, volume size will be updated to show new size. + +*NOTE*: The Kubernetes Volume Expansion feature can only be used to increase the size of the volume, it cannot be used to shrink a volume. From 5f777eab564086c32cb4c63cb67a004d28cc3564 Mon Sep 17 00:00:00 2001 From: Aaron Tye Date: Wed, 10 Aug 2022 23:50:43 -0400 Subject: [PATCH 07/55] update instructions for installing karavictl (#279) --- .../authorization/deployment/helm/_index.md | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/content/docs/authorization/deployment/helm/_index.md b/content/docs/authorization/deployment/helm/_index.md index b1f45ca030..f119688720 100644 --- a/content/docs/authorization/deployment/helm/_index.md +++ b/content/docs/authorization/deployment/helm/_index.md @@ -108,9 +108,26 @@ helm -n authorization install authorization -f myvalues.yaml charts/csm-authoriz ## Install Karavictl -The Karavictl CLI can be obtained directly from the [GitHub repository's releases](https://github.com/dell/karavi-authorization/releases) section. +1. Download the latest release of karavictl -In order to run `karavictl` commands, the binary needs to exist in your PATH, for example /usr/local/bin. +``` +curl -LO https://github.com/dell/karavi-authorization/releases/latest/download/karavictl +``` + +2. Install karavictl + +``` +sudo install -o root -g root -m 0755 karavictl /usr/local/bin/karavictl +``` + +If you do not have root access on the target system, you can still install karavictl to the ~/.local/bin directory: + +``` +chmod +x karavictl +mkdir -p ~/.local/bin +mv ./karavictl ~/.local/bin/karavictl +# and then append (or prepend) ~/.local/bin to $PATH +``` Karavictl commands and intended use can be found [here](../../cli/). From bb88ba64c5e1750ccea8a47394bb84e428431d18 Mon Sep 17 00:00:00 2001 From: satyakonduri <109734493+satyakonduri@users.noreply.github.com> Date: Thu, 11 Aug 2022 15:52:06 +0530 Subject: [PATCH 08/55] CSI-Powerstore: Update Installation doc (#308) --- .../csidriver/installation/helm/powerstore.md | 36 +++++++++---------- .../installation/operator/powerstore.md | 3 +- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/content/docs/csidriver/installation/helm/powerstore.md b/content/docs/csidriver/installation/helm/powerstore.md index 19032b8e69..99797d69c4 100644 --- a/content/docs/csidriver/installation/helm/powerstore.md +++ b/content/docs/csidriver/installation/helm/powerstore.md @@ -117,7 +117,21 @@ Use [v5.0.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/ - [quay.io/k8scsi/csi-snapshotter:v4.0.x](https://quay.io/repository/k8scsi/csi-snapshotter?tag=v4.0.0&tab=tags) - The CSI external-snapshotter sidecar is still installed along with the driver and does not involve any extra configuration. -## Volume Health Monitoring +#### Installation example + +You can install CRDs and default snapshot controller by running these commands: +```bash +git clone https://github.com/kubernetes-csi/external-snapshotter/ +cd ./external-snapshotter +git checkout release- +kubectl kustomize client/config/crd | kubectl create -f - +kubectl -n kube-system kustomize deploy/kubernetes/snapshot-controller | kubectl create -f - +``` + +*NOTE:* +- It is recommended to use 5.0.x version of snapshotter/snapshot-controller. + +### Volume Health Monitoring Volume Health Monitoring feature is optional and by default this feature is disabled for drivers when installed via helm. To enable this feature, add the below block to the driver manifest before installing the driver. This ensures to install external @@ -148,22 +162,6 @@ node: # Default value: None enabled: false ``` - -#### Installation example - -You can install CRDs and default snapshot controller by running following commands: -```bash -git clone https://github.com/kubernetes-csi/external-snapshotter/ -cd ./external-snapshotter -git checkout release- -kubectl kustomize client/config/crd | kubectl create -f - -kubectl -n kube-system kustomize deploy/kubernetes/snapshot-controller | kubectl create -f - -``` - -*NOTE:* -- It is recommended to use 5.0.x version of snapshotter/snapshot-controller. -- The CSI external-snapshotter sidecar is installed along with the driver and does not involve any extra configuration. - ### (Optional) Replication feature Requirements Applicable only if you decided to enable the Replication feature in `values.yaml` @@ -197,10 +195,10 @@ CRDs should be configured during replication prepare stage with repctl as descri NFSv4 ACls are supported for NFSv4 shares on NFSv4 enabled NAS servers only. POSIX ACLs are not supported and only POSIX mode bits are supported for NFSv3 shares. Add more blocks similar to above for each PowerStore array if necessary. -5. Create storage classes using ones from `samples/storageclass` folder as an example and apply them to the Kubernetes cluster by running `kubectl create -f ` +5. Create the secret by running ```kubectl create secret generic powerstore-config -n csi-powerstore --from-file=config=secret.yaml``` +6. Create storage classes using ones from `samples/storageclass` folder as an example and apply them to the Kubernetes cluster by running `kubectl create -f ` > If you do not specify `arrayID` parameter in the storage class then the array that was specified as the default would be used for provisioning volumes. -6. Create the secret by running ```kubectl create secret generic powerstore-config -n csi-powerstore --from-file=config=secret.yaml``` 7. Copy the default values.yaml file `cd dell-csi-helm-installer && cp ../helm/csi-powerstore/values.yaml ./my-powerstore-settings.yaml` 8. Edit the newly created values file and provide values for the following parameters `vi my-powerstore-settings.yaml`: diff --git a/content/docs/csidriver/installation/operator/powerstore.md b/content/docs/csidriver/installation/operator/powerstore.md index 4a8ed23da4..78c374f19c 100644 --- a/content/docs/csidriver/installation/operator/powerstore.md +++ b/content/docs/csidriver/installation/operator/powerstore.md @@ -138,7 +138,8 @@ data: | X_CSI_POWERSTORE_EXTERNAL_ACCESS | allows specifying additional entries for hostAccess of NFS volumes. Both single IP address and subnet are valid entries | No | " "| | X_CSI_NFS_ACLS | Defines permissions - POSIX mode bits or NFSv4 ACLs, to be set on NFS target mount directory. | No | "0777" | | ***Node parameters*** | -| X_CSI_POWERSTORE_ENABLE_CHAP | Set to true if you want to enable iSCSI CHAP feature | No | false | +| X_CSI_POWERSTORE_ENABLE_CHAP | Set to true if you want to enable iSCSI CHAP feature | No | false | + 6. Execute the following command to create PowerStore custom resource:`kubectl create -f `. The above command will deploy the CSI-PowerStore driver. - After that the driver should be installed, you can check the condition of driver pods by running `kubectl get all -n ` From a5d5f98e73f26050a468d3eefeee3acf98b2b1fb Mon Sep 17 00:00:00 2001 From: Ilya <89317651+IliaRN@users.noreply.github.com> Date: Thu, 11 Aug 2022 15:01:04 +0400 Subject: [PATCH 09/55] [replication] Added Unity replication section (#302) --- .../replication/deployment/installation.md | 3 +- .../replication/deployment/storageclasses.md | 2 +- content/docs/replication/deployment/unity.md | 178 ++++++++++++++++++ .../docs/replication/replication-actions.md | 20 +- 4 files changed, 191 insertions(+), 12 deletions(-) create mode 100644 content/docs/replication/deployment/unity.md diff --git a/content/docs/replication/deployment/installation.md b/content/docs/replication/deployment/installation.md index 005637fac7..6bbabeee29 100644 --- a/content/docs/replication/deployment/installation.md +++ b/content/docs/replication/deployment/installation.md @@ -75,8 +75,9 @@ The following CSI drivers support replication: 1. CSI driver for PowerMax 2. CSI driver for PowerStore 3. CSI driver for PowerScale +4. CSI driver for Unity XT -Please follow the steps outlined in [PowerMax](../powermax), [PowerStore](../powerstore) or [PowerScale](../powerscale) pages during the driver installation. +Please follow the steps outlined in [PowerMax](../powermax), [PowerStore](../powerstore), [PowerScale](../powerscale) or [Unity](../unity) pages during the driver installation. >Note: Please ensure that replication CRDs are installed in the clusters where you are installing the CSI drivers. These CRDs are generally installed as part of the CSM Replication controller installation process. diff --git a/content/docs/replication/deployment/storageclasses.md b/content/docs/replication/deployment/storageclasses.md index df85a44833..042d351d72 100644 --- a/content/docs/replication/deployment/storageclasses.md +++ b/content/docs/replication/deployment/storageclasses.md @@ -29,7 +29,7 @@ This should contain the name of the storage class on the remote cluster which is >Note: You still need to create a pair of storage classes even while using a single stretched cluster ### Driver specific parameters -Please refer to the driver specific sections for [PowerMax](../powermax/#creating-storage-classes), [PowerStore](../powerstore/#creating-storage-classes) or [PowerScale](../powerscale/#creating-storage-classes) for a detailed list of parameters. +Please refer to the driver specific sections for [PowerMax](../powermax/#creating-storage-classes), [PowerStore](../powerstore/#creating-storage-classes), [PowerScale](../powerscale/#creating-storage-classes) or [Unity](../unity/#creating-storage-classes) for a detailed list of parameters. ### PV sync Deletion diff --git a/content/docs/replication/deployment/unity.md b/content/docs/replication/deployment/unity.md new file mode 100644 index 0000000000..cab4a068fe --- /dev/null +++ b/content/docs/replication/deployment/unity.md @@ -0,0 +1,178 @@ +--- +title: Unity +linktitle: Unity +weight: 7 +description: > + Enabling Replication feature for CSI Unity +--- +## Enabling Replication in CSI Unity + +Container Storage Modules (CSM) Replication sidecar is a helper container that is installed alongside a CSI driver to facilitate replication functionality. Such CSI drivers must implement `dell-csi-extensions` calls. + +CSI driver for Dell Unity supports necessary extension calls from `dell-csi-extensions`. To be able to provision replicated volumes you would need to do the steps described in these sections. + +### Before Installation + +#### On Storage Array +Be sure to configure replication between multiple Unity instances using instructions provided by +Unity storage. + + +#### In Kubernetes +Ensure you installed CRDs and replication controller in your clusters. + +To verify you have everything in order you can execute these commands: + +* Check controller pods + ```shell + kubectl get pods -n dell-replication-controller + ``` + Pods should be `READY` and `RUNNING` +* Check that controller config map is properly populated + ```shell + kubectl get cm -n dell-replication-controller dell-replication-controller-config -o yaml + ``` + `data` field should be properly populated with cluster-id of your choosing and, if using multi-cluster + installation, your `targets:` parameter should be populated by a list of target clusters IDs. + + +If you don't have something installed or something is out-of-place, please refer to installation instructions in [installation-repctl](../install-repctl) or [installation](../installation). + +### Installing Driver With Replication Module + +To install the driver with replication enabled, you need to ensure you have set +helm parameter `controller.replication.enabled` in your copy of example `values.yaml` file +(usually called `my-unity-settings.yaml`, `myvalues.yaml` etc.). + +Here is an example of what that would look like: +```yaml +... +# controller: configure controller specific parameters +controller: + ... + # replication: allows to configure replication + replication: + enabled: true + image: dellemc/dell-csi-replicator:v1.2.0 + replicationContextPrefix: "unity" + replicationPrefix: "replication.storage.dell.com" +... +``` +You can leave other parameters like `image`, `replicationContextPrefix`, and `replicationPrefix` as they are. + +After enabling the replication module, you can continue to install the CSI driver for Unity following the usual installation procedure. Just ensure you've added the necessary array connection information to secret. + +> **_NOTE:_** you need to install your driver on ALL clusters where you want to use replication. Both arrays must be accessible from each cluster. + + +### Creating Storage Classes + +To provision replicated volumes, you need to create adequately configured storage classes on both the source and target clusters. + +A pair of storage classes on the source, and target clusters would be essentially `mirrored` copies of one another. +You can create them manually or with the help of `repctl`. + +#### Manual Storage Class Creation + +You can find a sample replication enabled storage class in the driver repository [here](https://github.com/dell/csi-unity/blob/main/samples/storageclass/unity-replication.yaml). + +It will look like this: +```yaml +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: unity-replication +provisioner: csi-unity.dellemc.com +reclaimPolicy: Delete +volumeBindingMode: Immediate +parameters: + replication.storage.dell.com/isReplicationEnabled: "true" + replication.storage.dell.com/remoteStorageClassName: "unity-replication" + replication.storage.dell.com/remoteClusterID: "target" + replication.storage.dell.com/remoteSystem: "APM000000002" + replication.storage.dell.com/rpo: "5" + replication.storage.dell.com/ignoreNamespaces: "false" + replication.storage.dell.com/volumeGroupPrefix: "csi" + replication.storage.dell.com/remoteStoragePool: pool_002 + replication.storage.dell.com/remoteNasServer: nas_124 + arrayId: "APM000000001" + protocol: "NFS" + storagePool: pool_001 + nasServer: nas_123 +``` + +Let's go through each parameter and what it means: +* `replication.storage.dell.com/isReplicationEnabled` if set to `true`, will mark this storage class as replication enabled, + just leave it as `true`. +* `replication.storage.dell.com/remoteStorageClassName` points to the name of the remote storage class. If you are using replication with the multi-cluster configuration you can make it the same as the current storage class name. +* `replication.storage.dell.com/remoteClusterID` represents the ID of a remote cluster. It is the same id you put in the replication controller config map. +* `replication.storage.dell.com/remoteSystem` is the name of the remote system that should match whatever `clusterName` you called it in `unity-creds` secret. +* `replication.storage.dell.com/rpo` is an acceptable amount of data, which is measured in units of time, that may be lost due to a failure. +* `replication.storage.dell.com/ignoreNamespaces`, if set to `true` Unity driver, it will ignore in what namespace volumes are created and put every volume created using this storage class into a single volume group. +* `replication.storage.dell.com/volumeGroupPrefix` represents what string would be appended to the volume group name to differentiate them. +* `arrayId` is a unique identifier of the storage array you specified in array connection secret. +* `nasServer` id of the Nas server of local array to which the allocated volume will belong. +* `storagePool` is the storage pool of the local array. + +After figuring out how storage classes would look, you just need to go and apply them to your Kubernetes clusters with `kubectl`. + +#### Storage Class creation with `repctl` + +`repctl` can simplify storage class creation by creating a pair of mirrored storage classes in both clusters +(using a single storage class configuration) in one command. + +To create storage classes with `repctl` you need to fill up the config with necessary information. +You can find an example [here](https://github.com/dell/csm-replication/blob/main/repctl/examples/unity_example_values.yaml), copy it, and modify it to your needs. + +If you open this example you can see a lot of similar fields and parameters you can modify in the storage class. + +Let's use the same example from manual installation and see what config would look like: +```yaml +targetClusterID: "cluster-2" +sourceClusterID: "cluster-1" +name: "unity-replication" +driver: "unity" +reclaimPolicy: "Retain" +replicationPrefix: "replication.storage.dell.com" +remoteRetentionPolicy: + RG: "Retain" + PV: "Retain" +parameters: + arrayId: + source: "APM000000001" + target: "APM000000002" + storagePool: + source: pool_123 + target: pool_124 + rpo: "0" + ignoreNamespaces: "false" + volumeGroupPrefix: "prefix" + protocol: "NFS" + nasServer: + source: nas_123 + target: nas_123 +``` + +After preparing the config, you can apply it to both clusters with `repctl`. Before you do this, ensure you've added your clusters to `repctl` via the `add` command. + +To create storage classes just run `./repctl create sc --from-config ` and storage classes would be applied to both clusters. + +After creating storage classes you can make sure they are in place by using `./repctl get storageclasses` command. + +### Provisioning Replicated Volumes + +After installing the driver and creating storage classes, you are good to create volumes using newly +created storage classes. + +On your source cluster, create a PersistentVolumeClaim using one of the replication-enabled Storage Classes. +The CSI Unity driver will create a volume on the array, add it to a VolumeGroup and configure replication +using the parameters provided in the replication enabled Storage Class. + +### Supported Replication Actions +The CSI Unity driver supports the following list of replication actions: +- FAILOVER_REMOTE +- UNPLANNED_FAILOVER_LOCAL +- REPROTECT_LOCAL +- SUSPEND +- RESUME +- SYNC diff --git a/content/docs/replication/replication-actions.md b/content/docs/replication/replication-actions.md index fa9502265c..96eece95f8 100644 --- a/content/docs/replication/replication-actions.md +++ b/content/docs/replication/replication-actions.md @@ -34,11 +34,11 @@ For e.g. - The following table lists details of what actions should be used in different Disaster Recovery workflows & the equivalent operation done on the storage array: {{}} -| Workflow | Actions | PowerMax | PowerStore | PowerScale | -| ------------------- | ----------------------------------- | --------------------- | -------------------------------------- | ---------------------------------------------- | -| Planned Migration | FAILOVER_LOCAL
FAILOVER_REMOTE | symrdf failover -swap | FAILOVER (no REPROTECT after FAILOVER) | allow_writes on target, disable local policy | -| Reprotect | REPROTECT_LOCAL
REPROTECT_REMOTE | symrdf resume/est | REPROTECT | enable local policy, disallow_writes on remote | -| Unplanned Migration | UNPLANNED_FAILOVER_LOCAL
UNPLANNED_FAILOVER_REMOTE | symrdf failover -force | FAILOVER (at target site) | break association on target | +| Workflow | Actions | PowerMax | PowerStore | PowerScale | Unity | +| ------------------- | ----------------------------------- | --------------------- | -------------------------------------- | ---------------------------------------------- |---------------------------------------| +| Planned Migration | FAILOVER_LOCAL
FAILOVER_REMOTE | symrdf failover -swap | FAILOVER (no REPROTECT after FAILOVER) | allow_writes on target, disable local policy | FAILOVER (no REPROTECT after FAILOVER)| +| Reprotect | REPROTECT_LOCAL
REPROTECT_REMOTE | symrdf resume/est | REPROTECT | enable local policy, disallow_writes on remote | REPROTECT | +| Unplanned Migration | UNPLANNED_FAILOVER_LOCAL
UNPLANNED_FAILOVER_REMOTE | symrdf failover -force | FAILOVER (at target site) | break association on target | FAILOVER (at target site) | {{
}} ### Maintenance Actions @@ -46,11 +46,11 @@ These actions can be run at any site and are used to change the replication link The following table lists the supported maintenance actions and the equivalent operation done on the storage arrays {{}} -| Action | Description | PowerMax | PowerStore | PowerScale | -|-----------|--------------------------------------|----------------|------------|----------------------| -| SUSPEND | Temporarily suspend
replication | symrdf suspend | PAUSE | disable local policy | -| RESUME | Resume replication | symrdf resume | RESUME | enable local policy | -| SYNC | Synchronize all changes
from source to target | symrdf establish | SYNCHRONIZE NOW | start syncIQ job | +| Action | Description | PowerMax | PowerStore | PowerScale | Unity | +|-----------|--------------------------------------|----------------|------------|----------------------|--------| +| SUSPEND | Temporarily suspend
replication | symrdf suspend | PAUSE | disable local policy | PAUSE | +| RESUME | Resume replication | symrdf resume | RESUME | enable local policy | RESUME | +| SYNC | Synchronize all changes
from source to target | symrdf establish | SYNCHRONIZE NOW | start syncIQ job | SYNC | {{
}} ### How to perform actions From e0f6b51bfbd093ca4617c87b2bb6d7d16a8019f7 Mon Sep 17 00:00:00 2001 From: Trevor Dawe Date: Mon, 15 Aug 2022 10:47:16 -0300 Subject: [PATCH 10/55] Added documentation about requesting a license (#310) --- content/docs/license/_index.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 content/docs/license/_index.md diff --git a/content/docs/license/_index.md b/content/docs/license/_index.md new file mode 100644 index 0000000000..ec7bd9d734 --- /dev/null +++ b/content/docs/license/_index.md @@ -0,0 +1,20 @@ +--- +title: "License" +linkTitle: "License" +weight: 12 +Description: > + Dell Container Storage Modules (CSM) License +--- + +The tech-preview releases of [Container Storage Modules](https://github.com/dell/csm) for Application Mobility and Encryption require a license. This section details how to request a license. + +## Requesting a License +1. Request a license using the [Container Storage Modules License Request](https://app.smartsheet.com/b/form/5e46fad643874d56b1f9cf4c9f3071fb) by providing these details: +- **Full Name**: Full name of the person requesting the license +- **Email Address**: The license will be emailed to this email address +- **Company / Organization**: Company or organization where the license will be used +- **License Type**: Select either *Application Mobility* or *Encryption*, depending on the CSM module that will be used with the license +- **List of kube-system namespace UIDs**: The license will only function on the provided list of Kubernetes clusters. Find the UID of the kube-system namespace using `kubectl get ns kube-system -o yaml` or similar `oc` command. Provide as a comma separated list of UIDs. +- (Optional) **Send me a copy of my responses**: A copy of the license request will be sent to the provided email address +2. After submitting the form, a response will be provided within several business days with an attachment containing the license. +3. Refer to the specific CSM module documentation for adding the license to the Kubernetes cluster. \ No newline at end of file From eec4bbc18687f8e35762a793fb287241d44efa4f Mon Sep 17 00:00:00 2001 From: JacobGros Date: Tue, 16 Aug 2022 13:46:58 -0400 Subject: [PATCH 11/55] Fix upgrade docs pflex (#309) --- .../docs/csidriver/troubleshooting/powerflex.md | 1 + .../csidriver/upgradation/drivers/powerflex.md | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/content/docs/csidriver/troubleshooting/powerflex.md b/content/docs/csidriver/troubleshooting/powerflex.md index 373605cc8e..f53deb66cd 100644 --- a/content/docs/csidriver/troubleshooting/powerflex.md +++ b/content/docs/csidriver/troubleshooting/powerflex.md @@ -22,6 +22,7 @@ description: Troubleshooting PowerFlex Driver | Volume metrics are missing | Enable [Volume Health Monitoring](../../features/powerflex#volume-health-monitoring) | | When a node goes down, the block volumes attached to the node cannot be attached to another node | This is a known issue and has been reported at https://github.com/kubernetes-csi/external-attacher/issues/215. Workaround:
1. Force delete the pod running on the node that went down
2. Delete the volumeattachment to the node that went down.
Now the volume can be attached to the new node. | | CSI-PowerFlex volumes cannot mount; are being recognized as multipath devices | CSI-PowerFlex does not support multipath; to fix:
1. Remove any multipath mapping involving a powerflex volume with `multipath -f `
2. Blacklist CSI-PowerFlex volumes in multipath config file | + | When attempting a driver upgrade, you see: ```spec.fsGroupPolicy: Invalid value: "xxx": field is immutable``` | You cannot upgrade between drivers with different fsGroupPolicies. See [upgrade documentation](../../upgradation/drivers/powerflex) for more details | >*Note*: `vxflexos-controller-*` is the controller pod that acquires leader lease diff --git a/content/docs/csidriver/upgradation/drivers/powerflex.md b/content/docs/csidriver/upgradation/drivers/powerflex.md index 5c181f183e..75fbe21a34 100644 --- a/content/docs/csidriver/upgradation/drivers/powerflex.md +++ b/content/docs/csidriver/upgradation/drivers/powerflex.md @@ -23,6 +23,20 @@ You can upgrade the CSI Driver for Dell PowerFlex using Helm or Dell CSI Operato - To update any installation parameter after the driver has been installed, change the `myvalues.yaml` file and run the install script with the option _\-\-upgrade_, for example: `./csi-install.sh --namespace vxflexos --values ./myvalues.yaml --upgrade`. - The logging configuration from v1.5 will not work in v2.1, since the log configuration parameters are now set in the values.yaml file located at helm/csi-vxflexos/values.yaml. Please set the logging configuration parameters in the values.yaml file. +- You cannot upgrade between drivers with different fsGroupPolicies. To check the current driver's fsGroupPolicy, use this command: +``` kubectl describe csidriver csi-vxflexos.dellemc.com``` +and check the "Spec" section: +``` +... +Spec: + Attach Required: true + Fs Group Policy: ReadWriteOnceWithFSType + Pod Info On Mount: true + Requires Republish: false + Storage Capacity: false +... +``` + ## Upgrade using Dell CSI Operator: **Note:** Upgrading the Operator does not upgrade the CSI Driver. From 4f72e66fd9bdc46af1c606553f89c61966d64188 Mon Sep 17 00:00:00 2001 From: Randeep Sharma <92301596+randeepsharma@users.noreply.github.com> Date: Wed, 17 Aug 2022 17:29:48 +0530 Subject: [PATCH 12/55] csi powerscale 2.4 related updates (#313) * doc-update-2.4-powerscale-driver * update-label-resiliency --- content/docs/csidriver/installation/helm/isilon.md | 8 ++++---- content/docs/csidriver/release/powerscale.md | 8 ++------ content/docs/csidriver/upgradation/drivers/isilon.md | 4 ++-- content/docs/resiliency/_index.md | 8 +++++++- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/content/docs/csidriver/installation/helm/isilon.md b/content/docs/csidriver/installation/helm/isilon.md index d1ba801503..f0f38f9452 100644 --- a/content/docs/csidriver/installation/helm/isilon.md +++ b/content/docs/csidriver/installation/helm/isilon.md @@ -121,7 +121,7 @@ CRDs should be configured during replication prepare stage with repctl as descri ## Install the Driver **Steps** -1. Run `git clone -b v2.3.0 https://github.com/dell/csi-powerscale.git` to clone the git repository. +1. Run `git clone -b v2.4.0 https://github.com/dell/csi-powerscale.git` to clone the git repository. 2. Ensure that you have created the namespace where you want to install the driver. You can run `kubectl create namespace isilon` to create a new one. The use of "isilon" as the namespace is just an example. You can choose any name for the namespace. 3. Collect information from the PowerScale Systems like IP address, IsiPath, username, and password. Make a note of the value for these parameters as they must be entered in the *secret.yaml*. 4. Copy *the helm/csi-isilon/values.yaml* into a new location with name say *my-isilon-settings.yaml*, to customize settings for installation. @@ -267,7 +267,7 @@ The CSI driver for Dell PowerScale version 1.5 and later, `dell-csi-helm-install ### What happens to my existing storage classes? -*Upgrading from CSI PowerScale v2.2 driver*: +*Upgrading from CSI PowerScale v2.3 driver*: The storage classes created as part of the installation have an annotation - "helm.sh/resource-policy": keep set. This ensures that even after an uninstall or upgrade, the storage classes are not deleted. You can continue using these storage classes if you wish so. *NOTE*: @@ -289,9 +289,9 @@ Starting CSI PowerScale v1.6, `dell-csi-helm-installer` will not create any Volu ### What happens to my existing Volume Snapshot Classes? -*Upgrading from CSI PowerScale v2.2 driver*: +*Upgrading from CSI PowerScale v2.3 driver*: The existing volume snapshot class will be retained. *Upgrading from an older version of the driver*: -It is strongly recommended to upgrade the earlier versions of CSI PowerScale to 1.6 or higher before upgrading to 2.2. +It is strongly recommended upgrading the earlier versions of CSI PowerScale to 1.6 or higher before upgrading to 2.3. diff --git a/content/docs/csidriver/release/powerscale.md b/content/docs/csidriver/release/powerscale.md index 1a14c62bb6..4aa05ca21a 100644 --- a/content/docs/csidriver/release/powerscale.md +++ b/content/docs/csidriver/release/powerscale.md @@ -3,15 +3,11 @@ title: PowerScale description: Release notes for PowerScale CSI driver --- -## Release Notes - CSI Driver for PowerScale v2.3.0 +## Release Notes - CSI Driver for PowerScale v2.4.0 ### New Features/Changes -- Removed beta volumesnapshotclass sample files. -- Added support for Kubernetes 1.24. -- Added support to increase volume path limit. -- Added support for OpenShift 4.10. -- Added support for CSM Resiliency sidecar via Helm. +- Added support to add client only to root clients when RO volume is created from snapshot and RootClientEnabled is set to true. ### Fixed Issues diff --git a/content/docs/csidriver/upgradation/drivers/isilon.md b/content/docs/csidriver/upgradation/drivers/isilon.md index 75fca2acda..5fcdd65f99 100644 --- a/content/docs/csidriver/upgradation/drivers/isilon.md +++ b/content/docs/csidriver/upgradation/drivers/isilon.md @@ -8,12 +8,12 @@ Description: Upgrade PowerScale CSI driver --- You can upgrade the CSI Driver for Dell PowerScale using Helm or Dell CSI Operator. -## Upgrade Driver from version 2.2.0 to 2.3.0 using Helm +## Upgrade Driver from version 2.3.0 to 2.4.0 using Helm **Note:** While upgrading the driver via helm, controllerCount variable in myvalues.yaml can be at most one less than the number of worker nodes. **Steps** -1. Clone the repository using `git clone -b v2.3.0 https://github.com/dell/csi-powerscale.git`, copy the helm/csi-isilon/values.yaml into a new location with a custom name say _my-isilon-settings.yaml_, to customize settings for installation. Edit _my-isilon-settings.yaml_ as per the requirements. +1. Clone the repository using `git clone -b v2.4.0 https://github.com/dell/csi-powerscale.git`, copy the helm/csi-isilon/values.yaml into a new location with a custom name say _my-isilon-settings.yaml_, to customize settings for installation. Edit _my-isilon-settings.yaml_ as per the requirements. 2. Change to directory dell-csi-helm-installer to install the Dell PowerScale `cd dell-csi-helm-installer` 3. Upgrade the CSI Driver for Dell PowerScale using following command: diff --git a/content/docs/resiliency/_index.md b/content/docs/resiliency/_index.md index ab043bc23d..e945bea855 100644 --- a/content/docs/resiliency/_index.md +++ b/content/docs/resiliency/_index.md @@ -144,7 +144,13 @@ pmtu3 podmontest-0 1/1 Running 0 3m6s ... ``` - CSM for Resiliency may also generate events if it is unable to cleanup a pod for some reason. For example, it may not clean up a pod because the pod is still doing I/O to the array. + CSM for Resiliency may also generate events if it is unable to clean up a pod for some reason. For example, it may not clean up a pod because the pod is still doing I/O to the array. + + Similarly, the label selector for csi-powerscale and csi-unity would be as shown respectively. + ``` + labelSelector: {map[podmon.dellemc.com/driver:csi-isilon] + labelSelector: {map[podmon.dellemc.com/driver:csi-unity] + ``` #### Important Before putting an application into production that relies on CSM for Resiliency monitoring, it is important to do a few test failovers first. To do this take the node that is running the pod offline for at least 2-3 minutes. Verify that there is an event message similar to the one above is logged, and that the pod recovers and restarts normally with no loss of data. (Note that if the node is running many CSM for Resiliency protected pods, the node may need to be down longer for CSM for Resiliency to have time to evacuate all the protected pods.) From 3e8db64dbfcce446c83659283ff354676e169cbe Mon Sep 17 00:00:00 2001 From: Yamunadevi N Shanmugam <82038610+shanmydell@users.noreply.github.com> Date: Wed, 17 Aug 2022 19:49:02 +0530 Subject: [PATCH 13/55] Juniper Support for PowerMax (#317) --- content/docs/authorization/_index.md | 2 +- content/docs/csidriver/_index.md | 2 +- content/docs/csidriver/release/powermax.md | 11 +++++++---- content/docs/replication/_index.md | 2 +- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/content/docs/authorization/_index.md b/content/docs/authorization/_index.md index 744d4918eb..b3651b46fa 100644 --- a/content/docs/authorization/_index.md +++ b/content/docs/authorization/_index.md @@ -43,7 +43,7 @@ The following diagram shows a high-level overview of CSM for Authorization with {{}} | | PowerMax | PowerFlex | PowerScale | |---------------|:----------------:|:-------------------:|:----------------:| -| Storage Array |5978.479.479, 5978.711.711, Unisphere 9.2| 3.5.x, 3.6.x | OneFS 8.1, 8.2, 9.0, 9.1, 9.2, 9.3 | +| Storage Array |5978.479.479, 5978.711.711, 6079.xxx.xxx, Unisphere 10.0| 3.5.x, 3.6.x | OneFS 8.1, 8.2, 9.0, 9.1, 9.2, 9.3 | {{
}} ## Supported CSI Drivers diff --git a/content/docs/csidriver/_index.md b/content/docs/csidriver/_index.md index 4db526b8be..1aa5b7126f 100644 --- a/content/docs/csidriver/_index.md +++ b/content/docs/csidriver/_index.md @@ -53,7 +53,7 @@ The CSI Drivers by Dell implement an interface between [CSI](https://kubernetes- {{}} | | PowerMax | PowerFlex | Unity XT | PowerScale | PowerStore | |---------------|:-------------------------------------------------------:|:----------------:|:--------------------------:|:----------------------------------:|:----------------:| -| Storage Array |5978.479.479, 5978.711.711
Unisphere 9.2| 3.5.x, 3.6.x | 5.0.7, 5.1.0, 5.1.2 | OneFS 8.1, 8.2, 9.0, 9.1, 9.2, 9.3, 9.4 | 1.0.x, 2.0.x, 2.1.x, 3.0 | +| Storage Array |5978.479.479, 5978.711.711, 6079.xxx.xxx
Unisphere 10.0 | 3.5.x, 3.6.x | 5.0.7, 5.1.0, 5.1.2 | OneFS 8.1, 8.2, 9.0, 9.1, 9.2, 9.3, 9.4 | 1.0.x, 2.0.x, 2.1.x, 3.0 | {{
}} ### Backend Storage Details {{}} diff --git a/content/docs/csidriver/release/powermax.md b/content/docs/csidriver/release/powermax.md index d769ade1c4..2287ced1ec 100644 --- a/content/docs/csidriver/release/powermax.md +++ b/content/docs/csidriver/release/powermax.md @@ -3,10 +3,16 @@ title: PowerMax description: Release notes for PowerMax CSI driver --- -## Release Notes - CSI PowerMax v2.3.0 +## Release Notes - CSI PowerMax v2.4.0 + +> Note: Starting from CSI v2.4.0, Only Unisphere 10.0 REST endpoints are supported. It is mandatory that Unisphere should be updated to 10.0. ### New Features/Changes - Online volume expansion for replicated volumes. +- Added support for PowerMax Juniper release +- Removed 9.x Unisphere REST endpoints support. +- Added 10.0 Unisphere REST endpoints support. +- Automatic SRDF group creation for PowerMax arrays (Juniper release and above). ### Fixed Issues There are no fixed issues in this release. @@ -15,10 +21,7 @@ There are no fixed issues in this release. | Issue | Workaround | |-------|------------| -| Delete Volume fails with the error message: volume is part of masking view | This issue is due to limitations in Unisphere and occurs when Unisphere is overloaded. Currently, there is no workaround for this but it can be avoided by ensuring that Unisphere is not overloaded during such operations. The Unisphere team is assessing a fix for this in a future Unisphere release| -| Getting initiators list fails with context deadline error | The following error can occur during the driver installation if a large number of initiators are present on the array. There is no workaround for this but it can be avoided by deleting stale initiators on the array| | Unable to update Host: A problem occurred modifying the host resource | This issue occurs when the nodes do not have unique hostnames or when an IP address/FQDN with same sub-domains are used as hostnames. The workaround is to use unique hostnames or FQDN with unique sub-domains| -| GetSnapVolumeList fails with context deadline error | The following error can occur if a large number of snapshots are present on the array. There is no workaround for this but it can be avoided by deleting unused snapshots on the array| | When a node goes down, the block volumes attached to the node cannot be attached to another node | This is a known issue and has been reported at https://github.com/kubernetes-csi/external-attacher/issues/215. Workaround:
1. Force delete the pod running on the node that went down
2. Delete the volumeattachment to the node that went down.
Now the volume can be attached to the new node | | After expanding file system volume , new size is not getting reflected inside the container | This is a known issue and has been reported at https://github.com/dell/csm/issues/378 . Workaround : Remount the volumes
1. Edit the replica count as 0 in application StatefulSet
2. Change the replica count as 1 for same StatefulSet. | diff --git a/content/docs/replication/_index.md b/content/docs/replication/_index.md index 65333cac06..d630c2e89a 100644 --- a/content/docs/replication/_index.md +++ b/content/docs/replication/_index.md @@ -44,7 +44,7 @@ CSM for Replication provides the following capabilities: {{
}} | | PowerMax | PowerStore | PowerScale | |---------------|:-------------------:|:----------------:|:----------------:| -| Storage Array | 5978.479.479, 5978.711.711, Unisphere 9.2 | 1.0.x, 2.0.x, 2.1.x | OneFS 8.1, 8.2, 9.0, 9.1, 9.2, 9.3 | +| Storage Array | 5978.479.479, 5978.711.711, 6079.xxx.xxx, Unisphere 10.0 | 1.0.x, 2.0.x, 2.1.x | OneFS 8.1, 8.2, 9.0, 9.1, 9.2, 9.3 | {{
}} ## Supported CSI Drivers From a7dfdde50584efff6018769d4d81466aaa241ae9 Mon Sep 17 00:00:00 2001 From: alexemc <32580729+alexemc@users.noreply.github.com> Date: Wed, 17 Aug 2022 16:25:46 -0400 Subject: [PATCH 14/55] Encryption feature documentation. (#314) --- content/docs/_index.md | 1 + .../csidriver/installation/helm/isilon.md | 8 +- content/docs/references/_index.md | 2 +- content/docs/release/_index.md | 2 +- content/docs/secure/_index.md | 8 + content/docs/secure/encryption/_index.md | 125 +++++++++ content/docs/secure/encryption/deployment.md | 172 ++++++++++++ .../docs/secure/encryption/troubleshooting.md | 87 +++++++ .../docs/secure/encryption/uninstallation.md | 39 +++ content/docs/secure/encryption/vault.md | 244 ++++++++++++++++++ content/docs/support/_index.md | 2 +- content/docs/troubleshooting/_index.md | 2 +- 12 files changed, 686 insertions(+), 6 deletions(-) create mode 100644 content/docs/secure/_index.md create mode 100644 content/docs/secure/encryption/_index.md create mode 100644 content/docs/secure/encryption/deployment.md create mode 100644 content/docs/secure/encryption/troubleshooting.md create mode 100644 content/docs/secure/encryption/uninstallation.md create mode 100644 content/docs/secure/encryption/vault.md diff --git a/content/docs/_index.md b/content/docs/_index.md index 062384ed9b..2f370b263a 100644 --- a/content/docs/_index.md +++ b/content/docs/_index.md @@ -64,3 +64,4 @@ CSM is made up of multiple components including modules (enterprise capabilities | Observability v1.2| ✔️ | ❌ | ✔️ | ❌ | ❌ | | Replication v1.3| ❌ | ✔️ | ✔️ | ✔️ | ❌ | | Resiliency v1.2| ✔️ | ✔️ | ❌ | ❌ | ✔️ | +| Encryption v0.1.0| ❌ | ✔️ | ❌ | ❌ | ❌ | \ No newline at end of file diff --git a/content/docs/csidriver/installation/helm/isilon.md b/content/docs/csidriver/installation/helm/isilon.md index f0f38f9452..82354629ff 100644 --- a/content/docs/csidriver/installation/helm/isilon.md +++ b/content/docs/csidriver/installation/helm/isilon.md @@ -26,6 +26,7 @@ The following are requirements to be met before installing the CSI Driver for De - If enabling CSM for Authorization, please refer to the [Authorization deployment steps](../../../../authorization/deployment/) first - If enabling CSM for Replication, please refer to the [Replication deployment steps](../../../../replication/deployment/) first - If enabling CSM for Resiliency, please refer to the [Resiliency deployment steps](../../../../resiliency/deployment/) first +- If enabling Encryption, please refer to the [Encryption deployment steps](../../../../secure/encryption/deployment/) first ### Install Helm 3.0 @@ -175,9 +176,12 @@ CRDs should be configured during replication prepare stage with repctl as descri | proxyHost | Hostname of the csm-authorization server. | No | Empty | | skipCertificateValidation | A boolean that enables/disables certificate validation of the csm-authorization server. | No | true | | **podmon** | Podmon is an optional feature under development and tech preview. Enable this feature only after contact support for additional information. | - | - | - | enabled | A boolean that enable/disable podmon feature. | No | false | + | enabled | A boolean that enables/disables podmon feature. | No | false | | image | image for podmon. | No | " " | - + | **encryption** | [Encryption](../../../../secure/encryption/deployment) is an optional feature to apply encryption to CSI volumes. | - | - | + | enabled | A boolean that enables/disables Encryption feature. | No | false | + | image | Encryption driver image name. | No | "dellemc/csm-encryption:v0.1.0" | + *NOTE:* - ControllerCount parameter value must not exceed the number of nodes in the Kubernetes cluster. Otherwise, some of the controller pods remain in a "Pending" state till new nodes are available for scheduling. The installer exits with a WARNING on the same. diff --git a/content/docs/references/_index.md b/content/docs/references/_index.md index 28cae60329..ce3be78438 100644 --- a/content/docs/references/_index.md +++ b/content/docs/references/_index.md @@ -1,7 +1,7 @@ --- title: "References" linkTitle: "References" -weight: 13 +weight: 14 Description: > Dell Technologies (Dell) Container Storage Modules (CSM) References --- diff --git a/content/docs/release/_index.md b/content/docs/release/_index.md index 97a5c32dc9..dd53e27de4 100644 --- a/content/docs/release/_index.md +++ b/content/docs/release/_index.md @@ -1,7 +1,7 @@ --- title: "Release notes" linkTitle: "Release notes" -weight: 10 +weight: 12 Description: > Dell Container Storage Modules (CSM) release notes --- diff --git a/content/docs/secure/_index.md b/content/docs/secure/_index.md new file mode 100644 index 0000000000..48031f8877 --- /dev/null +++ b/content/docs/secure/_index.md @@ -0,0 +1,8 @@ +--- +title: "Secure" +linkTitle: "Secure" +weight: 9 +Description: > + Security features for Dell CSI drivers +--- +Secure is a suite of Dell Container Storage Modules (CSM) that brings security related features to Kubernetes users of Dell storage products. diff --git a/content/docs/secure/encryption/_index.md b/content/docs/secure/encryption/_index.md new file mode 100644 index 0000000000..4f063cc8d2 --- /dev/null +++ b/content/docs/secure/encryption/_index.md @@ -0,0 +1,125 @@ +--- +title: "Encryption" +linkTitle: "Encryption" +weight: 1 +Description: > + CSI Volumes Encryption +--- +Encryption provides the capability to encrypt user data residing on volumes created by Dell CSI Drivers. + +> **NOTE:** This tech-preview release is not intended for use in production environment. + +> **NOTE:** Encryption requires a time-based license to create new encrypted volumes. Request a [trial license](../../license) prior to deployment. +> +> After the license expiration, existing encrypted volume can still be unlocked and used, but no new encrypted volumes can be created. + +The volume data is encrypted on the Kubernetes worker host running the application workload, transparently for the application. + +Under the hood, *gocryptfs*, an open-source FUSE based encryptor, is used to encrypt both files content and the names of files and directories. + +Files content is encrypted using AES-256-GCM and names are encrypted using AES-256-EME. + +*gocryptfs* needs a password to initialize and to unlock the encrypted file system. +Encryption generates 32 random bytes for the password and stores them in Hashicorp Vault. + +For detailed information on the cryptography behind gocryptfs, see [gocryptfs Cryptography](https://nuetzlich.net/gocryptfs/forward_mode_crypto). + +When a CSI Driver is installed with the Encryption feature enabled, two provisioners are registered in the cluster: + +#### Provisioner for unencrypted volumes + +Provides all regular capabilities supported by the storage driver. + +#### Provisioner for encrypted volumes + +Effectively proxies the storage driver and adds the encryption capability. The rest of the document relates to this provisioner. + +## Capabilities + +{{}} +| Feature | PowerScale | +| ------- | ---------- | +| Dynamic provisionings of new volumes | Yes | +| Static provisioning of new volumes | Yes | +| Volume snapshot creation | Yes | +| Volume creation from snapshot | Yes | +| Volume cloning | Yes | +| Volume expansion | Yes | +| Encrypted volume unlocking in a different cluster | Yes | +| User file and directory names encryption | Yes | +{{
}} + +## Limitations + +- Only file system volumes are supported. +- Existing volumes with data cannot be encrypted.
+ **Workaround:** create a new encrypted volume of the same size and copy/move the data from the original *unencrypted* volume to the new *encrypted* volume. +- Encryption cannot be disabled in-place.
+ **Workaround:** create a new unencrypted volume of the same size and copy/move the data from the original *encrypted* volume to the new *unencrypted* volume. +- Encrypted volume content can be seen in clear text through root access to the worker node or by obtaining shell access into the Encryption driver container. +- When deployed with PowerScale CSI driver, `controllerCount` has to be set to 1. +- No other CSM component can be enabled simultaneously with Encryption. +- The only supported authentication method for Vault is AppRole. +- Encryption secrets, config maps and encryption related values cannot be updated while the CSI driver is running: +the CSI driver must be restarted to pick up the change. + +## Supported Operating Systems/Container Orchestrator Platforms + +{{}} +| COP/OS | Supported Versions | +|-|-| +| Kubernetes | 1.22, 1.23, 1.24 | +| CentOS | 7.6 | +{{
}} + +## Supported Storage Platforms + +{{}} +| | PowerScale | +|---------------|------------| +| Storage Array | OneFS 9.0 | +{{
}} + +## Supported CSI Drivers + +Encryption supports these CSI drivers and versions: +{{}} +| Storage Array | CSI Driver | Supported Versions | +| ------------- | ---------- | ------------------ | +| CSI Driver for Dell PowerScale | [csi-powerscale](https://github.com/dell/csi-powerscale) | v2.4 + | +{{
}} + +### PowerScale + +When enabling Encryption for PowerScale CSI Driver, make sure these requirements are met: +- PowerScale CSI Driver uses root credentials for the storage array where encrypted volumes will be placed +- OneFS NFS export configuration does not have root user mapping enabled +- All other CSM features like Authorization, Replication, Resiliency are disabled +- Health Monitor feature is disabled +- CSI driver `controllerCount` is set to 1 + +## Hashicorp Vault Support + +**Supported Vault version is 1.9.3 and newer.** + +Vault server (or cluster) is typically deployed in a dedicated Kubernetes cluster, but for the purpose of Encryption, it can be located anywhere. +Even the simplest standalone single instance server with in-memory storage will suffice for testing. + +> **NOTE:** Properly deployed and configured Vault is crucial for security of the volumes encrypted with Encryption. +Please refer to the Hashicorp Vault documentation regarding recommended deployment options. + +> **CAUTION:** Compromised Vault server or Vault storage back-end may lead to unauthorized access to the volumes encrypted with Encryption. + +> **CAUTION:** Destroyed Vault storage back-end or the encryption key stored in it, will make it impossible to unlock the volume encrypted with Encryption. +Access to the data will be lost for ever. + +Refer to [Vault Configuration section](vault) for minimal configuration steps required to support Encryption and other configuration considerations. + +## Kubernetes Worker Hosts Requirements + +- Each Kubernetes worker host should have SSH server running. +- The server should have SSH public key authentication enabled for user *root*. +- The server should remain running all the time whenever an application with an encrypted volume is running on the host. +> **NOTE:** Stopping the SSH server on the worker host makes any encrypted volume attached to this host [inaccessible](troubleshooting#ssh-stopped). + + diff --git a/content/docs/secure/encryption/deployment.md b/content/docs/secure/encryption/deployment.md new file mode 100644 index 0000000000..3ec52fcb58 --- /dev/null +++ b/content/docs/secure/encryption/deployment.md @@ -0,0 +1,172 @@ +--- +title: "Deployment" +linkTitle: "Deployment" +weight: 1 +Description: > + Deployment. +--- +Encryption is enabled as part of the Dell CSI driver installation. The drivers can be installed either by a Helm chart or by the Dell CSI Operator. +In the tech preview release, Encryption can only be enabled via Helm chart installation. + +Except for additional Encryption related configuration outlined on this page, +the rest of the deployment process is described in the correspondent [CSI driver documentation](../../../csidriver/installation/helm). + +## Vault Server + +Hashicorp Vault must be [pre-configured](../vault) to support Encryption. The Vault server's IP address and port must be accessible +from the Kubernetes cluster where the CSI driver is to be deployed. + +## Helm Chart Values + +The drivers that support Encryption via Helm chart have an `encryption` block in their *values.yaml* file that looks like this: + +```yaml +encryption: + # enable: Enable/disable volume encryption feature + # Encryption cannot be enabled in tandem with resizer or authorization. + # Enable this feature only after contact support for additional information. + enabled: false + + # pluginName: The name of the provisioner to use when encryption is enabled. + pluginName: "sec-isilon.dellemc.com" + + # image: Encryption driver image name. + image: "dellemc/csm-encryption:v0.1.0" + + # imagePullPolicy: If specified, overrides the chart global imagePullPolicy. + imagePullPolicy: + + # logLevel: Log level of the encryption driver. + # Allowed values: "error", "warning", "info", "debug", "trace" + logLevel: "error" + + # livenessPort: HTTP liveness probe port number. + # Leave empty to disable the liveness probe. + # Example: 8080 + livenessPort: + + # extraArgs: Extra command line parameters to pass to the encryption driver. + # Allowed values: + # --sharedStorage - may be required by some applications to work properly. + # When set, performance is reduced, and hard links cannot be created. + # See the gocryptfs documentation for more details. + extraArgs: [] +``` + +| Parameter | Description | Required | Default | +| --------- | ----------- | -------- | ------- | +| enabled | Enable/disable volume encryption feature. | No | false | +| pluginName | The name of the provisioner to use when encryption is enabled. | No | "sec-isilon.dellemc.com" | +| image | Encryption driver image name. | No | "dellemc/csm-encryption:v0.1.0" | +| imagePullPolicy | If specified, overrides the chart global imagePullPolicy. | No | CSI driver global imagePullPolicy | +| logLevel | Log level of the encryption driver.
Allowed values: "error", "warning", "info", "debug, `"trace" | No | "error" | +| livenessPort | HTTP liveness probe port number. Leave empty to disable the liveness probe. | No | | +| extraArgs | Extra command line parameters to pass to the encryption driver.
Allowed values:
"\-\-sharedStorage" - may be required by some applications to work properly.
When set, performance is reduced and hard links cannot be created.
See the [gocryptfs documentation](https://github.com/rfjakob/gocryptfs/blob/v2.2.1/Documentation/MANPAGE.md#-sharedstorage) for more details. | No | [] | + +## Secrets and Config Maps + +Apart from any secrets and config maps described in the CSI driver documentation, these resources should be created for Encryption: + +### Secret *encryption-license* + +Request a trial license following instructions on the [License page](../../../license). You will be provided with a YAML file similar to: + +```yaml +apiVersion: v1 +data: + license: k1FXzMDZodGNnK4I12Alo4UvuhLd+ithRhuLz2eoIxlcMSfW0xJYWnBiNMvTUl8VdGmR5fsvs2L6KqPfpIJk4wOzCxQ9wfDIJuYqrwV0wi2F2lzb1Hkk7O7/4r8cblPdCRJWfbg8QFc2BVtl4PZ/pFkHZoZVCbhGDD1MsbI1CiKqva9r9TBfswSFnqv7p3QXgbqQov8/q/j2+sHcvFF3j4kx+q1PzXoRNxwuTQaP4VAvipsQNAU5yV2dos2hs4Y/Ltbtreu/vrRGUaxvPbass1vUtIOJnvKkfbp53j8PFJGGISMYvYylUiD7TpoamxT/1I6mkjgRds+tEciMvutqDpmKEtdyp3vBjt4Sgd07ptvsdBJlyRAYb8ZPX9vXr4Ws +kind: Secret +metadata: + name: edit_name + namespace: edit_namespace +``` + +Set `name` to `"encryption-license"` and `namespace` to your driver namespace and apply the file: + +```shell +kubectl apply -f +``` + +### Secret *vault-auth* + +A secret with the AppRole credentials used by Encryption to authenticate to the Vault server. + +> Set `role_id` and `secret_id` to the values provided by the Vault server administrator. + +> If a self-managed test Vault instance is used, generate role ID and secret ID following [these steps](../vault/#set-role-id-and-secret-id-to-the-role). + +```shell +cat >auth.json <", + "secret_id": "" +} +EOF + +kubectl create secret generic vault-auth -n --from-file=auth.json -o yaml --dry-run=client | kubectl apply -f - + +rm -f auth.json +``` +In this release, Encryption does not pick up modifications to this secret while the CSI driver is running, unless it needs to re-login which happens at: +- CSI Driver startup +- an authentication error from the Vault server +- client token expiration + +In all other cases, to apply new values in the secret (e.g., to use another role), the CSI driver must be restarted. + +### Secret *vault-cert* + +A secret with TLS certificates used by Encryption to communicate with the Vault server. + +> Files *server-ca.crt*, *client.crt* and *client.key* should be in PEM format. + +```shell +kubectl create secret generic vault-cert -n \ + --from-file=server-ca.crt --from-file=client.crt --from-file=client.key \ + -o yaml --dry-run=client | kubectl apply -f - +``` +In this release, Encryption does not pick up modifications to this secret while the CSI driver is running. +To apply new values in the secret (e.g., to update the client certificate), the CSI driver must be restarted. + +### ConfigMap *vault-client-conf* + +A config map with settings used by Encryption to communicate with the Vault server. + +> Populate *client.json* with your settings. + +```shell +cat >client.json <:8400", + "kv_engine_path": "/dea-keys", + "tls_config": + { + "client_crt": "/etc/dea/vault/client.crt", + "client_key": "/etc/dea/vault/client.key", + "server_ca": "/etc/dea/vault/server-ca.crt" + } +} +EOF + +kubectl create configmap vault-client-conf -n \ + --from-file=client.json -o yaml --dry-run=client | kubectl apply -f - + +rm -f client.json +``` + +These fields are available for use in *client.json*: + +| client.json field | Description | Required | Default | +| ----------------- | ----------- | -------- | ------- | +| auth_type | Authentication type used to authenticate to the Vault server. Currently, the only supported type is "approle". | Yes | | +| auth_conf_file | Set to "/etc/dea/vault/auth.json" | Yes | | +| auth_timeout | Defines in how many seconds key requests to the Vault server fail if there is no valid authentication token. | No | 5 | +| lease_duration_margin | Defines how many seconds in advance the authentication token lease will be renewed. This value should accommodate network and processing delays. | No | 15 | +| lease_increase | Defines the number of seconds used in the authentication token renew call. This value is advisory and may be disregarded by the server. | No | 3600 | +| vault_addr | URL to use for REST calls to the Vault server. It must start with "https". | Yes | | +| kv_engine_path | The path to which the Key/Value secret engine is mounted on the Vault server. | Yes | | +| tls_config.client_crt | Set to "/etc/dea/vault/client.crt" | Yes | | +| tls_config.client_key | Set to "/etc/dea/vault/client.key" | Yes | | +| tls_config.client_ca | Set to "/etc/dea/vault/server-ca.crt" | Yes | | diff --git a/content/docs/secure/encryption/troubleshooting.md b/content/docs/secure/encryption/troubleshooting.md new file mode 100644 index 0000000000..14806ce9c6 --- /dev/null +++ b/content/docs/secure/encryption/troubleshooting.md @@ -0,0 +1,87 @@ +--- +title: "Troubleshooting" +linkTitle: "Troubleshooting" +weight: 4 +Description: > + Troubleshooting. +--- + +## Logs and Events + +The first and in most cases sufficient step in troubleshooting issues with a CSI driver that has Encryption enabled +is exploring logs of the Encryption driver and related Kubernetes components. These are some useful log sources: + +### CSI Driver Containers Logs + +The driver creates several *controller* and *node* pods. They can be listed with `kubectl -n get pods`. +The output will look similar to: + +``` +NAME READY STATUS RESTARTS AGE +isi-controller-84f697c874-2j6d4 10/10 Running 0 16h +isi-node-4gtwf 4/4 Running 0 16h +isi-node-lnzws 4/4 Running 0 16h +``` + +List containers in pod `isi-node-4gtwf` with `kubectl -n logs isi-node-4gtwf`. +Each pod has containers called `driver` which is the storage driver container and `driver-sec` which is the Encryption driver container. +These container's logs tend to provide the most important information, but other containers may give a hint too. +View the logs of `driver-sec` in `isi-node-4gtwf` with `kubectl -n logs isi-node-4gtwf driver-sec`. +The log level of this container can be changed by setting value [encryption.logLevel](../deployment#helm-chart-values) and restarting the driver. + +Often it is necessary to see the logs produced on a specific Kubernetes worker host. +To find which *node* pod is running on which worker host, use `kubectl -n get pods -o wide`. + +### PersistentVolume, PersistentVolumeClaim and Application Pod Events + +Some errors may be logged to the related resource events that can be viewed with `kubectl describe` command for that resource. + +### Vault Server Logs + +Some errors related to communication with the Vault server and key requests may be logged on the Vault server side. +If you run a [test instance of the server in a Docker container](../vault#vault-server-installation) you can view the logs with `docker logs vault-server`. + +## Typical Failure Reasons + +#### Incorrect Vault related configuration + +- check [logs](#logs-and-events) +- check [vault-auth secret](../deployment#secret-vault-auth) +- check [vault-cert secret](../deployment#secret-vault-cert) +- check [vault-client-conf config map](../deployment#configmap-vault-client-conf) + +#### Incorrect Vault server-side configuration + +- check [logs](#logs-and-events) +- check [Vault server configuration](../vault#minimum-server-configuration) + +#### Expired AppRole secret ID + +- [reset the role secret ID](../vault#set-role-id-and-secret-id-to-the-role) + +#### Incorrect CSI driver configuration + +- check the related CSI driver [troubleshooting steps](../../../csidriver/troubleshooting) + +#### SSH server is stopped/restarted on the worker host {#ssh-stopped} + +This may manifest in: +- failure to start the CSI driver +- failure to create a new encrypted volume +- failure to access an encrypted volume (IO errors) + +Resolution: +- check SSH server is running on all worker host +- stop all workloads that use encrypted volumes on the node, then restart them + +#### No license provided, or license expired + +This may manifest in: +- failure to start the CSI driver +- failure to create a new encrypted volume + +Resolution: +- obtain a [new valid license](../../../license) +- check the license is for the cluster on which the encrypted volumes are created +- check [encryption-license secret](../deployment#secret-encryption-license) + diff --git a/content/docs/secure/encryption/uninstallation.md b/content/docs/secure/encryption/uninstallation.md new file mode 100644 index 0000000000..fa7d366d97 --- /dev/null +++ b/content/docs/secure/encryption/uninstallation.md @@ -0,0 +1,39 @@ +--- +title: "Uninstallation" +linkTitle: "Uninstallation" +weight: 2 +Description: > + Uninstallation. +--- + +## Cleanup Kubernetes Worker Hosts + +Login to each worker host and perform these steps: + +#### Remove directory */root/.driver-sec* + +This directory was created when a CSI driver with Encryption first ran on the host. + +#### Remove entry from */root/.ssh/authorized_keys* + +This is an entry added when a CSI driver with Encryption first ran on the host. +It ends with `driver-sec`, similarly to: + +``` +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDGvSWmTL7NORRDPAvtbMbvoHUBLnen9bRtJePbGk1boJ4XK39Qdvo2zFHZ/6t2+dSL7xKo2kcxX3ovj3RyOPuqNCob +5CLYyuIqduooy+eSP8S1i0FbiDHvH/52yHglnGkBb8g8fmoMolYGW7k35mKOEItKlXruP5/hpP0rBDfBfrxe/K4aHicxv6GylP+uTSBjdj7bZrdgRAIlmDyIdvU4oU6L +K9PDW5rufArlrZHaToHXLMbXbqswD08rgFt3tLiXjj2GgvU8ifWYYAeuijMp+hwwE0dYv45EgUNTlXUa7x2STFZrVn8MFkLKjtZ60Qjbb4JoijRpBQ5XEUkW9UoeGbV2 +s+lCpZ2bMkmdda/0UC1ckvyrLkD0yQotb8gafizdX+WrQRE+iqUv/NQ2mrSEHtLgvuvgZ3myFU5chRv498YxglYZsAZUdCQI2hQt+7smjYMaM0V200UT741U9lIlYxza +ocI5t+n01dWeVOCSOH/Q3uXxHKnFvWVZh7m6583R9LfdGfwshsnx4CNz22kp69hzwBPxehR+U/VXkDUWnoQgI8NSPc0fFyU58yLHnl91XT9alz8qrkFK7oggKy5RRX7c +VQrpjsCPCu3fpVjvvwfspVOftbn/sNgY1J3lz0pdgvJ3yQs6pa+DODQyin5Rt//19rIGifPxi/Hk/k49Vw== driver-sec +``` + +It can be removed with `sed -i '/^ssh-rsa .* driver-sec$/d' /root/.ssh/authorized_keys`. + +## Remove Kubernetes Resources + +Remove [the resources that were created in Kubernetes cluster for Encryption](../deployment#secrets-and-config-maps). + +## Remove Vault Server Configuration + +Remove [the configuration created in the Vault server for Encryption](../vault#minimum-server-configuration). diff --git a/content/docs/secure/encryption/vault.md b/content/docs/secure/encryption/vault.md new file mode 100644 index 0000000000..f9dcc2521d --- /dev/null +++ b/content/docs/secure/encryption/vault.md @@ -0,0 +1,244 @@ +--- +title: "Vault Configuration" +linkTitle: "Vault Configuration" +weight: 3 +Description: > + Configuration requirements for Vault server. +--- + +## Vault Server Installation + +If there is already a Vault server available, skip to [Minimum Server Configuration](#minimum-server-configuration). + +If there is no Vault server available to use with Encryption, it can be installed in many ways following [Hashicorp Vault documentation](https://www.vaultproject.io/docs). + +For testing environment, however, a simple deployment suggested in this section may suffice. +It creates a standalone server with in-memory (non-persistent) storage, running in a Docker container. + +> **NOTE**: With in-memory storage, the encryption keys are permanently destroyed upon the server termination. + +#### Generate TLS certificates for server and client + +Create server CA private key and certificate: + +```shell +openssl req -x509 -sha256 -days 365 -newkey rsa:2048 -nodes \ + -subj "/CN=Vault Root CA" \ + -keyout server-ca.key \ + -out server-ca.crt +``` + +Create server private key and CSR: + +```shell +openssl req -newkey rsa:2048 -nodes \ + -subj "/CN=vault-demo-server" \ + -keyout server.key \ + -out server.csr +``` + +Create server certificate signed by the CA: + +> Replace `` with an IP address by which Encryption can reach the Vault server. +This may be the address of the Docker host where the Vault server will be running. +The same address should be used for `vault_addr` in [vault-client-conf](../deployment#configmap-vault-client-conf). + +```shell +cat > cert.ext < +EOF + +openssl x509 -req \ + -CA server-ca.crt -CAkey server-ca.key \ + -in server.csr \ + -out server.crt \ + -days 365 \ + -extfile cert.ext \ + -CAcreateserial + +cat server-ca.crt >> server.crt +``` + +Create client CA private key and certificate: + +```shell +openssl req -x509 -sha256 -days 365 -newkey rsa:2048 -nodes \ + -subj "/CN=Client Root CA" \ + -keyout client-ca.key \ + -out client-ca.crt +``` + +Create client private key and CSR: + +```shell +openssl req -newkey rsa:2048 -nodes \ + -subj "/CN=vault-client" \ + -keyout client.key \ + -out client.csr +``` + +Create client certificate signed by the CA: + +```shell +cat > cert.ext <> client.crt +``` + +#### Create server hcl file + +```shell +cat >server.hcl < Variable `CONF_DIR` below refers to the directory containing files *server.crt*, *server.key*, *client-ca.crt* and *server.hcl*. +```shell +VOL_DIR="$CONF_DIR" +VOL_DIR_D="/var/vault" +ROOT_TOKEN="DemoRootToken" +VAULT_IMG="vault:1.9.3" + +docker run --rm -d \ + --name="vault-server" \ + -p 8200:8200 -p 8400:8400 \ + -v $VOL_DIR:$VOL_DIR_D -w $VOL_DIR_D \ + -e VAULT_DEV_ROOT_TOKEN_ID=$ROOT_TOKEN \ + -e VAULT_ADDR="http://127.0.0.1:8200" \ + -e VAULT_TOKEN=$ROOT_TOKEN \ + $VAULT_IMG \ + sh -c 'vault server -dev -dev-listen-address 0.0.0.0:8200 -config=server.hcl' +``` + +## Minimum Server Configuration + +> **NOTE:** this configuration is a bare minimum to support Encryption and is not intended for use in production environment. +Refer to the [Hashicorp Vault documentation](https://www.vaultproject.io/docs) for recommended configuration options. + +> If a [test instance of Vault](#vault-server-installation) is used, the `vault` commands below can be executed in the Vault server container shell. +> To enter the shell, run `docker exec -it vault-server sh`. After completing the configuration process, exit the shell by typing `exit`. +> +> Alternatively, you can [download the vault binary](https://www.vaultproject.io/downloads) and run it anywhere. +> It will require two environment variables to communicate with the Vault server: +> - `VAULT_ADDR` - URL similar to `http://127.0.0.1:8200`. You may need to change the address in the URL to the address of +the Docker host where the server is running. +> - `VAULT_TOKEN` - Authentication token, e.g. the root token `DemoRootToken` used in the [test instance of Vault](#vault-server-installation). + +#### Enable Key/Value secret engine + +```shell +vault secrets enable -version=2 -path=dea-keys/ kv +vault write /dea-keys/config cas_required=true max_versions=1 +``` + +Key/Value secret engine is used to store encryption keys. Each encryption key is represented by a key-value entry. + +#### Enable AppRole authentication + +```shell +vault auth enable approle +``` + +#### Create a role + +```shell +vault write auth/approle/role/dea-role \ + secret_id_ttl=28d \ + token_num_uses=0 \ + token_ttl=1h \ + token_max_ttl=1h \ + token_explicit_max_ttl=10d \ + secret_id_num_uses=0 +``` + +TTL values here are chosen arbitrarily and can be changed to desired values. + +#### Create and assign a token policy to the role + +```shell +vault policy write dea-policy - < Secret ID has an expiration time after which it becomes invalid resulting in [authorization failure](../troubleshooting#expired-approle-secret-id). +> The expiration time for new secret IDs can be set in `secret_id_ttl` parameter when [the role is created](#create-a-role) or later on using +> `vault write auth/approle/role/dea-role/secret-id-ttl secret_id_ttl=24h`. + +## Token TTL Considerations + +Effective client token TTL is determined by the Vault server based on multiple factors which are described in the [Vault documentation](https://www.vaultproject.io/docs/concepts/tokens#token-time-to-live-periodic-tokens-and-explicit-max-ttls). + +With the default server settings, role level values control TTL in this way: + +`token_explicit_max_ttl=2h` - limits the client token TTL to 2 hours since it was originally issues as a result of login. This is a hard limit. + +`token_ttl=30m` - sets the default client token TTL to 30 minutes. 30 minutes are counted from the login time and from any following token renewal. +The client token will only be able to renew 3 times before reaching it total allowed TTL of 2 hours. + +Existing role values can be changed using `vault write auth/approle/role/dea-role token_ttl=30m token_explicit_max_ttl=2h`. + +> Selecting too short TTL values will result in excessive overhead in Encryption to remain authenticated to the Vault server. diff --git a/content/docs/support/_index.md b/content/docs/support/_index.md index 458bd392a5..54535f32f8 100644 --- a/content/docs/support/_index.md +++ b/content/docs/support/_index.md @@ -1,7 +1,7 @@ --- title: "Support" linkTitle: "Support" -weight: 11 +weight: 13 Description: > Dell Container Storage Modules (CSM) support --- diff --git a/content/docs/troubleshooting/_index.md b/content/docs/troubleshooting/_index.md index c07a2998c8..0d4d34349f 100644 --- a/content/docs/troubleshooting/_index.md +++ b/content/docs/troubleshooting/_index.md @@ -1,7 +1,7 @@ --- title: "Troubleshooting" linkTitle: "Troubleshooting" -weight: 10 +weight: 11 Description: > Dell Container Storage Modules (CSM) troubleshooting information --- From 9d57b4ed21959de7ed2b253c4b15b8812adb70e4 Mon Sep 17 00:00:00 2001 From: Bahubali Jain <66621574+bpjain2004@users.noreply.github.com> Date: Thu, 18 Aug 2022 12:33:24 +0530 Subject: [PATCH 15/55] dellctl- support cluster registration with uids (#311) --- content/docs/cli/_index.md | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/content/docs/cli/_index.md b/content/docs/cli/_index.md index ee500aee7f..25723e6ff5 100644 --- a/content/docs/cli/_index.md +++ b/content/docs/cli/_index.md @@ -93,10 +93,12 @@ Add one or more k8s clusters to be managed by dellctl ##### Flags ``` +Flags: + -n, --names strings cluster names -f, --files strings paths for kube config files + -u, --uids strings uids of the kube-system namespaces in the clusters --force forcefully add cluster -h, --help help for add - -n, --names strings cluster names ``` ##### Output @@ -105,7 +107,16 @@ Add one or more k8s clusters to be managed by dellctl # dellctl cluster add -n cluster1 -f ~/kubeconfigs/cluster1-kubeconfig INFO Adding clusters ... INFO Cluster: cluster1 - INFO Successfully added cluster cluster1 in /root/.dellctl/clusters folder. 5635 bytes copied + INFO Successfully added cluster cluster1 in /root/.dellctl/clusters/cluster1 folder. +``` + +Add a cluster with it's uid + +``` +# dellctl cluster add -n cluster2 -f ~/kubeconfigs/cluster2-kubeconfig -u "035133aa-5b65-4080-a813-34a7abe48180" + INFO Adding clusters ... + INFO Cluster: cluster2 + INFO Successfully added cluster cluster2 in /root/.dellctl/clusters/cluster2 folder. ``` @@ -165,9 +176,9 @@ List all clusters currently being managed by dellctl ``` # dellctl cluster get -CLUSTER ID VERSION URL +CLUSTER ID VERSION URL UID cluster1 v1.22 https://1.2.3.4:6443 -cluster2 v1.22 https://1.2.3.5:6443 +cluster2 v1.22 https://1.2.3.5:6443 035133aa-5b65-4080-a813-34a7abe48180 ``` From 0f0247431b2a726c9bdd0d8826d5b5aa200d91be Mon Sep 17 00:00:00 2001 From: Randeep Sharma <92301596+randeepsharma@users.noreply.github.com> Date: Thu, 18 Aug 2022 12:33:46 +0530 Subject: [PATCH 16/55] add quota ID for static provisioning (#319) --- content/docs/csidriver/features/powerscale.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/content/docs/csidriver/features/powerscale.md b/content/docs/csidriver/features/powerscale.md index acaee8b878..2eed5a7227 100644 --- a/content/docs/csidriver/features/powerscale.md +++ b/content/docs/csidriver/features/powerscale.md @@ -22,6 +22,9 @@ You can use existent volumes from the PowerScale array as Persistent Volumes in 1. Open your volume in One FS, and take a note of volume-id. 2. Create PersistentVolume and use this volume-id as a volumeHandle in the manifest. Modify other parameters according to your needs. 3. In the following example, the PowerScale cluster accessZone is assumed as 'System', storage class as 'isilon', cluster name as 'pscale-cluster' and volume's internal name as 'isilonvol'. The volume-handle should be in the format of =_=_==_=_==_=_= +4. If Quotas are enabled in the driver, it is recommended to add the Quota ID to the description of the NFS export in the following format: +`CSI_QUOTA_ID:sC-kAAEAAAAAAAAAAAAAQEpVAAAAAAAA` +5. Quota ID can be identified by quering the PowerScale system. ```yaml apiVersion: v1 From d02b473a53738ea16d96c4cac1e23c3291e264d4 Mon Sep 17 00:00:00 2001 From: sharmilarama <72404078+sharmilarama@users.noreply.github.com> Date: Thu, 18 Aug 2022 12:34:38 -0400 Subject: [PATCH 17/55] Update CSM Authorization documentation to include --array-insecure flag (#316) --- content/docs/authorization/cli.md | 45 +++++++++++++++---- .../csidriver/installation/helm/isilon.md | 2 +- .../csidriver/installation/helm/powerflex.md | 4 +- content/docs/resiliency/deployment.md | 1 - 4 files changed, 39 insertions(+), 13 deletions(-) diff --git a/content/docs/authorization/cli.md b/content/docs/authorization/cli.md index b282d7c3fd..cb0b5242fc 100644 --- a/content/docs/authorization/cli.md +++ b/content/docs/authorization/cli.md @@ -256,6 +256,8 @@ karavictl role get [flags] ``` -h, --help help for get + --insecure insecure skip verify flag for Helm deployment + --addr address of the container for Helm deployment (pod:port) ``` ##### Options inherited from parent commands @@ -303,6 +305,8 @@ karavictl role list [flags] ``` -h, --help help for list + --insecure insecure skip verify flag for Helm deployment + --addr address of the container for Helm deployment (pod:port) ``` ##### Options inherited from parent commands @@ -365,6 +369,8 @@ karavictl role create [flags] ``` -f, --from-file string role data from a file --role strings role in the form ==== + --insecure insecure skip verify flag for Helm deployment + --addr address of the container for Helm deployment (pod:port) -h, --help help for create ``` @@ -411,6 +417,8 @@ karavictl role update [flags] ``` -f, --from-file string role data from a file --role strings role in the form ==== + --insecure insecure skip verify flag for Helm deployment + --addr address of the container for Helm deployment (pod:port) -h, --help help for update ``` @@ -452,6 +460,8 @@ karavictl role delete [flags] ``` -h, --help help for delete + --insecure insecure skip verify flag for Helm deployment + --addr address of the container for Helm deployment (pod:port) ``` ##### Options inherited from parent commands @@ -523,8 +533,9 @@ karavictl rolebinding create [flags] ``` -h, --help help for create - -r, --role string Role name - -t, --tenant string Tenant name + -r, --role string Role name + -t, --tenant string Tenant name + --insecure boolean insecure skip verify flag for Helm deployment ``` ##### Options inherited from parent commands @@ -562,8 +573,9 @@ karavictl rolebinding delete [flags] ``` -h, --help help for create - -r, --role string Role name - -t, --tenant string Tenant name + -r, --role string Role name + -t, --tenant string Tenant name + --insecure boolean insecure skip verify flag for Helm deployment ``` ##### Options inherited from parent commands @@ -638,6 +650,8 @@ karavictl storage get [flags] -h, --help help for get -s, --system-id string System identifier (default "systemid") -t, --type string Type of storage system ("powerflex", "powermax") + --insecure insecure skip verify flag for Helm deployment + --addr address of the container for Helm deployment (pod:port) ``` ##### Options inherited from parent commands @@ -680,6 +694,8 @@ karavictl storage list [flags] ``` -h, --help help for list + --insecure insecure skip verify flag for Helm deployment + --addr address of the container for Helm deployment (pod:port) ``` ##### Options inherited from parent commands @@ -730,11 +746,13 @@ karavictl storage create [flags] ``` -e, --endpoint string Endpoint of REST API gateway -h, --help help for create - -i, --insecure Insecure skip verify - -p, --password string Password (default "****") + -a, --array-insecure Array insecure skip verify + -p, --password string Password (default "****") -s, --system-id string System identifier (default "systemid") -t, --type string Type of storage system ("powerflex", "powermax") -u, --user string Username (default "admin") + --insecure insecure skip verify flag for Helm deployment + --addr address of the container for Helm deployment (pod:port) ``` ##### Options inherited from parent commands @@ -746,7 +764,7 @@ karavictl storage create [flags] ##### Output ``` -$ karavictl storage create --endpoint https://1.1.1.1 --insecure --system-id 3000000000011111 --type powerflex --user admin --password ******** +$ karavictl storage create --endpoint https://1.1.1.1 --insecure --array-insecure --system-id 3000000000011111 --type powerflex --user admin --password ******** ``` On success, there will be no output. You may run `karavictl storage get --type --system-id ` to confirm the creation occurred. @@ -772,11 +790,13 @@ karavictl storage update [flags] ``` -e, --endpoint string Endpoint of REST API gateway -h, --help help for update - -i, --insecure Insecure skip verify + -a, --array-insecure Array insecure skip verify -p, --pass string Password (default "****") -s, --system-id string System identifier (default "systemid") -t, --type string Type of storage system ("powerflex", "powermax") -u, --user string Username (default "admin") + --insecure insecure skip verify flag for Helm deployment + --addr address of the container for Helm deployment (pod:port) ``` ##### Options inherited from parent commands @@ -788,7 +808,7 @@ karavictl storage update [flags] ##### Output ``` -$ karavictl storage update --endpoint https://1.1.1.1 --insecure --system-id 3000000000011111 --type powerflex --user admin --password ******** +$ karavictl storage update --endpoint https://1.1.1.1 --insecure --array-insecure --system-id 3000000000011111 --type powerflex --user admin --password ******** ``` On success, there will be no output. You may run `karavictl storage get --type --system-id ` to confirm the update occurred. @@ -816,6 +836,8 @@ karavictl storage delete [flags] -h, --help help for delete -s, --system-id string System identifier (default "systemid") -t, --type string Type of storage system ("powerflex", "powermax") + --insecure insecure skip verify flag for Helm deployment + --addr address of the container for Helm deployment (pod:port) ``` ##### Options inherited from parent commands @@ -887,6 +909,7 @@ karavictl tenant create [flags] ``` -h, --help help for create -n, --name string Tenant name + --insecure insecure skip verify flag for Helm deployment ``` ##### Options inherited from parent commands @@ -926,6 +949,7 @@ karavictl tenant get [flags] ``` -h, --help help for create -n, --name string Tenant name + --insecure insecure skip verify flag for Helm deployment ``` ##### Options inherited from parent commands @@ -969,6 +993,7 @@ karavictl tenant list [flags] ``` -h, --help help for create + --insecure insecure skip verify flag for Helm deployment ``` ##### Options inherited from parent commands @@ -1016,6 +1041,7 @@ karavictl tenant revoke [flags] ``` -h, --help help for create -n, --name string Tenant name + --insecure insecure skip verify flag for Helm deployment ``` ##### Options inherited from parent commands @@ -1054,6 +1080,7 @@ karavictl tenant delete [flags] ``` -h, --help help for create -n, --name string Tenant name + --insecure insecure skip verify flag for Helm deployment ``` ##### Options inherited from parent commands diff --git a/content/docs/csidriver/installation/helm/isilon.md b/content/docs/csidriver/installation/helm/isilon.md index 82354629ff..991d309b2c 100644 --- a/content/docs/csidriver/installation/helm/isilon.md +++ b/content/docs/csidriver/installation/helm/isilon.md @@ -175,7 +175,7 @@ CRDs should be configured during replication prepare stage with repctl as descri | sidecarProxyImage | Image for csm-authorization-sidecar. | No | " " | | proxyHost | Hostname of the csm-authorization server. | No | Empty | | skipCertificateValidation | A boolean that enables/disables certificate validation of the csm-authorization server. | No | true | - | **podmon** | Podmon is an optional feature under development and tech preview. Enable this feature only after contact support for additional information. | - | - | + | **podmon** | [Podmon](../../../../resiliency/deployment) is an optional feature to enable application pods to be resilient to node failure. | - | - | | enabled | A boolean that enables/disables podmon feature. | No | false | | image | image for podmon. | No | " " | | **encryption** | [Encryption](../../../../secure/encryption/deployment) is an optional feature to apply encryption to CSI volumes. | - | - | diff --git a/content/docs/csidriver/installation/helm/powerflex.md b/content/docs/csidriver/installation/helm/powerflex.md index c021fb43e9..ff4af93181 100644 --- a/content/docs/csidriver/installation/helm/powerflex.md +++ b/content/docs/csidriver/installation/helm/powerflex.md @@ -208,8 +208,8 @@ Use the below command to replace or update the secret: | **vgsnapshotter** | This section allows the configuration of the volume group snapshotter(vgsnapshotter) pod. | - | - | | enabled | A boolean that enable/disable vg snapshotter feature. | No | false | | image | Image for vg snapshotter. | No | " " | -| **podmon** | Podmon is an optional feature under development and tech preview. Enable this feature only after contact support for additional information. | - | - | -| enabled | A boolean that enable/disable podmon feature. | No | false | +| **podmon** | [Podmon](../../../../resiliency/deployment) is an optional feature to enable application pods to be resilient to node failure. | - | - | +| enabled | A boolean that enables/disables podmon feature. | No | false | | image | image for podmon. | No | " " | | **authorization** | [Authorization](../../../../authorization/deployment) is an optional feature to apply credential shielding of the backend PowerFlex. | - | - | | enabled | A boolean that enables/disables authorization feature. | No | false | diff --git a/content/docs/resiliency/deployment.md b/content/docs/resiliency/deployment.md index 8a4a20519f..18d3d82b97 100644 --- a/content/docs/resiliency/deployment.md +++ b/content/docs/resiliency/deployment.md @@ -21,7 +21,6 @@ Configure all the helm chart parameters described below before installing the dr The drivers that support Helm chart installation allow CSM for Resiliency to be _optionally_ installed by variables in the chart. There is a _podmon_ block specified in the _values.yaml_ file of the chart that will look similar to the text below by default: ``` -# Podmon is an optional feature under development and tech preview. # Enable this feature only after contact support for additional information podmon: enabled: true From a432f13fb1cf946a869d24963e91a5637d58ec10 Mon Sep 17 00:00:00 2001 From: Trevor Dawe Date: Fri, 19 Aug 2022 13:17:47 -0300 Subject: [PATCH 18/55] Application Mobility Documentation (#318) --- content/docs/_index.md | 3 +- content/docs/application-mobility/_index.md | 40 +++++++++++ .../docs/application-mobility/deployment.md | 62 ++++++++++++++++ .../application-mobility/troubleshooting.md | 48 +++++++++++++ .../application-mobility/uninstallation.md | 17 +++++ .../docs/application-mobility/use_cases.md | 72 +++++++++++++++++++ 6 files changed, 241 insertions(+), 1 deletion(-) create mode 100644 content/docs/application-mobility/_index.md create mode 100644 content/docs/application-mobility/deployment.md create mode 100644 content/docs/application-mobility/troubleshooting.md create mode 100644 content/docs/application-mobility/uninstallation.md create mode 100644 content/docs/application-mobility/use_cases.md diff --git a/content/docs/_index.md b/content/docs/_index.md index 2f370b263a..4819bc1e4e 100644 --- a/content/docs/_index.md +++ b/content/docs/_index.md @@ -64,4 +64,5 @@ CSM is made up of multiple components including modules (enterprise capabilities | Observability v1.2| ✔️ | ❌ | ✔️ | ❌ | ❌ | | Replication v1.3| ❌ | ✔️ | ✔️ | ✔️ | ❌ | | Resiliency v1.2| ✔️ | ✔️ | ❌ | ❌ | ✔️ | -| Encryption v0.1.0| ❌ | ✔️ | ❌ | ❌ | ❌ | \ No newline at end of file +| Encryption v0.1.0| ❌ | ✔️ | ❌ | ❌ | ❌ | +| Application Mobility v0.1.0| ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | diff --git a/content/docs/application-mobility/_index.md b/content/docs/application-mobility/_index.md new file mode 100644 index 0000000000..af367ffed0 --- /dev/null +++ b/content/docs/application-mobility/_index.md @@ -0,0 +1,40 @@ +--- +title: "Application Mobility" +linkTitle: "Application Mobility" +weight: 9 +Description: > + Application Mobility +--- + +>> NOTE: This tech-preview release is not intended for use in production environment. + +>> NOTE: Application Mobility requires a time-based license. See [Deployment](./deployment) for instructions. + +Container Storage Modules for Application Mobility provide Kubernetes administrators the ability to clone their stateful application workloads and application data to other clusters, either on-premise or in the cloud. + +Application Mobility uses [Velero](https://velero.io) and its integration of [Restic](https://restic.net) to copy both application metadata and data to object storage. When a backup is requested, Application Mobility uses these options to determine how the application data is backed up: +- If [Volume Group Snapshots](../snapshots/volume-group-snapshots/) are enabled on the CSI driver backing the application's Persistent Volumes, crash consistent snapshots of all volumes are used for the backup. +- If [Volume Snapshots](../snapshots/) are enabled on the Kubernetes cluster and supported by the CSI driver, individual snapshots are used for each Persistent Volume used by the application. +- If no snapshot options are enabled, default to using full copies of each Persistent Volume used by the application. + +After a backup has been created, it can be restored on the same Kubernetes cluster or any other cluster(s) if this criteria is met: +- Application Mobility is installed on the target cluster(s). +- The target cluster(s) has access to the object store bucket. For example, if backing up and restoring an application from an on-premise Kubernetes cluster to AWS EKS, an S3 bucket can be used if both the on-premise and EKS cluster have access to it. +- Storage Class is defined on the target cluster(s) to support creating the required Persistent Volumes used by the application. + +## Supported Data Movers +{{}} +| Data Mover | Description | +|-|-| +| Restic | Persistent Volume data will be stored in the provided object store bucket | +{{
}} + +## Supported Operating Systems/Container Orchestrator Platforms +{{}} +| COP/OS | Supported Versions | +|-|-| +| Kubernetes | 1.23, 1.24 | +| Red Hat OpenShift | 4.10 | +| RHEL | 7.x, 8.x | +| CentOS | 7.8, 7.9 | +{{
}} \ No newline at end of file diff --git a/content/docs/application-mobility/deployment.md b/content/docs/application-mobility/deployment.md new file mode 100644 index 0000000000..b9fbf58d7c --- /dev/null +++ b/content/docs/application-mobility/deployment.md @@ -0,0 +1,62 @@ +--- +title: "Deployment" +linkTitle: "Deployment" +weight: 1 +Description: > + Deployment +--- + +## Pre-requisites +- [Request a License for Application Mobility](../../license/) +- Object store bucket accessible by both the source and target clusters + +## Installation +1. Create a namespace where Application Mobility will be installed. + ``` + kubectl create ns application-mobility + ``` +1. Edit the license Secret file (see Pre-requisites above) and set the correct namespace (ex: `namespace: application-mobility`) +1. Create the Secret containing a license file + ``` + kubectl apply -f license.yml + ``` +1. Add the Dell Helm Charts repository + ``` + helm repo add dell https://dell.github.io/helm-charts + ``` +1. Either create a values.yml file or provide the `--set` options to the `helm install` to override default values from the [Configuration](#configuration) section. +1. Install the helm chart + ``` + helm install application-mobility -n application-mobility dell/csm-application-mobility + ``` + + +### Configuration + +This table lists the configurable parameters of the Application Mobility Helm chart and their default values. + +| Parameter | Description | Required | Default | +| - | - | - | - | +| `replicaCount` | Number of replicas for the Application Mobility controllers | Yes | `1` | +| `image.pullPolicy` | Image pull policy for the Application Mobility controller images | Yes | `IfNotPresent` | +| `controller.image` | Location of the Application Mobility Docker image | Yes | `dell/csm-application-mobility-controller:v0.1.0` | +| `cert-manager.enabled` | If set to true, cert-manager will be installed during Application Mobility installation | Yes | `false` | +| `veleroNamespace` | If Velero is already installed, set to the namespace where Velero is installed | No | `velero` | +| `licenseName` | Name of the Secret that contains the License for Application Mobility | Yes | `license` | +| `objectstore.secretName` | If velero is already installed on the cluster, specify the name of the secret in velero namespace that has credentials to access object store | No | ` ` | +| `velero.enabled` | If set to true, Velero will be installed during Application Mobility installation | Yes | `true` | +| `velero.use-volume-snapshots` | If set to true, Velero will use volume snapshots | Yes | `false` | +| `velero.deployRestic` | If set to true, Velero will also deploy Restic | Yes | `true` | +| `velero.cleanUpCRDs` | If set to true, Velero CRDs will be cleaned up | Yes | `true` | +| `velero.credentials.existingSecret` | Optionally, specify the name of the pre-created secret in the release namespace that holds the object store credentials. Either this or secretContents should be specified | No | ` ` | +| `velero.credentials.name` | Optionally, specify the name to be used for secret that will be created to hold object store credentials. Used in conjunction with secretContents. | No | ` ` | +| `velero.credentials.secretContents` | Optionally, specify the object store access credentials to be stored in a secret with key "cloud". Either this or existingSecret should be provided. | No | ` ` | +| `velero.configuration.provider` | Provider to use for Velero. | Yes | `aws` | +| `velero.configuration.backupStorageLocation.name` | Name of the backup storage location for Velero. | Yes | `default` | +| `velero.configuration.backupStorageLocation.bucket` | Name of the object store bucket to use for backups. | Yes | `velero-bucket` | +| `velero.configuration.backupStorageLocation.config` | Additional provider-specific configuration. See https://velero.io/docs/v1.9/api-types/backupstoragelocation/ for specific details. | Yes | ` ` | +| `velero.initContainers` | List of plugins used by Velero. Dell Velero plugin is required and plugins for other providers can be added. | Yes | ` ` | +| `velero.initContainers[0].name` | Name of the Dell Velero plugin. | Yes | `dell-custom-velero-plugin` | +| `velero.initContainers[0].image` | Location of the Dell Velero plugin image. | Yes | `dellemc/csm-application-mobility-velero-plugin:v0.1.0` | +| `velero.initContainers[0].volumeMounts[0].mountPath` | Mount path of the volume mount. | Yes | `/target` | +| `velero.initContainers[0].volumeMounts[0].name` | Name of the volume mount. | Yes | `plugins` | \ No newline at end of file diff --git a/content/docs/application-mobility/troubleshooting.md b/content/docs/application-mobility/troubleshooting.md new file mode 100644 index 0000000000..b015781524 --- /dev/null +++ b/content/docs/application-mobility/troubleshooting.md @@ -0,0 +1,48 @@ +--- +title: "Troubleshooting" +linkTitle: "Troubleshooting" +weight: 4 +Description: > + Troubleshooting +--- + +## Frequently Asked Questions +1. [How can I diagnose an issue with Application Mobility?](#how-can-i-diagnose-an-issue-with-application-mobility) +2. [How can I view logs?](#how-can-i-view-logs) +3. [How can I debug and troubleshoot issues with Kubernetes?](#how-can-i-debug-and-troubleshoot-issues-with-kubernetes) +4. [Why are there error logs about a license?](#why-are-there-error-logs-about-a-license) + +### How can I diagnose an issue with Application Mobility? + +Once you have attempted to install Application Mobility to your Kubernetes or OpenShift cluster, the first step in troubleshooting is locating the problem. + +Get information on the state of your Pods. +```console +kubectl get pods -n $namespace +``` +Get verbose output of the current state of a Pod. +```console +kubectl describe pod -n $namespace $pod +``` +### How can I view logs? + +View pod container logs. Output logs to a file for further debugging. +```console +kubectl logs -n $namespace $pod $container +kubectl logs -n $namespace $pod $container > $logFileName +``` + +### How can I debug and troubleshoot issues with Kubernetes? + +* To debug your application that may not be behaving correctly, please reference Kubernetes [troubleshooting applications guide](https://kubernetes.io/docs/tasks/debug-application-cluster/debug-application/). + +* For tips on debugging your cluster, please see this [troubleshooting guide](https://kubernetes.io/docs/tasks/debug-application-cluster/debug-cluster/). + +### Why are there error logs about a license? + +Application Mobility requires a license in order to function. See the [Deployment](../deployment) instructions for steps to request a license. + +There will be errors in the logs about the license for these cases: +- License does not exist +- License is not valid for the current Kubernetes cluster +- License has expired \ No newline at end of file diff --git a/content/docs/application-mobility/uninstallation.md b/content/docs/application-mobility/uninstallation.md new file mode 100644 index 0000000000..3e98fb7040 --- /dev/null +++ b/content/docs/application-mobility/uninstallation.md @@ -0,0 +1,17 @@ +--- +title: Uninstallation +linktitle: Uninstallation +weight: 2 +description: > + Uninstallation +--- + +This section outlines the uninstallation steps for Application Mobility. + +## Uninstall the Application Mobility Helm Chart + +This command removes all the Kubernetes components associated with the chart. + +``` +$ helm delete [APPLICATION_MOBILITY_NAME] --namespace [APPLICATION_MOBILITY_NAMESPACE] +``` diff --git a/content/docs/application-mobility/use_cases.md b/content/docs/application-mobility/use_cases.md new file mode 100644 index 0000000000..96dc9b880a --- /dev/null +++ b/content/docs/application-mobility/use_cases.md @@ -0,0 +1,72 @@ +--- +title: "Use Cases" +linkTitle: "Use Cases" +weight: 3 +Description: > + Use Cases +--- + +After Application Mobility is installed, the [dellctl CLI](../../cli/) can be used to register clusters and manage backups and restores of applications. + +## Backup and Restore an Application +This example details the steps when an application in namespace `demo1` is being backed up and then later restored to either the same cluster or another cluster. In this sample, both Application Mobility and Velero are installed in the `application-mobility` namespace. + +1. If Velero is not installed in the default `velero` namespace, set this environment variable to the namespace where it is installed: + ``` + export VELERO_NAMESPACE=application-mobility + ``` +1. On the source cluster, create a Backup by providing a name and the included namespace where the application is installed. The application and its data will be available in the object store bucket and can be restored at a later time. + ``` + dellctl backup create backup1 --include-namespaces demo1 --namespace application-mobility + ``` +1. Monitor the backup status until it is marked as Completed. + ``` + dellctl backup get --namespace application-mobility + ``` +1. If the Storage Class name on the target cluster is different than the Storage Class name on the source cluster where the backup was created, a mapping between source and target Storage Class names must be defined. See [Changing PV/PVC Storage Classes](#changing-pvpvc-storage-classes). +1. The application and its data can be restored on either the same cluster or another cluster by referring to the backup name and providing an optional mapping of the original namespace to the target namespace. + ``` + dellctl restore create restore1 --from-backup backup1 \ + --namespace-mappings "demo1:restorens1" --namespace application-mobility + ``` +1. Monitor the restore status until it is marked as Completed. + ``` + dellctl restore get --namespace application-mobility + ``` + +## Clone an Application +This example details the steps when an application in namespace `demo1` is cloned from a source cluster to a target cluster in a single operation. In this sample, both Application Mobility and Velero are installed in the `application-mobility` namespace. + +1. If Velero is not installed in the default `velero` namespace, set this environment variable to the namespace where it is installed: + ``` + export VELERO_NAMESPACE=application-mobility + ``` +1. Register the target cluster + ``` + dellctl cluster add -n targetcluster -f ~/kubeconfigs/target-cluster-kubeconfig + ``` +1. If the Storage Class name on the target cluster is different than the Storage Class name on the source cluster where the backup was created, a mapping between source and target Storage Class names must be defined. See [Changing PV/PVC Storage Classes](#changing-pvpvc-storage-classes). +1. Create a Backup by providing a name, the included namespace where the application is installed, and the target cluster and namespace mapping where the application will be restored. + ``` + dellctl backup create backup1 --include-namespaces demo1 --clones "targetcluster/demo1:restore-ns2" \ + --namespace application-mobility + ``` +1. Monitor the restore status on the target cluster until it is marked as Completed. + ``` + dellctl restore get --cluster-id targetcluster --namespace application-mobility + ``` + +## Changing PV/PVC Storage Classes +Create a ConfigMap on the target cluster in the same namespace where Application Mobility is installed. The data field must contain a mapping of source Storage Class name to target Storage Class name. See Velero's documentation for [Changing PV/PVC Storage Classes](https://velero.io/docs/v1.9/restore-reference/#changing-pvpvc-storage-classes) for additional details. +``` +apiVersion: v1 +kind: ConfigMap +metadata: + name: change-storage-class-config + namespace: + labels: + velero.io/plugin-config: "" + velero.io/change-storage-class: RestoreItemAction +data: + : +``` \ No newline at end of file From d7db7248fc3235a2aee6316e1a51f04543c7ed4c Mon Sep 17 00:00:00 2001 From: Randeep Sharma <92301596+randeepsharma@users.noreply.github.com> Date: Mon, 22 Aug 2022 10:23:13 +0530 Subject: [PATCH 19/55] Steps to upgrade driver using offline bundle (#312) --- content/docs/csidriver/features/powerscale.md | 2 +- content/docs/csidriver/upgradation/drivers/offline.md | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 content/docs/csidriver/upgradation/drivers/offline.md diff --git a/content/docs/csidriver/features/powerscale.md b/content/docs/csidriver/features/powerscale.md index 2eed5a7227..824ba6b3e5 100644 --- a/content/docs/csidriver/features/powerscale.md +++ b/content/docs/csidriver/features/powerscale.md @@ -24,7 +24,7 @@ You can use existent volumes from the PowerScale array as Persistent Volumes in 3. In the following example, the PowerScale cluster accessZone is assumed as 'System', storage class as 'isilon', cluster name as 'pscale-cluster' and volume's internal name as 'isilonvol'. The volume-handle should be in the format of =_=_==_=_==_=_= 4. If Quotas are enabled in the driver, it is recommended to add the Quota ID to the description of the NFS export in the following format: `CSI_QUOTA_ID:sC-kAAEAAAAAAAAAAAAAQEpVAAAAAAAA` -5. Quota ID can be identified by quering the PowerScale system. +5. Quota ID can be identified by querying the PowerScale system. ```yaml apiVersion: v1 diff --git a/content/docs/csidriver/upgradation/drivers/offline.md b/content/docs/csidriver/upgradation/drivers/offline.md new file mode 100644 index 0000000000..1a7b1392fe --- /dev/null +++ b/content/docs/csidriver/upgradation/drivers/offline.md @@ -0,0 +1,9 @@ +--- +title: Offline Upgrade of Dell CSI Storage Providers +linktitle: Offline Upgrade +description: Offline Upgrade of Dell CSI Storage Providers +--- + +1. To perform offline upgrade of the driver, please create an offline bundle as mentioned [here](./../../../installation/offline#building-an-offline-bundle). +2. Once the bundle is created, please unpack the bundle by following the steps mentioned [here](./../../../installation/offline##unpacking-the-offline-bundle-and-preparing-for-installation). +3. Please use the driver specific upgrade steps to upgrade. \ No newline at end of file From ebedf3bb26a3a7bccdacde6e608635312cc61665 Mon Sep 17 00:00:00 2001 From: boyamurthy <92081029+boyamurthy@users.noreply.github.com> Date: Mon, 22 Aug 2022 10:36:42 +0530 Subject: [PATCH 20/55] Updating Upgrade fix for PowerMax (#323) --- .../docs/csidriver/troubleshooting/powermax.md | 1 + .../csidriver/upgradation/drivers/powermax.md | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/content/docs/csidriver/troubleshooting/powermax.md b/content/docs/csidriver/troubleshooting/powermax.md index 76cc3d4b23..ba6db41fbf 100644 --- a/content/docs/csidriver/troubleshooting/powermax.md +++ b/content/docs/csidriver/troubleshooting/powermax.md @@ -11,3 +11,4 @@ description: Troubleshooting PowerMax Driver | `kubectl logs powermax-controller- –n driver` logs show that the driver failed to connect to the U4P because it could not verify the certificates | Check the powermax-certs secret and ensure it is not empty or it has the valid certificates| |Driver install or upgrade fails because of an incompatible Kubernetes version, even though the version seems to be within the range of compatibility. For example: Error: UPGRADE FAILED: chart requires kubeVersion: >= 1.22.0 < 1.25.0 which is incompatible with Kubernetes V1.22.11-mirantis-1 | If you are using an extended Kubernetes version, please see the [helm Chart](https://github.com/dell/csi-powermax/blob/main/helm/csi-powermax/Chart.yaml) and use the alternate kubeVersion check that is provided in the comments. Please note that this is not meant to be used to enable the use of pre-release alpha and beta versions, which is not supported.| | When a node goes down, the block volumes attached to the node cannot be attached to another node | 1. Force delete the pod running on the node that went down
2. Delete the volumeattachment to the node that went down.
Now the volume can be attached to the new node. | +| When attempting a driver upgrade, you see: ```spec.fsGroupPolicy: Invalid value: "xxx": field is immutable``` | You cannot upgrade between drivers with different fsGroupPolicies. See [upgrade documentation](../../upgradation/drivers/powermax) for more details | diff --git a/content/docs/csidriver/upgradation/drivers/powermax.md b/content/docs/csidriver/upgradation/drivers/powermax.md index 98e1fd3059..6f551a181c 100644 --- a/content/docs/csidriver/upgradation/drivers/powermax.md +++ b/content/docs/csidriver/upgradation/drivers/powermax.md @@ -20,6 +20,21 @@ You can upgrade CSI Driver for Dell PowerMax using Helm or Dell CSI Operator. *NOTE:* - If you are upgrading from a driver version that was installed using Helm v2, ensure that you install Helm3 before installing the driver. - To update any installation parameter after the driver has been installed, change the `my-powermax-settings.yaml` file and run the install script with the option _\-\-upgrade_, for example: `./csi-install.sh --namespace powermax --values ./my-powermax-settings.yaml –upgrade`. +- You cannot upgrade between drivers with different fsGroupPolicies. To check the current driver's fsGroupPolicy, use this command: +``` kubectl describe csidriver csi-powermax``` +and check the "Spec" section: + +``` +... +Spec: + Attach Required: true + Fs Group Policy: ReadWriteOnceWithFSType + Pod Info On Mount: false + Requires Republish: false + Storage Capacity: false +... + +``` ## Upgrade using Dell CSI Operator: **Note:** Upgrading the Operator does not upgrade the CSI Driver. From a590cb9f5ae4d17a44d1e38789b735787a0e84fc Mon Sep 17 00:00:00 2001 From: Randeep Sharma <92301596+randeepsharma@users.noreply.github.com> Date: Mon, 22 Aug 2022 19:09:33 +0530 Subject: [PATCH 21/55] update-comment-for-extended-k8s-version (#324) --- content/docs/csidriver/troubleshooting/powerscale.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/docs/csidriver/troubleshooting/powerscale.md b/content/docs/csidriver/troubleshooting/powerscale.md index e3f233a76c..8c35ed482a 100644 --- a/content/docs/csidriver/troubleshooting/powerscale.md +++ b/content/docs/csidriver/troubleshooting/powerscale.md @@ -18,3 +18,4 @@ Here are some installation failures that might be encountered and how to mitigat | The `kubectl logs isilon-controller-0 -n isilon -c driver` logs shows the driver **Authentication failed. Trying to re-authenticate** when using Session-based authentication | The issue has been resolved from OneFS 9.3 onwards, for OneFS versions prior to 9.3 for session-based authentication either smart connect can be created against a single node of Isilon or CSI Driver can be installed/pointed to a particular node of the Isilon else basic authentication can be used by setting isiAuthType in `values.yaml` to 0 | | When an attempt is made to create more than one ReadOnly PVC from the same volume snapshot, the second and subsequent requests result in PVCs in state `Pending`, with a warning `another RO volume from this snapshot is already present`. This is because the driver allows only one RO volume from a specific snapshot at any point in time. This is to allow faster creation(within a few seconds) of a RO PVC from a volume snapshot irrespective of the size of the volume snapshot. | Wait for the deletion of the first RO PVC created from the same volume snapshot. | | While attaching a ReadOnly PVC from a volume snapshot to a pod, the mount operation will fail with error `mounting ... failed, reason given by server: No such file or directory`, if RO volume's access zone(non System access zone) on Isilon is configured with a dedicated service IP(which is same as `AzServiceIP` storage class parameter). This operation results in accessing the snapshot base directory(`/ifs`) and results in overstepping the RO volume's access zone's base directory, which the OneFS doesn't allow. | Provide a service ip that belongs to RO volume's access zone which set the highest level `/ifs` as its zone base directory. | +|Driver install or upgrade fails because of an incompatible Kubernetes version, even though the version seems to be within the range of compatibility. For example: Error: UPGRADE FAILED: chart requires kubeVersion: >= 1.22.0 < 1.25.0 which is incompatible with Kubernetes V1.22.11-mirantis-1 | If you are using an extended Kubernetes version, please see the [helm Chart](https://github.com/dell/csi-powerscale/blob/main/helm/csi-isilon/Chart.yaml) and use the alternate kubeVersion check that is provided in the comments. Please note that this is not meant to be used to enable the use of pre-release alpha and beta versions, which is not supported.| From 176507224c3726573b792a179d7e1d27577c2cef Mon Sep 17 00:00:00 2001 From: Harish P Date: Tue, 23 Aug 2022 11:01:18 +0530 Subject: [PATCH 22/55] updated troubleshoot document for csi-powerstore installation (#326) --- content/docs/csidriver/troubleshooting/powerstore.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/docs/csidriver/troubleshooting/powerstore.md b/content/docs/csidriver/troubleshooting/powerstore.md index 62c1622262..7ba746fb2a 100644 --- a/content/docs/csidriver/troubleshooting/powerstore.md +++ b/content/docs/csidriver/troubleshooting/powerstore.md @@ -11,4 +11,5 @@ description: Troubleshooting PowerStore Driver | If PVC is not getting created and getting the following error in PVC description:
```failed to provision volume with StorageClass "powerstore-iscsi": rpc error: code = Internal desc = : Unknown error:```| Check if you've created a secret with correct credentials | | If the NVMeFC pod is not getting created and the host looses the ssh connection, causing the driver pods to go to error state | remove the nvme_tcp module from the host incase of NVMeFC connection | | When a node goes down, the block volumes attached to the node cannot be attached to another node | 1. Force delete the pod running on the node that went down
2. Delete the volumeattachment to the node that went down.
Now the volume can be attached to the new node. | -| If the pod creation for NVMe takes time when the connections between the host and the array are more than 2 and considerable volumes are mounted on the host | Reduce the number of connections between the host and the array to 2. | \ No newline at end of file +| If the pod creation for NVMe takes time when the connections between the host and the array are more than 2 and considerable volumes are mounted on the host | Reduce the number of connections between the host and the array to 2. | +|Driver install or upgrade fails because of an incompatible Kubernetes version, even though the version seems to be within the range of compatibility. For example: Error: UPGRADE FAILED: chart requires kubeVersion: >= 1.22.0 < 1.25.0 which is incompatible with Kubernetes V1.22.11-mirantis-1 | If you are using an extended Kubernetes version, please see the [helm Chart](https://github.com/dell/csi-powerstore/blob/main/helm/csi-powerstore/Chart.yaml) and use the alternate kubeVersion check that is provided in the comments. Please note that this is not meant to be used to enable the use of pre-release alpha and beta versions, which is not supported.| \ No newline at end of file From f3d38b0f65bde0c8c463a1b9e6033a622702ab5a Mon Sep 17 00:00:00 2001 From: boyamurthy <92081029+boyamurthy@users.noreply.github.com> Date: Tue, 23 Aug 2022 11:46:17 +0530 Subject: [PATCH 23/55] added PowerPath support (#328) --- content/docs/csidriver/installation/helm/powermax.md | 11 +++++++++++ content/docs/csidriver/release/powermax.md | 1 + 2 files changed, 12 insertions(+) diff --git a/content/docs/csidriver/installation/helm/powermax.md b/content/docs/csidriver/installation/helm/powermax.md index d63d770012..a7aeac6568 100644 --- a/content/docs/csidriver/installation/helm/powermax.md +++ b/content/docs/csidriver/installation/helm/powermax.md @@ -33,6 +33,7 @@ The following requirements must be met before installing CSI Driver for Dell Pow - Linux multipathing requirements - If using Snapshot feature, satisfy all Volume Snapshot requirements - If enabling CSM for Authorization, please refer to the [Authorization deployment steps](../../../../authorization/deployment/) first +- If using Powerpath , install the PowerPath for Linux requirements ### Install Helm 3 @@ -104,6 +105,16 @@ path_selector "round-robin 0" no_path_retry 10 ``` +### PowerPath for Linux requirements + +CSI Driver for Dell PowerMax supports PowerPath for Linux. Configure Linux PowerPath before installing the CSI Driver. + +Set up the PowerPath for Linux as follows: + +- All the nodes must have the PowerPath package installed . Download the PowerPath archive for the environment from [Dell EMC Online Support](https://www.dell.com/support/home/en-in/product-support/product/powerpath-for-linux/drivers). +- Untar the PowerPath archive, Copy the RPM package into a temporary folder and Install PowerPath using `rpm -ivh DellEMCPower.LINUX--..x86_64.rpm` +- Start the PowerPath service using `systemctl start PowerPath` + ### (Optional) Volume Snapshot Requirements Applicable only if you decided to enable snapshot feature in `values.yaml` diff --git a/content/docs/csidriver/release/powermax.md b/content/docs/csidriver/release/powermax.md index 2287ced1ec..cf425eee38 100644 --- a/content/docs/csidriver/release/powermax.md +++ b/content/docs/csidriver/release/powermax.md @@ -13,6 +13,7 @@ description: Release notes for PowerMax CSI driver - Removed 9.x Unisphere REST endpoints support. - Added 10.0 Unisphere REST endpoints support. - Automatic SRDF group creation for PowerMax arrays (Juniper release and above). +- Added PowerPath for Linux support. ### Fixed Issues There are no fixed issues in this release. From 32116d6966c62fa5d5830405f77ae50275fe176e Mon Sep 17 00:00:00 2001 From: panigs7 <92028646+panigs7@users.noreply.github.com> Date: Tue, 23 Aug 2022 13:56:18 +0530 Subject: [PATCH 24/55] Version update for Dell CSI Operator (#315) --- content/docs/csidriver/_index.md | 2 +- .../docs/csidriver/installation/helm/unity.md | 2 +- .../csidriver/installation/offline/_index.md | 2 +- .../csidriver/installation/operator/_index.md | 16 ++++++++-------- .../csidriver/installation/operator/unity.md | 4 ++-- content/docs/csidriver/release/operator.md | 9 ++------- content/docs/csidriver/release/unity.md | 2 +- .../csidriver/upgradation/drivers/operator.md | 2 +- .../docs/csidriver/upgradation/drivers/unity.md | 4 ++-- 9 files changed, 19 insertions(+), 24 deletions(-) diff --git a/content/docs/csidriver/_index.md b/content/docs/csidriver/_index.md index 1aa5b7126f..8b5f026bd6 100644 --- a/content/docs/csidriver/_index.md +++ b/content/docs/csidriver/_index.md @@ -34,7 +34,7 @@ The CSI Drivers by Dell implement an interface between [CSI](https://kubernetes- {{}} | Features | PowerMax | PowerFlex | Unity XT | PowerScale | PowerStore | |--------------------------|:--------:|:---------:|:---------:|:----------:|:----------:| -| CSI Driver version | 2.3.0 | 2.3.0 | 2.3.0 | 2.3.0 | 2.3.0 | +| CSI Driver version | 2.4.0 | 2.4.0 | 2.4.0 | 2.4.0 | 2.4.0 | | Static Provisioning | yes | yes | yes | yes | yes | | Dynamic Provisioning | yes | yes | yes | yes | yes | | Expand Persistent Volume | yes | yes | yes | yes | yes | diff --git a/content/docs/csidriver/installation/helm/unity.md b/content/docs/csidriver/installation/helm/unity.md index 3b8d958ccf..c8e18fecee 100644 --- a/content/docs/csidriver/installation/helm/unity.md +++ b/content/docs/csidriver/installation/helm/unity.md @@ -407,7 +407,7 @@ A wide set of annotated storage class manifests have been provided in the [csi-u The existing volume snapshot class will be retained. *Upgrading from an older version of the driver*: -It is strongly recommended to upgrade the earlier versions of CSI Unity XT to v1.6.0 or higher, before upgrading to v2.3.0. +It is strongly recommended to upgrade the earlier versions of CSI Unity XT to v1.6.0 or higher, before upgrading to v2.4.0. ## Storage Classes diff --git a/content/docs/csidriver/installation/offline/_index.md b/content/docs/csidriver/installation/offline/_index.md index 127d35c937..63c4b96a29 100644 --- a/content/docs/csidriver/installation/offline/_index.md +++ b/content/docs/csidriver/installation/offline/_index.md @@ -65,7 +65,7 @@ The resulting offline bundle file can be copied to another machine, if necessary For example, here is the output of a request to build an offline bundle for the Dell CSI Operator: ``` -git clone -b v1.8.0 https://github.com/dell/dell-csi-operator.git +git clone -b v1.9.0 https://github.com/dell/dell-csi-operator.git ``` ``` cd dell-csi-operator/scripts diff --git a/content/docs/csidriver/installation/operator/_index.md b/content/docs/csidriver/installation/operator/_index.md index 68113a0e90..ff3f767b75 100644 --- a/content/docs/csidriver/installation/operator/_index.md +++ b/content/docs/csidriver/installation/operator/_index.md @@ -50,21 +50,21 @@ If you have installed an old version of the `dell-csi-operator` which was availa #### Full list of CSI Drivers and versions supported by the Dell CSI Operator | CSI Driver | Version | ConfigVersion | Kubernetes Version | OpenShift Version | | ------------------ | --------- | -------------- | -------------------- | --------------------- | -| CSI PowerMax | 2.1.0 | v2.1.0 | 1.20, 1.21, 1.22 | 4.8, 4.8 EUS, 4.9 | | CSI PowerMax | 2.2.0 | v2.2.0 | 1.21, 1.22, 1.23 | 4.8, 4.8 EUS, 4.9 | | CSI PowerMax | 2.3.0 | v2.3.0 | 1.22, 1.23, 1.24 | 4.9, 4.10, 4.10 EUS | -| CSI PowerFlex | 2.1.0 | v2.1.0 | 1.20, 1.21, 1.22 | 4.8, 4.8 EUS, 4.9 | +| CSI PowerMax | 2.4.0 | v2.4.0 | 1.22, 1.23, 1.24 | 4.9, 4.10, 4.10 EUS | | CSI PowerFlex | 2.2.0 | v2.2.0 | 1.21, 1.22, 1.23 | 4.8, 4.8 EUS, 4.9 | | CSI PowerFlex | 2.3.0 | v2.3.0 | 1.22, 1.23, 1.24 | 4.9, 4.10, 4.10 EUS | -| CSI PowerScale | 2.1.0 | v2.1.0 | 1.20, 1.21, 1.22 | 4.8, 4.8 EUS, 4.9 | +| CSI PowerFlex | 2.4.0 | v2.4.0 | 1.22, 1.23, 1.24 | 4.9, 4.10, 4.10 EUS | | CSI PowerScale | 2.2.0 | v2.2.0 | 1.21, 1.22, 1.23 | 4.8, 4.8 EUS, 4.9 | | CSI PowerScale | 2.3.0 | v2.3.0 | 1.22, 1.23, 1.24 | 4.9, 4.10, 4.10 EUS | -| CSI Unity XT | 2.1.0 | v2.1.0 | 1.20, 1.21, 1.22 | 4.8, 4.8 EUS, 4.9 | +| CSI PowerScale | 2.4.0 | v2.4.0 | 1.22, 1.23, 1.24 | 4.9, 4.10, 4.10 EUS | | CSI Unity XT | 2.2.0 | v2.2.0 | 1.21, 1.22, 1.23 | 4.8, 4.8 EUS, 4.9 | | CSI Unity XT | 2.3.0 | v2.3.0 | 1.22, 1.23, 1.24 | 4.9, 4.10, 4.10 EUS | -| CSI PowerStore | 2.1.0 | v2.1.0 | 1.20, 1.21, 1.22 | 4.8, 4.8 EUS, 4.9 | +| CSI Unity XT | 2.4.0 | v2.4.0 | 1.22, 1.23, 1.24 | 4.9, 4.10, 4.10 EUS | | CSI PowerStore | 2.2.0 | v2.2.0 | 1.21, 1.22, 1.23 | 4.8, 4.8 EUS, 4.9 | | CSI PowerStore | 2.3.0 | v2.3.0 | 1.22, 1.23, 1.24 | 4.9, 4.10, 4.10 EUS | +| CSI PowerStore | 2.4.0 | v2.4.0 | 1.22, 1.23, 1.24 | 4.9, 4.10, 4.10 EUS |
@@ -97,7 +97,7 @@ $ kubectl create configmap dell-csi-operator-config --from-file config.tar.gz -n #### Steps >**Skip step 1 for "offline bundle installation" and continue using the workspace created by untar of dell-csi-operator-bundle.tar.gz.** -1. Clone and checkout the required dell-csi-operator version using `git clone -b v1.8.0 https://github.com/dell/dell-csi-operator.git`. +1. Clone and checkout the required dell-csi-operator version using `git clone -b v1.9.0 https://github.com/dell/dell-csi-operator.git`. 2. cd dell-csi-operator 3. Run `bash scripts/install.sh` to install the operator. >NOTE: Dell CSI Operator version 1.4.0 and higher would install to the 'dell-csi-operator' namespace by default. @@ -274,12 +274,12 @@ The below notes explain some of the general items to take care of. 1. If you are trying to upgrade the CSI driver from an older version, make sure to modify the _configVersion_ field if required. ```yaml driver: - configVersion: v2.3.0 + configVersion: v2.4.0 ``` 2. Volume Health Monitoring feature is optional and by default this feature is disabled for drivers when installed via operator. To enable this feature, we will have to modify the below block while upgrading the driver.To get the volume health state add external-health-monitor sidecar in the sidecar section and `value`under controller set to true and the `value` under node set - to true as shown below: + to true as shown below:
i. Add controller and node section as below: ```yaml controller: diff --git a/content/docs/csidriver/installation/operator/unity.md b/content/docs/csidriver/installation/operator/unity.md index 89e8b9a699..637f571ad2 100644 --- a/content/docs/csidriver/installation/operator/unity.md +++ b/content/docs/csidriver/installation/operator/unity.md @@ -97,12 +97,12 @@ metadata: namespace: test-unity spec: driver: - configVersion: v2.3.0 + configVersion: v2.4.0 replicas: 2 dnsPolicy: ClusterFirstWithHostNet forceUpdate: false common: - image: "dellemc/csi-unity:v2.3.0" + image: "dellemc/csi-unity:v2.4.0" imagePullPolicy: IfNotPresent sideCars: - name: provisioner diff --git a/content/docs/csidriver/release/operator.md b/content/docs/csidriver/release/operator.md index 9696d83067..924c939f57 100644 --- a/content/docs/csidriver/release/operator.md +++ b/content/docs/csidriver/release/operator.md @@ -3,14 +3,9 @@ title: Operator description: Release notes for Dell CSI Operator --- -## Release Notes - Dell CSI Operator 1.8.0 +## Release Notes - Dell CSI Operator 1.9.0 ->**Note:** There will be a delay in certification of Dell CSI Operator 1.8.0 and it will not be available for download from the Red Hat OpenShift certified catalog right away. The operator will still be available for download from the Red Hat OpenShift Community Catalog soon after the 1.8.0 release. - -### New Features/Changes - -- Added support for Kubernetes 1.24. -- Added support for OpenShift 4.10. +>**Note:** There will be a delay in certification of Dell CSI Operator 1.9.0 and it will not be available for download from the Red Hat OpenShift certified catalog right away. The operator will still be available for download from the Red Hat OpenShift Community Catalog soon after the 1.9.0 release. ### Fixed Issues There are no fixed issues in this release. diff --git a/content/docs/csidriver/release/unity.md b/content/docs/csidriver/release/unity.md index 08ffc6e743..feb5ced18b 100644 --- a/content/docs/csidriver/release/unity.md +++ b/content/docs/csidriver/release/unity.md @@ -3,7 +3,7 @@ title: Unity XT description: Release notes for Unity XT CSI driver --- -## Release Notes - CSI Unity XT v2.3.0 +## Release Notes - CSI Unity XT v2.4.0 ### New Features/Changes diff --git a/content/docs/csidriver/upgradation/drivers/operator.md b/content/docs/csidriver/upgradation/drivers/operator.md index eab8bedd28..782d6ef1e5 100644 --- a/content/docs/csidriver/upgradation/drivers/operator.md +++ b/content/docs/csidriver/upgradation/drivers/operator.md @@ -13,7 +13,7 @@ Dell CSI Operator can be upgraded based on the supported platforms in one of the ### Using Installation Script -1. Clone and checkout the required dell-csi-operator version using `git clone -b v1.8.0 https://github.com/dell/dell-csi-operator.git`. +1. Clone and checkout the required dell-csi-operator version using `git clone -b v1.9.0 https://github.com/dell/dell-csi-operator.git`. 2. cd dell-csi-operator 3. Execute `bash scripts/install.sh --upgrade` . This command will install the latest version of the operator. >Note: Dell CSI Operator version 1.4.0 and higher would install to the 'dell-csi-operator' namespace by default. diff --git a/content/docs/csidriver/upgradation/drivers/unity.md b/content/docs/csidriver/upgradation/drivers/unity.md index 26b4e4d47d..a1bfe7a3cc 100644 --- a/content/docs/csidriver/upgradation/drivers/unity.md +++ b/content/docs/csidriver/upgradation/drivers/unity.md @@ -20,9 +20,9 @@ You can upgrade the CSI Driver for Dell Unity XT using Helm or Dell CSI Operator Preparing myvalues.yaml is the same as explained in the install section. -To upgrade the driver from csi-unity v2.2.0 to csi-unity v2.3.0 +To upgrade the driver from csi-unity v2.3.0 to csi-unity v2.4.0 -1. Get the latest csi-unity v2.3.0 code from Github using using `git clone -b v2.3.0 https://github.com/dell/csi-unity.git`. +1. Get the latest csi-unity v2.4.0 code from Github using using `git clone -b v2.4.0 https://github.com/dell/csi-unity.git`. 2. Copy the helm/csi-unity/values.yaml to the new location csi-unity/dell-csi-helm-installer and rename it to myvalues.yaml. Customize settings for installation by editing myvalues.yaml as needed. 3. Navigate to csi-unity/dell-csi-hem-installer folder and execute this command: `./csi-install.sh --namespace unity --values ./myvalues.yaml --upgrade` From a9c6b1af63faa722163bb48436dd2435b451e710 Mon Sep 17 00:00:00 2001 From: JacobGros Date: Tue, 23 Aug 2022 11:52:19 -0400 Subject: [PATCH 25/55] Powerflex 2.4 releasenotes (#331) * Doc modification (#307) * csi-powerflex 2.4 release notes * Update powerflex.md * remove extra spaces * remove extra space Co-authored-by: Adarsh Kumar Yadav <109620911+adarsh-dell@users.noreply.github.com> Co-authored-by: Rajshree Khare --- content/docs/csidriver/release/powerflex.md | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/content/docs/csidriver/release/powerflex.md b/content/docs/csidriver/release/powerflex.md index 6008b37b0f..b77837c82e 100644 --- a/content/docs/csidriver/release/powerflex.md +++ b/content/docs/csidriver/release/powerflex.md @@ -3,19 +3,16 @@ title: PowerFlex description: Release notes for PowerFlex CSI driver --- -## Release Notes - CSI PowerFlex v2.3.0 +## Release Notes - CSI PowerFlex v2.4.0 ### New Features/Changes -- Added support to configure fsGroupPolicy -- Removed beta volumesnapshotclass sample files. -- Added support for Kubernetes 1.24. -- Added support for OpenShift 4.10. -- Fixed handling of idempotent snapshots. +- Added InstallationID annotation for volume attributes. +- Added optional parameter protectionDomain to storageclass. +- RHEL 8.6 support added ### Fixed Issues -- Added label to driver node pod for Resiliency protection. -- Updated values file to use patched image of vg-snapshotter. +- Enhancements to volume group snapshotter. ### Known Issues From 78b1ee30889c50254eea42c526ed818b6fa5eb12 Mon Sep 17 00:00:00 2001 From: Fernando Alfaro Campos Date: Tue, 23 Aug 2022 13:05:06 -0400 Subject: [PATCH 26/55] Add static provisioning example to PowerFlex (#321) --- content/docs/csidriver/features/powerflex.md | 63 ++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/content/docs/csidriver/features/powerflex.md b/content/docs/csidriver/features/powerflex.md index cfc331a718..f39abd8d26 100644 --- a/content/docs/csidriver/features/powerflex.md +++ b/content/docs/csidriver/features/powerflex.md @@ -522,6 +522,69 @@ Then run: this test deploys the pod with two ephemeral volumes, and write some data to them before deleting the pod. When creating ephemeral volumes, it is important to specify the following within the volumeAttributes section: volumeName, size, storagepool, and if you want to use a non-default array, systemID. +## Consuming Existing Volumes with Static Provisioning + +To use existing volumes from PowerFlex array as Peristent volumes in your Kubernetes environment, perform these steps: +1. Log into one of the MDMs of the PowerFlex cluster. +2. Execute these commands to retrieve the `systemID` and `volumeID`. + 1. `scli --mdm_ip --login --username --password ` + - **Output:** `Logged in. User role is SuperUser. System ID is ` + 2. `scli --query_volume --volume_name ` + - **Output:** `Volume ID: Name: ` +3. Create PersistentVolume and use this volume ID in the volumeHandle with the format `systemID`-`volumeID` in the manifest. Modify other parameters according to your needs. +```yaml +apiVersion: v1 +kind: PersistentVolume +metadata: + name: existingVol +spec: + capacity: + storage: 8Gi + csi: + driver: csi-vxflexos.dellemc.com + volumeHandle: - + volumeMode: Filesystem + accessModes: + - ReadWriteOnce + storageClassName: vxflexos +``` +4. Create PersistentVolumeClaim to use this PersistentVolume. +```yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: pvol +spec: + accessModes: + - ReadWriteOnce + volumeMode: Filesystem + resources: + requests: + storage: 8Gi + storageClassName: vxflexos +``` +5. Then use this PVC as a volume in a pod. +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: static-prov-pod +spec: + containers: + - name: test + image: busybox + command: [ "sleep", "3600" ] + volumeMounts: + - mountPath: "/data0" + name: pvol + volumes: + - name: pvol + persistentVolumeClaim: + claimName: pvol +``` +6. After the pod is `Ready` and `Running`, you can start to use this pod and volume. + +**Note:** Retrieval of the volume ID is possible through the UI. You must select the volume, navigate to `Details` section and click the volume in the graph. This selection will set the filter to the desired volume. At this point the volume ID can be found in the URL. ## Dynamic Logging Configuration From 26c118bf53bf5ab4c13f18b1f07a3bfcb94ae89b Mon Sep 17 00:00:00 2001 From: Aaron Tye Date: Tue, 23 Aug 2022 15:52:51 -0400 Subject: [PATCH 27/55] [bug-410]: Authorization backup and restore (#320) * finish rpm * finish helm * remove below and cleanup code blocks * add sections --- .../Backup and Restore/_index.md | 12 ++ .../Backup and Restore/helm/_index.md | 115 +++++++++++++++++ .../Backup and Restore/rpm/_index.md | 121 ++++++++++++++++++ 3 files changed, 248 insertions(+) create mode 100644 content/docs/authorization/Backup and Restore/_index.md create mode 100644 content/docs/authorization/Backup and Restore/helm/_index.md create mode 100644 content/docs/authorization/Backup and Restore/rpm/_index.md diff --git a/content/docs/authorization/Backup and Restore/_index.md b/content/docs/authorization/Backup and Restore/_index.md new file mode 100644 index 0000000000..816195bbd7 --- /dev/null +++ b/content/docs/authorization/Backup and Restore/_index.md @@ -0,0 +1,12 @@ +--- +title: Backup and Restore +linktitle: Backup and Restore +weight: 2 +description: Methods to backup and restore CSM Authorization +tags: + - backup + - restore + - csm-authorization +--- + +Backup and Restore information for CSM Authorization can be found in this section. \ No newline at end of file diff --git a/content/docs/authorization/Backup and Restore/helm/_index.md b/content/docs/authorization/Backup and Restore/helm/_index.md new file mode 100644 index 0000000000..7ba38bff0b --- /dev/null +++ b/content/docs/authorization/Backup and Restore/helm/_index.md @@ -0,0 +1,115 @@ +--- +title: Helm +linktitle: Helm +description: > + Dell Technologies (Dell) Container Storage Modules (CSM) for Authorization Helm backup and restore +--- + +## Roles + + +Role data is stored in the `common` Config Map. + +### Steps to execute in the existing Authorization deployment + +1. Save the role data by saving the `common` configMap to a file. + +``` +kubectl -n get configMap common -o yaml > roles.yaml +``` + +### Steps to execute in the Authorization deployment to restore + +1. Delete the existing `common` configMap. + +``` +kubectl -n delete configMap common +``` + +2. Apply the file containing the backed-up role data. + +``` +kubectl apply -f roles.yaml +``` + +3. Restart the `proxy-server` deployment. + +``` +kubectl -n rollout restart deploy/proxy-server +deployment.apps/proxy-server restarted +``` + +## Storage + +Storage data is stored in the `karavi-storage-secret` Secret. + +### Steps to execute in the existing Authorization deployment + +1. Save the storage data by saving the `karavi-storage-secret` Secret to a file. + +``` +kubectl -n get secret karavi-storage-secret -o yaml > storage.yaml +``` + +### Steps to execute in the Authorization deployment to restore + +1. Delete the existing `karavi-storage-secret` secret. + +``` +kubectl -n delete secret karavi-storage-secret +``` + +2. Apply the file containing the storage data created in step 1. + +``` +kubectl apply -f storage.yaml +``` + +3. Restart the `proxy-server` deployment. + +``` +kubectl -n rollout restart deploy/proxy-server +deployment.apps/proxy-server restarted +``` + +## Tenants, Quota, and Volume ownership + +Redis is used to store application data regarding [tenants, quota, and volume ownership](../../design#quota--volume-ownership) with the Storage Class specified in the `redis.storageClass` parameter in the values file, or with the default Storage Class if that parameter was not specified. + +The Persistent Volume for Redis is dynamically provisioned by this Storage Class with the `redis-primary-pv-claim` Persistent Volume Claim. See the example. + +``` +kubectl get persistentvolume +NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE +k8s-ab74921ab9 8Gi RWO Delete Bound authorization/redis-primary-pv-claim 112m +``` + +### Steps to execute in the existing Authorization deployment + +1. Create a backup of this volume, typically via snapshot and/or replication, and create a Persistent Volume Claim using this backup by following the Storage Class's provisioner documentation. + +### Steps to execute in the Authorization deployment to restore + +1. Edit the `redis-primary` Deployment to use the Persistent Volume Claim associated with the backup by running: + +`kubectl -n edit deploy/redis-primary` + +The Deployment has a volumes field that should look like this: + +``` +volumes: +- name: redis-primary-volume + persistentVolumeClaim: + claimName: redis-primary-pv-claim +``` + +Replace the value of `claimName` with the name of the Persisent Volume Claim associated with the backup. If the new Persisent Volume Claim name is `redis-backup`, you would edit the deployment to look like this: + +``` +volumes: +- name: redis-primary-volume + persistentVolumeClaim: + claimName: redis-backup +``` + +Once saved, Redis will now use the backup volume. \ No newline at end of file diff --git a/content/docs/authorization/Backup and Restore/rpm/_index.md b/content/docs/authorization/Backup and Restore/rpm/_index.md new file mode 100644 index 0000000000..4821c6b89c --- /dev/null +++ b/content/docs/authorization/Backup and Restore/rpm/_index.md @@ -0,0 +1,121 @@ +--- +title: RPM +linktitle: RPM +description: > + Dell Technologies (Dell) Container Storage Modules (CSM) for Authorization RPM backup and restore +--- + +## Roles + +Role data is stored in the `common` Config Map in the underlying `k3s` deployment. + +### Steps to execute in the existing Authorization deployment + +1. Save the role data by saving the `common` configMap to a file. + +``` +k3s kubectl -n karavi get configMap common -o yaml > roles.yaml +``` + +### Steps to execute in the Authorization deployment to restore + +1. Delete the existing `common` configMap. + +``` +k3s kubectl -n karavi delete configMap common +``` + +2. Apply the file containing the role data created in step 1. + +``` +k3s kubectl apply -f roles.yaml +``` + +3. Restart the `proxy-server` deployment. + +``` +k3s kubectl -n karavi rollout restart deploy/proxy-server +deployment.apps/proxy-server restarted +``` + +## Storage + +Storage data is stored in the `karavi-storage-secret` Secret in the underlying `k3s` deployment. + +### Steps to execute in the existing Authorization deployment + +1. Save the storage data by saving the `karavi-storage-secret` secret to a file. + +``` +k3s kubectl -n karavi get secret karavi-storage-secret -o yaml > storage.yaml +``` + +### Steps to execute in the Authorization deployment to restore + +1. Delete the existing `karavi-storage-secret` secret. + +``` +k3s kubectl -n karavi delete secret karavi-storage-secret +``` + +2. Apply the file containing the storage data created in step 1. + +``` +k3s kubectl apply -f storage.yaml +``` + +3. Restart the `proxy-server` deployment. + +``` +k3s kubectl -n karavi rollout restart deploy/proxy-server +deployment.apps/proxy-server restarted +``` + +## Tenants, Quota, and Volume ownership + +Redis is used to store application data regarding [tenants, quota, and volume ownership](../../design#quota--volume-ownership). This data is stored on the system under `/var/lib/rancher/k3s/storage//appendonly.aof`. + +`appendonly.aof` can be copied and used to restore this appliation data in Authorization deployments. See the example. + +### Steps to execute in the existing Authorization deployment + +1. Determine the Persistent Volume related to the `redis-primary-pv-claim` Persistent Volume Claim. + +``` +k3s kubectl -n karavi get pvc +NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE +redis-primary-pv-claim Bound pvc-12d8cc05-910d-45bd-9f30-f6807b287a69 8Gi RWO local-path 65m +``` + +The Persistent Volume related to the `redis-primary-pv-claim` Persistent Volume Claim is `pvc-12d8cc05-910d-45bd-9f30-f6807b287a69`. + +2. Copy `appendonly.aof` from the appropriate path to another location. + +``` +cp /var/lib/rancher/k3s/storage/pvc-12d8cc05-910d-45bd-9f30-f6807b287a69/appendonly.aof /path/to/copy/appendonly.aof +``` + +### Steps to execute in the Authorization deployment to restore + +1. Determine the Persistent Volume related to the `redis-primary-pv-claim` Persistent Volume Claim. + +``` +k3s kubectl -n karavi get pvc +NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE +redis-primary-pv-claim Bound pvc-e7ea31bf-3d79-41fc-88d8-50ba356a298b 8Gi RWO local-path 65m +``` + +The Persistent Volume related to the `redis-primary-pv-claim` Persistent Volume Claim is `pvc-e7ea31bf-3d79-41fc-88d8-50ba356a298b`. + +2. Copy/Overwrite the `appendonly.aof` in the appropriate path using the file copied in step 2. + +``` +cp /path/to/copy/appendonly.aof /var/lib/rancher/k3s/storage/pvc-e7ea31bf-3d79-41fc-88d8-50ba356a298b/appendonly.aof +``` + +3. Restart the `redis-primary` deployment. + +``` +k3s kubectl -n karavi rollout restart deploy/redis-primary +deployment.apps/redis-primary restarted +``` From 6b783f3141be2a97bf0d529abcc826464bc24712 Mon Sep 17 00:00:00 2001 From: baoy1 <105041111+baoy1@users.noreply.github.com> Date: Wed, 24 Aug 2022 20:35:51 +0800 Subject: [PATCH 28/55] PowerScale Obs doc update for CSM Observability 1.3.0 (#322) --- content/docs/observability/_index.md | 37 ++++----- .../docs/observability/deployment/_index.md | 78 +++++++++++++++---- content/docs/observability/deployment/helm.md | 46 ++++++++++- .../docs/observability/deployment/offline.md | 44 ++++++++--- .../docs/observability/deployment/online.md | 5 +- content/docs/observability/design/_index.md | 5 +- .../docs/observability/metrics/powerscale.md | 45 +++++++++++ content/docs/observability/release/_index.md | 11 ++- .../observability/troubleshooting/_index.md | 2 +- content/docs/observability/upgrade/_index.md | 41 +++++++++- 10 files changed, 257 insertions(+), 57 deletions(-) create mode 100644 content/docs/observability/metrics/powerscale.md diff --git a/content/docs/observability/_index.md b/content/docs/observability/_index.md index 8f9f05fc63..a014c860eb 100644 --- a/content/docs/observability/_index.md +++ b/content/docs/observability/_index.md @@ -14,13 +14,14 @@ Description: > Metrics data is collected and pushed to the [OpenTelemetry Collector](https://github.com/open-telemetry/opentelemetry-collector), so it can be processed, and exported in a format consumable by Prometheus. SSL certificates for TLS between nodes are handled by [cert-manager](https://github.com/jetstack/cert-manager). -CSM for Observability is composed of several services, each living in its own GitHub repository, that can be installed following one of the three deployments we support [here](deployment). Contributions can be made to this repository or any of the CSM for Observability repositories listed below. +CSM for Observability is composed of several services, each living in its own GitHub repository, that can be installed following one of the four deployments we support [here](deployment). Contributions can be made to this repository or any of the CSM for Observability repositories listed below. {{
}} | Name | Repository | Description | | ---- | --------- | ----------- | -| Performance Metrics for PowerFlex | [CSM Metrics for PowerFlex](https://github.com/dell/karavi-metrics-powerflex) | Performance Metrics for PowerFlex captures telemetry data about Kubernetes storage usage and performance obtained through the CSI (Container Storage Interface) Driver for Dell PowerFlex. The metrics service pushes it to the OpenTelemetry Collector, so it can be processed, and exported in a format consumable by Prometheus. Prometheus can then be configured to scrape the OpenTelemetry Collector exporter endpoint to provide metrics so they can be visualized in Grafana. Please visit the repository for more information. | -| Performance Metrics for PowerStore | [CSM Metrics for PowerStore](https://github.com/dell/csm-metrics-powerstore) | Performance Metrics for PowerStore captures telemetry data about Kubernetes storage usage and performance obtained through the CSI (Container Storage Interface) Driver for Dell PowerStore. The metrics service pushes it to the OpenTelemetry Collector, so it can be processed, and exported in a format consumable by Prometheus. Prometheus can then be configured to scrape the OpenTelemetry Collector exporter endpoint to provide metrics so they can be visualized in Grafana. Please visit the repository for more information. | +| Metrics for PowerFlex | [CSM Metrics for PowerFlex](https://github.com/dell/karavi-metrics-powerflex) | Metrics for PowerFlex captures telemetry data about Kubernetes storage usage and performance obtained through the CSI (Container Storage Interface) Driver for Dell PowerFlex. The metrics service pushes it to the OpenTelemetry Collector, so it can be processed, and exported in a format consumable by Prometheus. Prometheus can then be configured to scrape the OpenTelemetry Collector exporter endpoint to provide metrics, so they can be visualized in Grafana. Please visit the repository for more information. | +| Metrics for PowerStore | [CSM Metrics for PowerStore](https://github.com/dell/csm-metrics-powerstore) | Metrics for PowerStore captures telemetry data about Kubernetes storage usage and performance obtained through the CSI (Container Storage Interface) Driver for Dell PowerStore. The metrics service pushes it to the OpenTelemetry Collector, so it can be processed, and exported in a format consumable by Prometheus. Prometheus can then be configured to scrape the OpenTelemetry Collector exporter endpoint to provide metrics, so they can be visualized in Grafana. Please visit the repository for more information. | +| Metrics for PowerScale | [CSM Metrics for PowerScale](https://github.com/dell/csm-metrics-powerscale) | Metrics for PowerScale captures telemetry data about Kubernetes storage usage and performance obtained through the CSI (Container Storage Interface) Driver for Dell PowerScale. The metrics service pushes it to the OpenTelemetry Collector, so it can be processed, and exported in a format consumable by Prometheus. Prometheus can then be configured to scrape the OpenTelemetry Collector exporter endpoint to provide metrics, so they can be visualized in Grafana. Please visit the repository for more information. | | Volume Topology | [CSM Topology](https://github.com/dell/karavi-topology) | Topology provides Kubernetes administrators with the topology data related to containerized storage that is provisioned by a CSI (Container Storage Interface) Driver for Dell storage products. The Topology service is enabled by default as part of the CSM for Observability Helm Chart [values file](https://github.com/dell/helm-charts/blob/main/charts/karavi-observability/values.yaml). Please visit the repository for more information. | {{
}} @@ -31,14 +32,14 @@ CSM for Observability provides the following capabilities: {{}} | Capability | PowerMax | PowerFlex | Unity XT | PowerScale | PowerStore | | - | :-: | :-: | :-: | :-: | :-: | -| Collect and expose Volume Metrics via the OpenTelemetry Collector | no | yes | no | no | yes | +| Collect and expose Volume Metrics via the OpenTelemetry Collector | no | yes | no | yes | yes | | Collect and expose File System Metrics via the OpenTelemetry Collector | no | no | no | no | yes | | Collect and expose export (k8s) node metrics via the OpenTelemetry Collector | no | yes | no | no | no | -| Collect and expose filesystem capacity metrics via the OpenTelemetry Collector | no | no | no | no | yes | -| Collect and expose block storage capacity metrics via the OpenTelemetry Collector | no | yes | no | no | yes | -| Non-disruptive config changes | no | yes | no | no | yes | -| Non-disruptive log level changes | no | yes | no | no | yes | -| Grafana Dashboards for displaying metrics and topology data | no | yes | no | no | yes | +| Collect and expose block storage metrics via the OpenTelemetry Collector | no | yes | no | no | yes | +| Collect and expose file storage metrics via the OpenTelemetry Collector | no | no | no | yes | yes | +| Non-disruptive config changes | no | yes | no | yes | yes | +| Non-disruptive log level changes | no | yes | no | yes | yes | +| Grafana Dashboards for displaying metrics and topology data | no | yes | no | yes | yes | {{
}} ## Supported Operating Systems/Container Orchestrator Platforms @@ -56,9 +57,9 @@ CSM for Observability provides the following capabilities: ## Supported Storage Platforms {{}} -| | PowerFlex | PowerStore | -|---------------|:-------------------:|:----------------:| -| Storage Array | 3.5.x, 3.6.x | 1.0.x, 2.0.x, 2.1.x | +| | PowerFlex | PowerStore | PowerScale | +|---------------|:-------------------:|:----------------:|:----------------:| +| Storage Array | 3.5.x, 3.6.x | 1.0.x, 2.0.x, 2.1.x | 8.x, 9.x | {{
}} ## Supported CSI Drivers @@ -69,6 +70,7 @@ CSM for Observability supports the following CSI drivers and versions. | ------------- | ---------- | ------------------ | | CSI Driver for Dell PowerFlex | [csi-powerflex](https://github.com/dell/csi-powerflex) | v2.0 + | | CSI Driver for Dell PowerStore | [csi-powerstore](https://github.com/dell/csi-powerstore) | v2.0 + | +| CSI Driver for Dell PowerScale | [csi-powerscale](https://github.com/dell/csi-powerscale) | v2.0 + | {{}} ## Topology Data @@ -78,17 +80,16 @@ CSM for Observability provides Kubernetes administrators with the topology data | Field | Description | | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | Namespace | The namespace associated with the persistent volume claim | +| Persistent Volume Claim | The name of the persistent volume claim associated with the persistent volume | | Persistent Volume | The name of the persistent volume | +| Storage Class | The storage class associated with the persistent volume | +| Provisioned Size | The provisioned size of the persistent volume | | Status | The status of the persistent volume. "Released" indicates the persistent volume does not have a claim. "Bound" indicates the persistent volume has a claim | -| Persistent Volume Claim | The name of the persistent volume claim associated with the persistent volume | -| CSI Driver | The name of the CSI driver that was responsible for provisioning the volume on the storage system | | Created | The date the persistent volume was created | -| Provisioned Size | The provisioned size of the persistent volume | -| Storage Class | The storage class associated with the persistent volume | -| Storage System Volume Name | The name of the volume on the storage system that is associated with the persistent volume | -| Storage Pool | The storage pool name the volume/storage class is associated with | | Storage System | The storage system ID or IP address the volume is associated with | | Protocol | The storage system protocol type the volume/storage class is associated with | +| Storage Pool | The storage pool name the volume/storage class is associated with | +| Storage System Volume Name | The name of the volume on the storage system that is associated with the persistent volume | {{}} ## TLS Encryption diff --git a/content/docs/observability/deployment/_index.md b/content/docs/observability/deployment/_index.md index 50efaa2c3f..62b10741bb 100644 --- a/content/docs/observability/deployment/_index.md +++ b/content/docs/observability/deployment/_index.md @@ -239,8 +239,8 @@ Below are the steps to deploy a new Grafana instance into your Kubernetes cluste dashboards: enabled: true - ## Additional grafana server CofigMap mounts - ## Defines additional mounts with CofigMap. CofigMap must be manually created in the namespace. + ## Additional grafana server ConfigMap mounts + ## Defines additional mounts with ConfigMap. ConfigMap must be manually created in the namespace. extraConfigmapMounts: [] # If you created a ConfigMap on the previous step, delete [] and uncomment the lines below # - name: certs-configmap # mountPath: /etc/ssl/certs/ca-certificates.crt @@ -275,23 +275,29 @@ Below are the steps to deploy a new Grafana instance into your Kubernetes cluste Once Grafana is properly configured, you can import the pre-built observability dashboards. Log into Grafana and click the + icon in the side menu. Then click Import. From here you can upload the JSON files or paste the JSON text directly into the text area. Below are the locations of the dashboards that can be imported: -| Dashboard | Description | -| ------------------- | --------------------------------- | -| [PowerFlex: I/O Performance by Kubernetes Node](https://github.com/dell/karavi-observability/blob/main/grafana/dashboards/powerflex/sdc_io_metrics.json) | Provides visibility into the I/O performance metrics (IOPS, bandwidth, latency) by Kubernetes node | -| [PowerFlex: I/O Performance by Provisioned Volume](https://github.com/dell/karavi-observability/blob/main/grafana/dashboards/powerflex/volume_io_metrics.json) | Provides visibility into the I/O performance metrics (IOPS, bandwidth, latency) by volume | -| [PowerFlex: Storage Pool Consumption By CSI Driver](https://github.com/dell/karavi-observability/blob/main/grafana/dashboards/powerflex/storage_consumption.json) | Provides visibility into the total, used, and available capacity for a storage class and associated underlying storage construct. | -| [PowerStore: I/O Performance by Provisioned Volume](https://github.com/dell/karavi-observability/blob/main/grafana/dashboards/powerstore/volume_io_metrics.json) | *As of Release 0.4.0:* Provides visibility into the I/O performance metrics (IOPS, bandwidth, latency) by volume | -| [CSI Driver Provisioned Volume Topology](https://github.com/dell/karavi-observability/blob/main/grafana/dashboards/topology/topology.json) | Provides visibility into Dell CSI (Container Storage Interface) driver provisioned volume characteristics in Kubernetes correlated with volumes on the storage system. | +| Dashboard | Description | +|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [PowerFlex: I/O Performance by Kubernetes Node](https://github.com/dell/karavi-observability/blob/main/grafana/dashboards/powerflex/sdc_io_metrics.json) | Provides visibility into the I/O performance metrics (IOPS, bandwidth, latency) by Kubernetes node | +| [PowerFlex: I/O Performance by Provisioned Volume](https://github.com/dell/karavi-observability/blob/main/grafana/dashboards/powerflex/volume_io_metrics.json) | Provides visibility into the I/O performance metrics (IOPS, bandwidth, latency) by volume | +| [PowerFlex: Storage Pool Consumption By CSI Driver](https://github.com/dell/karavi-observability/blob/main/grafana/dashboards/powerflex/storage_consumption.json) | Provides visibility into the total, used and available capacity for a storage class and associated underlying storage construct | +| [PowerStore: I/O Performance by Provisioned Volume](https://github.com/dell/karavi-observability/blob/main/grafana/dashboards/powerstore/volume_io_metrics.json) | Provides visibility into the I/O performance metrics (IOPS, bandwidth, latency) by volume | +| [PowerStore: I/O Performance by File System](https://github.com/dell/karavi-observability/blob/main/grafana/dashboards/powerstore/filesystem_io_metrics.json) | Provides visibility into the I/O performance metrics (IOPS, bandwidth, latency) by filesystem | +| [PowerStore: Array and Storage Class Consumption By CSI Driver](https://github.com/dell/karavi-observability/blob/main/grafana/dashboards/powerstore/storage_consumption.json) | Provides visibility into the total, used and available capacity for a storage class and associated underlying storage construct | +| [PowerScale: I/O Performance by Cluster](https://github.com/dell/karavi-observability/blob/main/grafana/dashboards/powerscale/cluster_io_metrics.json) | Provides visibility into the I/O performance metrics (IOPS, bandwidth) by cluster | +| [PowerScale: Capacity by Cluster](https://github.com/dell/karavi-observability/blob/main/grafana/dashboards/powerscale/cluster_capacity.json) | Provides visibility into the total, used, available capacity and directory quota capacity by cluster | +| [PowerScale: Capacity by Quota](https://github.com/dell/karavi-observability/blob/main/grafana/dashboards/powerscale/volume_capacity.json) | Provides visibility into the subscribed, remaining capacity and usage by quota | +| [CSI Driver Provisioned Volume Topology](https://github.com/dell/karavi-observability/blob/main/grafana/dashboards/topology/topology.json) | Provides visibility into Dell CSI (Container Storage Interface) driver provisioned volume characteristics in Kubernetes correlated with volumes on the storage system. | ## Dynamic Configuration Some parameters can be configured/updated during runtime without restarting the CSM for Observability services. These parameters will be stored in ConfigMaps that can be updated on the Kubernetes cluster. This will automatically change the settings on the services. -| ConfigMap | Observability Service | Parameters | -| - | - | - | -| karavi-metrics-powerflex-configmap | karavi-metrics-powerflex |
  • COLLECTOR_ADDR
  • PROVISIONER_NAMES
  • POWERFLEX_SDC_METRICS_ENABLED
  • POWERFLEX_SDC_IO_POLL_FREQUENCY
  • POWERFLEX_VOLUME_IO_POLL_FREQUENCY
  • POWERFLEX_VOLUME_METRICS_ENABLED
  • POWERFLEX_STORAGE_POOL_METRICS_ENABLED
  • POWERFLEX_STORAGE_POOL_POLL_FREQUENCY
  • POWERFLEX_MAX_CONCURRENT_QUERIES
  • LOG_LEVEL
  • LOG_FORMAT
| -| karavi-metrics-powerstore-configmap | karavi-metrics-powerstore |
  • COLLECTOR_ADDR
  • PROVISIONER_NAMES
  • POWERSTORE_VOLUME_METRICS_ENABLED
  • POWERSTORE_VOLUME_IO_POLL_FREQUENCY
  • POWERSTORE_SPACE_POLL_FREQUENCY
  • POWERSTORE_ARRAY_POLL_FREQUENCY
  • POWERSTORE_FILE_SYSTEM_POLL_FREQUENCY
  • POWERSTORE_MAX_CONCURRENT_QUERIES
  • LOG_LEVEL
  • LOG_FORMAT
  • ZIPKIN_URI
  • ZIPKIN_SERVICE_NAME
  • ZIPKIN_PROBABILITY
| -| karavi-topology-configmap | karavi-topology |
  • PROVISIONER_NAMES
  • LOG_LEVEL
  • LOG_FORMAT
  • ZIPKIN_URI
  • ZIPKIN_SERVICE_NAME
  • ZIPKIN_PROBABILITY
| +| ConfigMap | Observability Service | Parameters | +|-------------------------------------|---------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| karavi-metrics-powerflex-configmap | karavi-metrics-powerflex |
  • COLLECTOR_ADDR
  • PROVISIONER_NAMES
  • POWERFLEX_SDC_METRICS_ENABLED
  • POWERFLEX_SDC_IO_POLL_FREQUENCY
  • POWERFLEX_VOLUME_IO_POLL_FREQUENCY
  • POWERFLEX_VOLUME_METRICS_ENABLED
  • POWERFLEX_STORAGE_POOL_METRICS_ENABLED
  • POWERFLEX_STORAGE_POOL_POLL_FREQUENCY
  • POWERFLEX_MAX_CONCURRENT_QUERIES
  • LOG_LEVEL
  • LOG_FORMAT
| +| karavi-metrics-powerstore-configmap | karavi-metrics-powerstore |
  • COLLECTOR_ADDR
  • PROVISIONER_NAMES
  • POWERSTORE_VOLUME_METRICS_ENABLED
  • POWERSTORE_VOLUME_IO_POLL_FREQUENCY
  • POWERSTORE_SPACE_POLL_FREQUENCY
  • POWERSTORE_ARRAY_POLL_FREQUENCY
  • POWERSTORE_FILE_SYSTEM_POLL_FREQUENCY
  • POWERSTORE_MAX_CONCURRENT_QUERIES
  • LOG_LEVEL
  • LOG_FORMAT
  • ZIPKIN_URI
  • ZIPKIN_SERVICE_NAME
  • ZIPKIN_PROBABILITY
| +| karavi-metrics-powerscale-configmap | karavi-metrics-powerscale |
  • COLLECTOR_ADDR
  • PROVISIONER_NAMES
  • POWERSCALE_MAX_CONCURRENT_QUERIES
  • POWERSCALE_CAPACITY_METRICS_ENABLED
  • POWERSCALE_PERFORMANCE_METRICS_ENABLED
  • POWERSCALE_CLUSTER_CAPACITY_POLL_FREQUENCY
  • POWERSCALE_CLUSTER_PERFORMANCE_POLL_FREQUENCY
  • POWERSCALE_QUOTA_CAPACITY_POLL_FREQUENCY
  • POWERSCALE_ISICLIENT_INSECURE
  • POWERSCALE_ISICLIENT_AUTH_TYPE
  • POWERSCALE_ISICLIENT_VERBOSE
  • LOG_LEVEL
  • LOG_FORMAT
| +| karavi-topology-configmap | karavi-topology |
  • PROVISIONER_NAMES
  • LOG_LEVEL
  • LOG_FORMAT
  • ZIPKIN_URI
  • ZIPKIN_SERVICE_NAME
  • ZIPKIN_PROBABILITY
| To update any of these settings, run the following command on the Kubernetes cluster then save the updated ConfigMap data. @@ -387,29 +393,57 @@ In this case, all storage system requests made by CSM for Observability will be #### Update the Authorization Module Token +##### CSI Driver for Dell PowerFlex + 1. Delete the current `proxy-authz-tokens` Secret from the CSM namespace. ```console $ kubectl delete secret proxy-authz-tokens -n [CSM_NAMESPACE] ``` -2. Copy the `proxy-authz-tokens` Secret from a CSI Driver to the CSM namespace. +2. Copy the `proxy-authz-tokens` Secret from the CSI Driver for Dell PowerFlex to the CSM namespace. ```console $ kubectl get secret proxy-authz-tokens -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSM_CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f - ``` +##### CSI Driver for Dell PowerScale + +1. Delete the current `isilon-proxy-authz-tokens` Secret from the CSM namespace. + ```console + $ kubectl delete secret isilon-proxy-authz-tokens -n [CSM_NAMESPACE] + ``` + +2. Copy the `isilon-proxy-authz-tokens` Secret from the CSI Driver for Dell PowerScale namespace to the CSM namespace. + ```console + $ kubectl get secret proxy-authz-tokens -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSM_CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/'| sed 's/name: proxy-authz-tokens/name: isilon-proxy-authz-tokens/' | kubectl create -f + ``` + #### Update Storage Systems If the list of storage systems managed by a Dell CSI Driver have changed, the following steps can be performed to update CSM for Observability to reference the updated systems: +##### CSI Driver for Dell PowerFlex + 1. Delete the current `karavi-authorization-config` Secret from the CSM namespace. ```console $ kubectl delete secret proxy-authz-tokens -n [CSM_NAMESPACE] ``` -2. Copy the `karavi-authorization-config` Secret from the CSI Driver namespace to CSM for Observability namespace. +2. Copy the `karavi-authorization-config` Secret from the CSI Driver for Dell PowerFlex namespace to CSM for Observability namespace. ```console $ kubectl get secret karavi-authorization-config -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSM_CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f - ``` +##### CSI Driver for Dell PowerScale + +1. Delete the current `isilon-karavi-authorization-config` Secret from the CSM namespace. + ```console + $ kubectl delete secret isilon-karavi-authorization-config -n [CSM_NAMESPACE] + ``` + +2. Copy the isilon-karavi-authorization-config Secret from the CSI Driver for Dell PowerScale namespace to CSM for Observability namespace. + ```console + $ kubectl get secret karavi-authorization-config -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSM_CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | sed 's/name: karavi-authorization-config/name: isilon-karavi-authorization-config/' | kubectl create -f + ``` + ### When CSM for Observability does not use the Authorization module In this case all storage system requests made by CSM for Observability will not be routed through the Authorization module. The following must be performed: @@ -437,3 +471,15 @@ In this case all storage system requests made by CSM for Observability will not ```console $ kubectl get secret powerstore-config -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f - ``` + +### CSI Driver for Dell PowerScale + +1. Delete the current `isilon-creds` Secret from the CSM namespace. + ```console + $ kubectl delete secret isilon-creds -n [CSM_NAMESPACE] + ``` + +2. Copy the `isilon-creds` Secret from the CSI Driver for Dell PowerScale namespace to the CSM namespace. + ```console + $ kubectl get secret isilon-creds -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f - + ``` \ No newline at end of file diff --git a/content/docs/observability/deployment/helm.md b/content/docs/observability/deployment/helm.md index 02feb6186f..6433b60836 100644 --- a/content/docs/observability/deployment/helm.md +++ b/content/docs/observability/deployment/helm.md @@ -22,7 +22,8 @@ The Container Storage Modules (CSM) for Observability Helm chart bootstraps an O 3. Add the Dell Helm Charts repo `helm repo add dell https://dell.github.io/helm-charts` 4. Copy only the deployed CSI driver entities to the Observability namespace - #### PowerFlex + + ### PowerFlex 1. Copy the config Secret from the CSI PowerFlex namespace into the CSM for Observability namespace: @@ -38,12 +39,30 @@ The Container Storage Modules (CSM) for Observability Helm chart bootstraps an O `kubectl get secret karavi-authorization-config proxy-server-root-certificate proxy-authz-tokens -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -` - #### PowerStore + ### PowerStore 1. Copy the config Secret from the CSI PowerStore namespace into the CSM for Observability namespace: `kubectl get secret powerstore-config -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -` + ### PowerScale + + 1. Copy the config Secret from the CSI PowerScale namespace into the CSM for Observability namespace: + + `kubectl get secret isilon-creds -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -` + + If [CSM for Authorization is enabled](../../../authorization/deployment/#configuring-a-dell-csi-driver-with-csm-for-authorization) for CSI PowerScale, perform these steps: + + 2. Copy the driver configuration parameters ConfigMap from the CSI PowerScale namespace into the CSM for Observability namespace: + + `kubectl get configmap isilon-config-params -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -` + + 3. Copy the `karavi-authorization-config`, `proxy-server-root-certificate`, `proxy-authz-tokens` Secret from the CSI PowerScale namespace into the CSM for Observability namespace: + + `kubectl get secret karavi-authorization-config proxy-server-root-certificate proxy-authz-tokens -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | sed 's/name: karavi-authorization-config/name: isilon-karavi-authorization-config/' | sed 's/name: proxy-server-root-certificate/name: isilon-proxy-server-root-certificate/' | sed 's/name: proxy-authz-tokens/name: isilon-proxy-authz-tokens/' | kubectl create -f -` + + + 5. Configure the [parameters](#configuration) and install the CSM for Observability Helm Chart A default values.yaml file is located [here](https://github.com/dell/helm-charts/blob/main/charts/karavi-observability/values.yaml) that can be used for installation. This can be copied into a file named `myvalues.yaml` and either used as is or modified accordingly. @@ -51,6 +70,7 @@ The Container Storage Modules (CSM) for Observability Helm chart bootstraps an O __Note:__ - The default `values.yaml` is configured to deploy the CSM for Observability Topology service on install. - If CSM for Authorization is enabled for CSI PowerFlex, the `karaviMetricsPowerflex.authorization` parameters must be properly configured in your values file for CSM Observability. + - If CSM for Authorization is enabled for CSI PowerScale, the `karaviMetricsPowerscale.authorization` parameters must be properly configured in your values file for CSM Observability. ```console $ helm install karavi-observability dell/karavi-observability -n [CSM_NAMESPACE] -f myvalues.yaml @@ -106,7 +126,7 @@ The following table lists the configurable parameters of the CSM for Observabili | `karaviMetricsPowerstore.collectorAddr` | Metrics Collector accessible from the Kubernetes cluster | `otel-collector:55680` | | `karaviMetricsPowerstore.provisionerNames` | Provisioner Names used to filter for determining PowerStore volumes (must be a Comma-separated list) | `csi-powerstore.dellemc.com` | | `karaviMetricsPowerstore.volumePollFrequencySeconds` | The polling frequency (in seconds) to gather volume metrics | `10` | -| `karaviMetricsPowerstore.concurrentPowerflexQueries` | The number of simultaneous metrics queries to make to PowerStore (must be less than 10; otherwise, several request errors from PowerStore will ensue.) | `10` | +| `karaviMetricsPowerstore.concurrentPowerstoreQueries` | The number of simultaneous metrics queries to make to PowerStore (must be less than 10; otherwise, several request errors from PowerStore will ensue.) | `10` | | `karaviMetricsPowerstore.volumeMetricsEnabled` | Enable PowerStore Volume Metrics Collection | `true` | | `karaviMetricsPowerstore.endpoint` | Endpoint for pod leader election | `karavi-metrics-powerstore` | | `karaviMetricsPowerstore.service.type` | Kubernetes service type | `ClusterIP` | @@ -115,3 +135,23 @@ The following table lists the configurable parameters of the CSM for Observabili | `karaviMetricsPowerstore.zipkin.uri` | URI of a Zipkin instance where tracing data can be forwarded | | | `karaviMetricsPowerstore.zipkin.serviceName` | Service name used for Zipkin tracing data | `metrics-powerstore`| | `karaviMetricsPowerstore.zipkin.probability` | Percentage of trace information to send to Zipkin (Valid range: 0.0 to 1.0) | `0` | +| `karaviMetricsPowerscale.image` | CSM Metrics for PowerScale Service image | `dellemc/csm-metrics-powerscale:v1.0`| +| `karaviMetricsPowerscale.enabled` | Enable CSM Metrics for PowerScale service | `true` | +| `karaviMetricsPowerscale.collectorAddr` | Metrics Collector accessible from the Kubernetes cluster | `otel-collector:55680` | +| `karaviMetricsPowerscale.provisionerNames` | Provisioner Names used to filter for determining PowerScale volumes (must be a Comma-separated list) | `csi-isilon.dellemc.com` | +| `karaviMetricsPowerscale.capacityMetricsEnabled` | Enable PowerScale capacity metric Collection | `true` | +| `karaviMetricsPowerscale.performanceMetricsEnabled` | Enable PowerScale performance metric Collection | `true` | +| `karaviMetricsPowerscale.clusterCapacityPollFrequencySeconds` | The polling frequency (in seconds) to gather cluster capacity metrics | `30` | +| `karaviMetricsPowerscale.clusterPerformancePollFrequencySeconds` | The polling frequency (in seconds) to gather cluster performance metrics | `20` | +| `karaviMetricsPowerscale.quotaCapacityPollFrequencySeconds` | The polling frequency (in seconds) to gather volume capacity metrics | `30` | +| `karaviMetricsPowerscale.concurrentPowerscaleQueries` | The number of simultaneous metrics queries to make to PowerScale(MUST be less than 10; otherwise, several request errors from PowerScale will ensue. | `10` | +| `karaviMetricsPowerscale.endpoint` | Endpoint for pod leader election | `karavi-metrics-powerscale` | +| `karaviMetricsPowerscale.service.type` | Kubernetes service type | `ClusterIP` | +| `karaviMetricsPowerscale.logLevel` | Output logs that are at or above the given log level severity (Valid values: TRACE, DEBUG, INFO, WARN, ERROR, FATAL, PANIC) | `INFO`| +| `karaviMetricsPowerscale.logFormat` | Output logs in the specified format (Valid values: text, json) | `text` | +| `karaviMetricsPowerscale.isiClientOptions.isiSkipCertificateValidation` | Skip OneFS API server's certificates | `true` | +| `karaviMetricsPowerscale.isiClientOptions.isiAuthType` | 0 to enable session-based Authentication; 1 to enables basic Authentication | `1` | +| `karaviMetricsPowerscale.isiClientOptions.isiLogVerbose` | Decide High/Medium/Low content of the OneFS REST API message | `0` | +| `karaviMetricsPowerscale.authorization.enabled` | [Authorization](../../../authorization) is an optional feature to apply credential shielding of the backend PowerScale. | `false` | +| `karaviMetricsPowerscale.authorization.proxyHost` | Hostname of the csm-authorization server. | | +| `karaviMetricsPowerscale.authorization.skipCertificateValidation` | A boolean that enables/disables certificate validation of the csm-authorization server. | | diff --git a/content/docs/observability/deployment/offline.md b/content/docs/observability/deployment/offline.md index b4c5ccd9d6..16b93f1bac 100644 --- a/content/docs/observability/deployment/offline.md +++ b/content/docs/observability/deployment/offline.md @@ -24,9 +24,9 @@ If one Linux system has both internet access and access to an internal registry, Preparing an offline bundle requires the following utilities: -| Dependency | Usage | -| --------------------- | ----- | -| `docker` | `docker` will be used to pull images from public image registries, tag them, and push them to a private registry.
Required on both the system building the offline bundle as well as the system preparing for installation.
Tested version is `docker` 18.09 +| Dependency | Usage | +|------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `docker` | `docker` will be used to pull images from public image registries, tag them, and push them to a private registry.
Required on both the system building the offline bundle as well as the system preparing for installation.
Tested version is `docker` 18.09+ | ### Executing the Installer @@ -72,10 +72,12 @@ To perform an offline installation of a Helm chart, the following steps should b * * Downloading and saving Docker images - dellemc/csm-topology:v0.3.0 - dellemc/csm-metrics-powerflex:v0.3.0 - otel/opentelemetry-collector:0.9.0 - nginxinc/nginx-unprivileged:1.18 + dellemc/csm-topology:v1.3.0 + dellemc/csm-metrics-powerflex:v1.3.0 + dellemc/csm-metrics-powerstore:v1.3.0 + dellemc/csm-metrics-powerscale:v1.3.0 + otel/opentelemetry-collector:0.42.0 + nginxinc/nginx-unprivileged:1.20 * * Compressing offline-karavi-observability-bundle.tar.gz @@ -103,10 +105,12 @@ To perform an offline installation of a Helm chart, the following steps should b * * Loading, tagging, and pushing Docker images to registry :5000/ - dellemc/csm-topology:v0.3.0 -> :5000/csm-topology:v0.3.0 - dellemc/csm-metrics-powerflex:v0.3.0 -> :5000/csm-metrics-powerflex:v0.3.0 - otel/opentelemetry-collector:0.9.0 -> :5000/opentelemetry-collector:0.9.0 - nginxinc/nginx-unprivileged:1.18 -> :5000/nginx-unprivileged:1.18 + dellemc/csm-topology:v1.3.0 -> :5000/csm-topology:v1.3.0 + dellemc/csm-metrics-powerflex:v1.3.0 -> :5000/csm-metrics-powerflex:v1.3.0 + dellemc/csm-metrics-powerstore:v1.3.0 -> :5000/csm-metrics-powerstore:v1.3.0 + dellemc/csm-metrics-powerscale:v1.3.0 -> :5000/csm-metrics-powerscale:v1.3.0 + otel/opentelemetry-collector:0.42.0 -> :5000/opentelemetry-collector:0.42.0 + nginxinc/nginx-unprivileged:1.20 -> :5000/nginx-unprivileged:1.20 ``` ### Perform Helm installation @@ -145,12 +149,28 @@ To perform an offline installation of a Helm chart, the following steps should b [user@anothersystem /home/user/offline-karavi-observability-bundle/helm]# kubectl get secret powerstore-config -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f - ``` -4. Now that the required images have been made available and the Helm chart's configuration updated with references to the internal registry location, installation can proceed by following the instructions that are documented within the Helm chart's repository. + CSI Driver for PowerScale: + ``` + [user@anothersystem /home/user/offline-karavi-observability-bundle/helm]# kubectl get secret isilon-creds -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f - + ``` + + If [CSM for Authorization is enabled](../../../authorization/deployment/#configuring-a-dell-csi-driver-with-csm-for-authorization) for CSI PowerScale, perform these steps: + + ``` + [user@anothersystem /home/user/offline-karavi-observability-bundle/helm]# kubectl get configmap isilon-config-params -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f - + ``` + + ``` + [user@anothersystem /home/user/offline-karavi-observability-bundle/helm]# kubectl get secret karavi-authorization-config proxy-server-root-certificate proxy-authz-tokens -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | sed 's/name: karavi-authorization-config/name: isilon-karavi-authorization-config/' | sed 's/name: proxy-server-root-certificate/name: isilon-proxy-server-root-certificate/' | sed 's/name: proxy-authz-tokens/name: isilon-proxy-authz-tokens/' | kubectl create -f - + ``` + +4. Now that the required images have been made available and the Helm chart's configuration updated with references to the internal registry location, installation can proceed by following the instructions that are documented within the Helm chart's repository. **Note:** - Optionally, you could provide your own [configurations](../helm/#configuration). A sample values.yaml file is located [here](https://github.com/dell/helm-charts/blob/main/charts/karavi-observability/values.yaml). - The default `values.yaml` is configured to deploy the CSM for Observability Topology service on install. - If CSM for Authorization is enabled for CSI PowerFlex, the `karaviMetricsPowerflex.authorization` parameters must be properly configured. + - If CSM for Authorization is enabled for CSI PowerScale, the `karaviMetricsPowerscale.authorization` parameters must be properly configured. ``` [user@anothersystem /home/user/offline-karavi-observability-bundle/helm]# helm install -n install-namespace app-name karavi-observability diff --git a/content/docs/observability/deployment/online.md b/content/docs/observability/deployment/online.md index 60e83ef3a9..82524a658c 100644 --- a/content/docs/observability/deployment/online.md +++ b/content/docs/observability/deployment/online.md @@ -69,6 +69,8 @@ Options: --namespace[=] Namespace where Karavi Observability will be installed Optional --csi-powerflex-namespace[=] Namespace where CSI PowerFlex is installed, default is 'vxflexos' + --csi-powerstore-namespace[=] Namespace where CSI PowerStore is installed, default is 'csi-powerstore' + --csi-powerscale-namespace[=] Namespace where CSI PowerScale is installed, default is 'isilon' --set-file Set values from files used during helm installation (can be specified multiple times) --skip-verify Skip verification of the environment --values[=] Values file, which defines configuration values @@ -77,7 +79,7 @@ Options: --help Help ``` -__Note:__ CSM for Authorization currently does not support the Observability module for PowerStore. Therefore setting `enable-authorization` is not supported in this case. +__Note:__ CSM for Authorization currently does not support the Observability module for PowerStore. Therefore setting `enable-authorization` is not supported in this case. ### Executing the Installer @@ -101,6 +103,7 @@ To perform an online installation of CSM for Observability, the following steps __Note:__ - The default `values.yaml` is configured to deploy the CSM for Observability Topology service on install. - If CSM for Authorization is enabled for CSI PowerFlex, the `karaviMetricsPowerflex.authorization` parameters must be properly configured in `myvalues.yaml` for CSM Observability. + - If CSM for Authorization is enabled for CSI PowerScale, the `karaviMetricsPowerscale.authorization` parameters must be properly configured in `myvalues.yaml` for CSM Observability. ``` [user@system /home/user/karavi-observability/installer]# ./karavi-observability-install.sh install --namespace [CSM_NAMESPACE] --values myvalues.yaml diff --git a/content/docs/observability/design/_index.md b/content/docs/observability/design/_index.md index e6dc2b93c1..adb56abcb8 100644 --- a/content/docs/observability/design/_index.md +++ b/content/docs/observability/design/_index.md @@ -19,7 +19,10 @@ The following prerequisites must be deployed into the namespace where CSM for Ob - Prometheus for scraping the metrics from the OTEL collector. - Grafana for visualizing the metrics from Prometheus and Topology services using custom dashboards. -- CSM for Observability will use secrets to get details about the storage systems used by the CSI drivers. These secrets should be copied from the namespaces where the drivers are deployed. CSI Powerflex driver uses the 'vxflexos-config' secret and CSI PowerStore uses the 'powerstore-config' secret. +- CSM for Observability will use secrets to get details about the storage systems used by the CSI drivers. These secrets should be copied from the namespaces where the drivers are deployed. + - CSI PowerFlex driver uses the 'vxflexos-config' secret. + - CSI PowerStore driver uses the 'powerstore-config' secret. + - CSI PowerScale driver uses the 'isilon-creds' secret. ## Deployment Architectures diff --git a/content/docs/observability/metrics/powerscale.md b/content/docs/observability/metrics/powerscale.md new file mode 100644 index 0000000000..d06d168902 --- /dev/null +++ b/content/docs/observability/metrics/powerscale.md @@ -0,0 +1,45 @@ +--- +title: PowerScale Metrics +linktitle: PowerScale Metrics +weight: 1 +description: > + Dell Container Storage Modules (CSM) for Observability PowerScale Metrics +--- + +This section outlines the metrics collected by the Container Storage Modules (CSM) Observability module for PowerScale. The [Grafana reference dashboards](https://github.com/dell/karavi-observability/blob/main/grafana/dashboards/powerscale) for PowerScale metrics can be uploaded to your Grafana instance. + +## I/O Performance Metrics + +Storage system I/O performance metrics (IOPS, bandwidth) are available by default and broken down by cluster and quota. + +To disable these metrics, set the ```performanceMetricsEnabled``` field to false in helm/values.yaml. + +The following I/O performance metrics are available from the OpenTelemetry collector endpoint. Please see the [CSM for Observability](../../) for more information on deploying and configuring the OpenTelemetry collector. + +| Metric | Description | +|--------------------------------------------------------------------|-------------------------------------------------------------------------------------| +| powerscale_cluster_cpu_use_rate | Average CPU usage for all nodes in the monitored cluster | +| powerscale_cluster_disk_read_operation_rate | Average rate at which the disks in the cluster servicing data read change requests | +| powerscale_cluster_disk_write_operation_rate | Average rate at which the disks in the cluster servicing data write change requests | +| powerscale_cluster_disk_throughput_read_rate_megabytes_per_second | Throughput rate of data being read from the disks in the cluster | +| powerscale_cluster_disk_throughput_write_rate_megabytes_per_second | Throughput rate of data being written to the disks in the cluster | + +## Storage Capacity Metrics + +Provides visibility into the total, used, and available capacity for PowerScale cluster and quotas. + +To disable these metrics, set the ```capacityMetricsEnabled``` field to false in helm/values.yaml. + +The following storage capacity metrics are available from the OpenTelemetry collector endpoint. Please see the [CSM for Observability](../../) for more information on deploying and configuring the OpenTelemetry collector. + +| Metric | Description | +|---------------------------------------------------|------------------------------------------------------------------| +| powerscale_cluster_total_capacity_terabytes | Total cluster capacity (TB) | +| powerscale_cluster_remaining_capacity_terabytes | Total unused cluster capacity (TB) | +| powerscale_cluster_used_capacity_percentage | Percent of total cluster capacity that has been used | +| powerscale_cluster_total_hard_quota_gigabytes | Amount of total capacity allocated in all directory hard quotas | +| powerscale_cluster_total_hard_quota_percentage | Percent of total capacity allocated in all directory hard quotas | +| powerscale_volume_quota_subscribed_gigabytes | Space used of Quota for a directory (GB) | +| powerscale_volume_hard_quota_remaining_gigabytes | Unused spaced below the hard limit for a directory (GB) | +| powerscale_volume_quota_subscribed_percentage | Percentage of space used in hard limit for a directory | +| powerscale_volume_hard_quota_remaining_percentage | Percentage of the remaining space in hard limit for a directory | diff --git a/content/docs/observability/release/_index.md b/content/docs/observability/release/_index.md index 84a9c87ea2..5b78088474 100644 --- a/content/docs/observability/release/_index.md +++ b/content/docs/observability/release/_index.md @@ -6,14 +6,17 @@ Description: > Dell Container Storage Modules (CSM) release notes for observability --- -## Release Notes - CSM Observability 1.2.0 +## Release Notes - CSM Observability 1.3.0 ### New Features/Changes +- Support PowerScale in CSM Observability +- Add PV/PVC namespace mapping for CSM Observability metrics +- Rearrange columns for topology dashboard +- Add offline upgrade +- Upgrade Otel to 1.7.0 ### Fixed Issues -- [PowerStore Grafana dashboard does not populate correctly ](https://github.com/dell/csm/issues/279) -- [Grafana installation script - prometheus address is incorrect](https://github.com/dell/csm/issues/278) -- [prometheus-values.yaml error in json](https://github.com/dell/csm/issues/259) +- [Observability Topology: nil pointer error](https://github.com/dell/csm/issues/430) ### Known Issues \ No newline at end of file diff --git a/content/docs/observability/troubleshooting/_index.md b/content/docs/observability/troubleshooting/_index.md index 4c094c212d..7a5fbac6d7 100644 --- a/content/docs/observability/troubleshooting/_index.md +++ b/content/docs/observability/troubleshooting/_index.md @@ -171,7 +171,7 @@ sidecar: enabled: true ## Additional grafana server ConfigMap mounts -## Defines additional mounts with ConfigMap. CofigMap must be manually created in the namespace. +## Defines additional mounts with ConfigMap. ConfigMap must be manually created in the namespace. extraConfigmapMounts: [] ``` diff --git a/content/docs/observability/upgrade/_index.md b/content/docs/observability/upgrade/_index.md index a44d38c615..932c107e02 100644 --- a/content/docs/observability/upgrade/_index.md +++ b/content/docs/observability/upgrade/_index.md @@ -55,7 +55,7 @@ CSM for Observability online installer upgrade can be used if the initial deploy ``` 2. Update `values.yaml` file as needed. Configuration options are outlined in the [Helm chart deployment section](../deployment/helm#configuration). -2. Execute the `./karavi-observability-install.sh` script: +3. Execute the `./karavi-observability-install.sh` script: ``` [user@system /home/user/karavi-observability/installer]# ./karavi-observability-install.sh upgrade --namespace $namespace --values myvalues.yaml --version $latest_chart_version --------------------------------------------------------------------------------- @@ -80,3 +80,42 @@ CSM for Observability online installer upgrade can be used if the initial deploy | |- Waiting for pods in namespace karavi to be ready Success ``` + +## Offline Installer Upgrade + +Assuming that you have already installed the Karavi Observability Helm Chart by offline installer and meet its installation requirement. +These instructions can be followed when a Helm chart was installed and will be upgraded in an environment that does not have an internet connection and will be unable to download the Helm chart and related Docker images. + +1. Build the Offline Bundle + Follow [Offline Karavi Observability Helm Chart Installer](../deployment/offline) to build the latest bundle. + +2. Unpack the Offline Bundle + Follow [Offline Karavi Observability Helm Chart Installer](../deployment/offline), copy and unpack the Offline Bundle to another Linux system, and push Docker images to the internal Docker registry. + +3. Perform Helm upgrade + 1. Change directory to `helm` which contains the updated Helm chart directory: + ``` + [user@anothersystem /home/user/offline-karavi-observability-bundle]# cd helm + ``` + 2. Install necessary cert-manager CustomResourceDefinitions provided. + ``` + [user@anothersystem /home/user/offline-karavi-observability-bundle/helm]# kubectl apply --validate=false -f cert-manager.crds.yaml + ``` + 3. (Optional) Enable Karavi Observability for PowerFlex/PowerScale to use an existing instance of Karavi Authorization for accessing the REST API for the given storage systems. + **Note**: Assuming that if the Karavi Observability's Authorization has been enabled in the phase of [Offline Karavi Observability Helm Chart Installer](../deployment/offline), the Authorization Secrets/Configmap have been copied to the Karavi Observability namespace. + A sample configuration values.yaml file is located [here](https://github.com/dell/helm-charts/blob/main/charts/karavi-observability/values.yaml). + In your own configuration values.yaml, you need to enable PowerFlex/PowerScale Authorization, and provide the location of the sidecar-proxy Docker image and URL of the Karavi Authorization proxyHost address. + + 4. Now that the required images have been made available and the Helm chart's configuration updated with references to the internal registry location, installation can proceed by following the instructions that are documented within the Helm chart's repository. + **Note**: Assuming that Your Secrets from CSI Drivers have been copied to the Karavi Observability namespace in the phase of [Offline Karavi Observability Helm Chart Installer](../deployment/offline) + Optionally, you could provide your own [configurations](../deployment/helm/#configuration). A sample values.yaml file is located [here](https://github.com/dell/helm-charts/blob/main/charts/karavi-observability/values.yaml). + ``` + [user@anothersystem /home/user/offline-karavi-observability-bundle/helm]# helm upgrade -n install-namespace app-name karavi-observability + NAME: app-name + LAST DEPLOYED: Wed Aug 17 14:44:04 2022 + NAMESPACE: install-namespace + STATUS: deployed + REVISION: 1 + TEST SUITE: None + ``` + \ No newline at end of file From 1d16e620cf089b3714b1c4643c14675e26771273 Mon Sep 17 00:00:00 2001 From: alexemc <32580729+alexemc@users.noreply.github.com> Date: Wed, 24 Aug 2022 11:44:51 -0400 Subject: [PATCH 29/55] Amended and addressed feedback for the Encryption feature documentation. (#332) --- content/docs/secure/encryption/_index.md | 17 +++++++++++------ content/docs/secure/encryption/deployment.md | 16 +++++++--------- .../docs/secure/encryption/troubleshooting.md | 2 +- .../docs/secure/encryption/uninstallation.md | 2 +- content/docs/secure/encryption/vault.md | 2 +- 5 files changed, 21 insertions(+), 18 deletions(-) diff --git a/content/docs/secure/encryption/_index.md b/content/docs/secure/encryption/_index.md index 4f063cc8d2..c753da27b1 100644 --- a/content/docs/secure/encryption/_index.md +++ b/content/docs/secure/encryption/_index.md @@ -28,11 +28,11 @@ When a CSI Driver is installed with the Encryption feature enabled, two provisio #### Provisioner for unencrypted volumes -Provides all regular capabilities supported by the storage driver. +This provisioner belongs to the storage driver and does not depend on the Encryption feature. Use a storage class with this provisioner to create regular unencrypted volumes. #### Provisioner for encrypted volumes -Effectively proxies the storage driver and adds the encryption capability. The rest of the document relates to this provisioner. +This provisioner belongs to Encryption and registers with the name [`encryption.pluginName`](deployment/#helm-chart-values) when Encryption is enabled. Use a storage class with this provisioner to create encrypted volumes. ## Capabilities @@ -68,8 +68,10 @@ the CSI driver must be restarted to pick up the change. {{}} | COP/OS | Supported Versions | |-|-| -| Kubernetes | 1.22, 1.23, 1.24 | -| CentOS | 7.6 | +| Kubernetes | 1.22, 1.23, 1.24 | +| RHEL | 7.9, 8.4 | +| Ubuntu | 18.04, 20.04 | +| SLES | 15SP2 | {{
}} ## Supported Storage Platforms @@ -118,8 +120,11 @@ Refer to [Vault Configuration section](vault) for minimal configuration steps re ## Kubernetes Worker Hosts Requirements - Each Kubernetes worker host should have SSH server running. -- The server should have SSH public key authentication enabled for user *root*. -- The server should remain running all the time whenever an application with an encrypted volume is running on the host. +- SSH server should have SSH public key authentication enabled for user *root*. +- SSH server should remain running all the time whenever an application with an encrypted volume is running on the host. > **NOTE:** Stopping the SSH server on the worker host makes any encrypted volume attached to this host [inaccessible](troubleshooting#ssh-stopped). +- Each Kubernetes worker host should have commands `fusermount` and `mount.fuse`. They are pre-installed in most Linux distros. +To install package *fuse* in Ubuntu/Debian run command similar to `apt install fuse`. +To install package *fuse* in SUSE run command similar to `zypper install fuse`. diff --git a/content/docs/secure/encryption/deployment.md b/content/docs/secure/encryption/deployment.md index 3ec52fcb58..69dd0b6471 100644 --- a/content/docs/secure/encryption/deployment.md +++ b/content/docs/secure/encryption/deployment.md @@ -3,7 +3,7 @@ title: "Deployment" linkTitle: "Deployment" weight: 1 Description: > - Deployment. + Deployment --- Encryption is enabled as part of the Dell CSI driver installation. The drivers can be installed either by a Helm chart or by the Dell CSI Operator. In the tech preview release, Encryption can only be enabled via Helm chart installation. @@ -22,12 +22,10 @@ The drivers that support Encryption via Helm chart have an `encryption` block in ```yaml encryption: - # enable: Enable/disable volume encryption feature - # Encryption cannot be enabled in tandem with resizer or authorization. - # Enable this feature only after contact support for additional information. + # enabled: Enable/disable volume encryption feature. enabled: false - # pluginName: The name of the provisioner to use when encryption is enabled. + # pluginName: The name of the provisioner to use for encrypted volumes. pluginName: "sec-isilon.dellemc.com" # image: Encryption driver image name. @@ -37,7 +35,7 @@ encryption: imagePullPolicy: # logLevel: Log level of the encryption driver. - # Allowed values: "error", "warning", "info", "debug", "trace" + # Allowed values: "error", "warning", "info", "debug", "trace". logLevel: "error" # livenessPort: HTTP liveness probe port number. @@ -48,7 +46,7 @@ encryption: # extraArgs: Extra command line parameters to pass to the encryption driver. # Allowed values: # --sharedStorage - may be required by some applications to work properly. - # When set, performance is reduced, and hard links cannot be created. + # When set, performance is reduced and hard links cannot be created. # See the gocryptfs documentation for more details. extraArgs: [] ``` @@ -56,10 +54,10 @@ encryption: | Parameter | Description | Required | Default | | --------- | ----------- | -------- | ------- | | enabled | Enable/disable volume encryption feature. | No | false | -| pluginName | The name of the provisioner to use when encryption is enabled. | No | "sec-isilon.dellemc.com" | +| pluginName | The name of the provisioner to use for encrypted volumes. | No | "sec-isilon.dellemc.com" | | image | Encryption driver image name. | No | "dellemc/csm-encryption:v0.1.0" | | imagePullPolicy | If specified, overrides the chart global imagePullPolicy. | No | CSI driver global imagePullPolicy | -| logLevel | Log level of the encryption driver.
Allowed values: "error", "warning", "info", "debug, `"trace" | No | "error" | +| logLevel | Log level of the encryption driver.
Allowed values: "error", "warning", "info", "debug, `"trace". | No | "error" | | livenessPort | HTTP liveness probe port number. Leave empty to disable the liveness probe. | No | | | extraArgs | Extra command line parameters to pass to the encryption driver.
Allowed values:
"\-\-sharedStorage" - may be required by some applications to work properly.
When set, performance is reduced and hard links cannot be created.
See the [gocryptfs documentation](https://github.com/rfjakob/gocryptfs/blob/v2.2.1/Documentation/MANPAGE.md#-sharedstorage) for more details. | No | [] | diff --git a/content/docs/secure/encryption/troubleshooting.md b/content/docs/secure/encryption/troubleshooting.md index 14806ce9c6..455a9fb8d2 100644 --- a/content/docs/secure/encryption/troubleshooting.md +++ b/content/docs/secure/encryption/troubleshooting.md @@ -3,7 +3,7 @@ title: "Troubleshooting" linkTitle: "Troubleshooting" weight: 4 Description: > - Troubleshooting. + Troubleshooting --- ## Logs and Events diff --git a/content/docs/secure/encryption/uninstallation.md b/content/docs/secure/encryption/uninstallation.md index fa7d366d97..b6ccc76368 100644 --- a/content/docs/secure/encryption/uninstallation.md +++ b/content/docs/secure/encryption/uninstallation.md @@ -3,7 +3,7 @@ title: "Uninstallation" linkTitle: "Uninstallation" weight: 2 Description: > - Uninstallation. + Uninstallation --- ## Cleanup Kubernetes Worker Hosts diff --git a/content/docs/secure/encryption/vault.md b/content/docs/secure/encryption/vault.md index f9dcc2521d..734103f64e 100644 --- a/content/docs/secure/encryption/vault.md +++ b/content/docs/secure/encryption/vault.md @@ -3,7 +3,7 @@ title: "Vault Configuration" linkTitle: "Vault Configuration" weight: 3 Description: > - Configuration requirements for Vault server. + Configuration requirements for Vault server --- ## Vault Server Installation From fdabb8c3fe5df02731d188fb2fcbd77d6db5b2ba Mon Sep 17 00:00:00 2001 From: gilltaran <91598969+gilltaran@users.noreply.github.com> Date: Thu, 25 Aug 2022 12:09:21 +0530 Subject: [PATCH 30/55] powerstore-2.4-changes (#329) --- .../docs/csidriver/installation/helm/powerstore.md | 6 +++--- content/docs/csidriver/release/powerstore.md | 11 ++++------- .../docs/csidriver/upgradation/drivers/powerstore.md | 6 +++--- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/content/docs/csidriver/installation/helm/powerstore.md b/content/docs/csidriver/installation/helm/powerstore.md index 99797d69c4..5a9d7ec59d 100644 --- a/content/docs/csidriver/installation/helm/powerstore.md +++ b/content/docs/csidriver/installation/helm/powerstore.md @@ -179,7 +179,7 @@ CRDs should be configured during replication prepare stage with repctl as descri ## Install the Driver **Steps** -1. Run `git clone -b v2.3.0 https://github.com/dell/csi-powerstore.git` to clone the git repository. +1. Run `git clone -b v2.4.0 https://github.com/dell/csi-powerstore.git` to clone the git repository. 2. Ensure that you have created namespace where you want to install the driver. You can run `kubectl create namespace csi-powerstore` to create a new one. "csi-powerstore" is just an example. You can choose any name for the namespace. But make sure to align to the same namespace during the whole installation. 3. Check `helm/csi-powerstore/driver-image.yaml` and confirm the driver image points to new image. @@ -284,11 +284,11 @@ Starting CSI PowerStore v1.4.0, `dell-csi-helm-installer` will not create any Vo ### What happens to my existing Volume Snapshot Classes? -*Upgrading from CSI PowerStore v2.1.0 driver*: +*Upgrading from CSI PowerStore v2.3.0 driver*: The existing volume snapshot class will be retained. *Upgrading from an older version of the driver*: -It is strongly recommended to upgrade the earlier versions of CSI PowerStore to 1.4.0 or higher, before upgrading to 2.3.0. +It is strongly recommended to upgrade the earlier versions of CSI PowerStore to 1.4.0 or higher, before upgrading to 2.4.0. ## Dynamically update the powerstore secrets diff --git a/content/docs/csidriver/release/powerstore.md b/content/docs/csidriver/release/powerstore.md index f0bbb59e8a..983d286d4a 100644 --- a/content/docs/csidriver/release/powerstore.md +++ b/content/docs/csidriver/release/powerstore.md @@ -3,16 +3,13 @@ title: PowerStore description: Release notes for PowerStore CSI driver --- -## Release Notes - CSI PowerStore v2.3.0 +## Release Notes - CSI PowerStore v2.4.0 ### New Features/Changes -- Support Volume Group Snapshots. -- Removed beta volumesnapshotclass sample files. -- Support Configurable Volume Attributes. -- Added support for Kubernetes 1.24. -- Added support for OpenShift 4.10. -- Added support for NVMe/FC protocol. +- Updated deprecated StorageClass parameter fsType with csi.storage.k8s.io/fstype. +- Added support for iSCSI in TKG Qualification. +- Added support for Stand alone Helm Chart. ### Fixed Issues diff --git a/content/docs/csidriver/upgradation/drivers/powerstore.md b/content/docs/csidriver/upgradation/drivers/powerstore.md index 089fa38c68..757a31c4b2 100644 --- a/content/docs/csidriver/upgradation/drivers/powerstore.md +++ b/content/docs/csidriver/upgradation/drivers/powerstore.md @@ -9,12 +9,12 @@ Description: Upgrade PowerStore CSI driver You can upgrade the CSI Driver for Dell PowerStore using Helm or Dell CSI Operator. -## Update Driver from v2.2 to v2.3 using Helm +## Update Driver from v2.3 to v2.4 using Helm Note: While upgrading the driver via helm, controllerCount variable in myvalues.yaml can be at most one less than the number of worker nodes. **Steps** -1. Run `git clone -b v2.3.0 https://github.com/dell/csi-powerstore.git` to clone the git repository and get the driver. +1. Run `git clone -b v2.4.0 https://github.com/dell/csi-powerstore.git` to clone the git repository and get the driver. 2. Edit `helm/config.yaml` file and configure connection information for your PowerStore arrays changing the following parameters: - *endpoint*: defines the full URL path to the PowerStore API. - *globalID*: specifies what storage cluster the driver should use @@ -28,7 +28,7 @@ Note: While upgrading the driver via helm, controllerCount variable in myvalues. Add more blocks similar to above for each PowerStore array if necessary. 3. (optional) create new storage classes using ones from `samples/storageclass` folder as an example and apply them to the Kubernetes cluster by running `kubectl create -f ` - >Storage classes created by v1.4/v2.0/v2.1 driver will not be deleted, v2.2 driver will use default array to manage volumes provisioned with old storage classes. Thus, if you still have volumes provisioned by v1.4/v2.0/v2.1 in your cluster then be sure to include the same array you have used for the v1.4/v2.0/v2.1 driver and make it default in the `config.yaml` file. + >Storage classes created by v1.4/v2.0/v2.1/v2.2/v2.3 driver will not be deleted, v2.4 driver will use default array to manage volumes provisioned with old storage classes. Thus, if you still have volumes provisioned by v1.4/v2.0/v2.1/v2.2/v2.3 in your cluster then be sure to include the same array you have used for the v1.4/v2.0/v2.1/v2.2/v2.3 driver and make it default in the `config.yaml` file. 4. Create the secret by running ```kubectl create secret generic powerstore-config -n csi-powerstore --from-file=config=secret.yaml``` 5. Copy the default values.yaml file `cp ./helm/csi-powerstore/values.yaml ./dell-csi-helm-installer/my-powerstore-settings.yaml` and update parameters as per the requirement. 6. Run the `csi-install` script with the option _\-\-upgrade_ by running: `./dell-csi-helm-installer/csi-install.sh --namespace csi-powerstore --values ./my-powerstore-settings.yaml --upgrade`. From 475b0979420cccb76fb32cc76a5d3c84b7d9827a Mon Sep 17 00:00:00 2001 From: Yamunadevi N Shanmugam <82038610+shanmydell@users.noreply.github.com> Date: Thu, 25 Aug 2022 14:33:06 +0530 Subject: [PATCH 31/55] Update Deployment page (#306) --- content/docs/deployment/_index.md | 61 +- .../docs/deployment/csminstaller/_index.md | 193 --- .../docs/deployment/csminstaller/csmapi.md | 8 - .../docs/deployment/csminstaller/csmcli.md | 269 ---- .../docs/deployment/csminstaller/swagger.yaml | 1395 ----------------- .../csminstaller/troubleshooting.md | 49 - 6 files changed, 56 insertions(+), 1919 deletions(-) delete mode 100644 content/docs/deployment/csminstaller/_index.md delete mode 100644 content/docs/deployment/csminstaller/csmapi.md delete mode 100644 content/docs/deployment/csminstaller/csmcli.md delete mode 100644 content/docs/deployment/csminstaller/swagger.yaml delete mode 100644 content/docs/deployment/csminstaller/troubleshooting.md diff --git a/content/docs/deployment/_index.md b/content/docs/deployment/_index.md index 23b93beb33..ae45e7739f 100644 --- a/content/docs/deployment/_index.md +++ b/content/docs/deployment/_index.md @@ -1,13 +1,64 @@ --- title: "Deployment" linkTitle: "Deployment" +no_list: true description: Deployment of CSM for Replication weight: 1 --- +The Container Storage Modules along with the required CSI Drivers can each be deployed using CSM operator. +>Note: Currently CSM operator is in tech preview and is not supported in production environments. + +{{< cardpane >}} + {{< card header="[**CSM Operator**](csmoperator/)" + footer="Supports driver [PowerScale](csmoperator/drivers/powerscale/), module [Authorization](csmoperator/modules/authorization/)">}} + Dell CSM Operator is a Kubernetes Operator, which can be used to install and manage the CSI Drivers and CSM Modules provided by Dell for various storage platforms. This operator is available as a community operator for upstream Kubernetes and can be deployed using OperatorHub.io. The operator can be installed using OLM (Operator Lifecycle Manager) or manually. +[...More on installation instructions](csmoperator/) + {{< /card >}} +{{< /cardpane >}} The Container Storage Modules and the required CSI Drivers can each be deployed following the links below: -- [Dell CSI Drivers Installation](../csidriver/installation) -- [Dell Container Storage Module for Observability](../observability/deployment) -- [Dell Container Storage Module for Authorization](../authorization/deployment) -- [Dell Container Storage Module for Resiliency](../resiliency/deployment) -- [Dell Container Storage Module for Replication](../replication/deployment) \ No newline at end of file + + +{{< cardpane >}} + {{< card header="[Dell CSI Drivers Installation via Helm](../csidriver/installation/helm)" + footer="Installs [PowerStore](../csidriver/installation/helm/powerstore/) [PowerMax](../csidriver/installation/helm/powermax/) [PowerScale](../csidriver/installation/helm/isilon/) [PowerFlex](../csidriver/installation/helm/powerflex/) [Unity](../csidriver/installation/helm/unity/)">}} + Dell CSI Helm installer installs the CSI Driver components using the provided Helm charts. + [...More on installation instructions](../csidriver/installation/helm) + {{< /card >}} + {{< card header="[Dell CSI Drivers Installation via offline installer](../csidriver/installation/offline)" + footer="[Offline installation for all drivers](../csidriver/installation/offline)">}} + Both Helm and Dell CSI opetor supports offline installation of the Dell CSI Storage Providers via `csi-offline-bundle.sh` script by creating a usable package. + [...More on installation instructions](../csidriver/installation/offline) + {{< /card >}} +{{< /cardpane >}} +{{< cardpane >}} + {{< card header="[Dell CSI Drivers Installation via operator](../csidriver/installation/operator)" + footer="Installs [PowerStore](../csidriver/installation/operator/powerstore/) [PowerMax](../csidriver/installation/operator/powermax/) [PowerScale](../csidriver/installation/operator/isilon/) [PowerFlex](../csidriver/installation/operator/powerflex/) [Unity](../csidriver/installation/operator/unity/)">}} + Dell CSI Operator is a Kubernetes Operator, which can be used to install and manage the CSI Drivers provided by Dell for various storage platforms. This operator is available as a community operator for upstream Kubernetes and can be deployed using OperatorHub.io. It is also available as a certified operator for OpenShift clusters and can be deployed using the OpenShift Container Platform. Both these methods of installation use OLM (Operator Lifecycle Manager). The operator can also be deployed manually. + [...More on installation instructions](../csidriver/installation/operator) + {{< /card >}} +{{< /cardpane >}} +{{< cardpane >}} + {{< card header="[Dell Container Storage Module for Observability](../observability/deployment)" + footer="Installs Observability Module">}} + CSM for Observability can be deployed either via Helm or CSM for Observability Installer or CSM for Observability Offline Installer + [...More on installation instructions](../observability/deployment) + {{< /card >}} + {{< card header="[Dell Container Storage Module for Authorization](../authorization/deployment)" + footer="Installs Authorization Module">}} + CSM Authorization can be installed by using the provided Helm v3 charts on Kubernetes platforms. + [...More on installation instructions](../authorization/deployment) + {{< /card >}} +{{< /cardpane >}} +{{< cardpane >}} + {{< card header="[Dell Container Storage Module for Resiliency](../resiliency/deployment)" + footer="Installs Resiliency Module">}} + CSI drivers that support Helm chart installation allow CSM for Resiliency to be _optionally_ installed by variables in the chart. It can be updated via _podmon_ block specified in the _values.yaml_ + [...More on installation instructions](../resiliency/deployment) + {{< /card >}} + {{< card header="[Dell Container Storage Module for Replication](../replication/deployment)" + footer="Installs Replication Module">}} + Replication module can be installed by installing repctl,Container Storage Modules (CSM) for Replication Controller,CSI driver after enabling replication. + [...More on installation instructions](../replication/deployment) + {{< /card >}} +{{< /cardpane >}} \ No newline at end of file diff --git a/content/docs/deployment/csminstaller/_index.md b/content/docs/deployment/csminstaller/_index.md deleted file mode 100644 index 4527ddfd9f..0000000000 --- a/content/docs/deployment/csminstaller/_index.md +++ /dev/null @@ -1,193 +0,0 @@ ---- -title: "CSM Installer" -linkTitle: "CSM Installer" -description: Container Storage Modules Installer -weight: 1 ---- - -{{% pageinfo color="primary" %}} -The CSM Installer is currently deprecated and will no longer be supported as of CSM v1.4.0 -{{% /pageinfo %}} - ->>**Note: The CSM Installer only supports installation of CSM 1.0 Modules and CSI Drivers in environments that do not have any existing deployments of CSM or CSI Drivers. The CSM Installer does not support the upgrade of existing CSM or CSI Driver deployments.** - -The CSM (Container Storage Modules) Installer simplifies the deployment and management of Dell Container Storage Modules and CSI Drivers to provide persistent storage for your containerized workloads. - -## CSM Installer Supported Modules and Dell CSI Drivers - -| Modules/Drivers | CSM 1.0 | -| - | :-: | -| Authorization | 1.0 | -| Observability | 1.0 | -| Replication | 1.0 | -| Resiliency | 1.0 | -| CSI Driver for PowerScale | v2.0 | -| CSI Driver for Unity XT | v2.0 | -| CSI Driver for PowerStore | v2.0 | -| CSI Driver for PowerFlex | v2.0 | -| CSI Driver for PowerMax | v2.0 | - -The CSM Installer must first be deployed in a Kubernetes environment using Helm. After which, the CSM Installer can be used through the following interfaces: -- [CSM CLI](./csmcli) -- [REST API](./csmapi) - -## How to Deploy the Container Storage Modules Installer - -1. Add the `dell` helm repository: - -``` -helm repo add dell https://dell.github.io/helm-charts -``` - -**If securing the API service and database, following steps 2 to 4 to generate the certificates, or skip to step 5 to deploy without certificates** - -2. Generate self-signed certificates using the following commands: - -``` -mkdir api-certs - -openssl req \ - -newkey rsa:4096 -nodes -sha256 -keyout api-certs/ca.key \ - -x509 -days 365 -out api-certs/ca.crt -subj '/' - -openssl req \ - -newkey rsa:4096 -nodes -sha256 -keyout api-certs/cert.key \ - -out api-certs/cert.csr -subj '/' - -openssl x509 -req -days 365 -in api-certs/cert.csr -CA api-certs/ca.crt \ - -CAkey api-certs/ca.key -CAcreateserial -out api-certs/cert.crt -``` - -3. If required, download the `cockroach` binary used to generate certificates for the cockroach-db: -``` -curl https://binaries.cockroachdb.com/cockroach-v21.1.8.linux-amd64.tgz | tar -xz && sudo cp -i cockroach-v21.1.8.linux-amd64/cockroach /usr/local/bin/ -``` - -4. Generate the certificates required for the cockroach-db service: -``` -mkdir db-certs - -cockroach cert create-ca --certs-dir=db-certs --ca-key=db-certs/ca.key - -cockroach cert create-node cockroachdb-0.cockroachdb.csm-installer.svc.cluster.local cockroachdb-public cockroachdb-0.cockroachdb --certs-dir=db-certs/ --ca-key=db-certs/ca.key - -``` - In case multiple instances of cockroachdb are required add all nodes names while creating nodes on the certificates -``` -cockroach cert create-node cockroachdb-0.cockroachdb.csm-installer.svc.cluster.local cockroachdb-1.cockroachdb.csm-installer.svc.cluster.local cockroachdb-2.cockroachdb.csm-installer.svc.cluster.local cockroachdb-public cockroachdb-0.cockroachdb cockroachdb-1.cockroachdb cockroachdb-2.cockroachdb --certs-dir=db-certs/ --ca-key=db-certs/ca.key -``` - -``` -cockroach cert create-client root --certs-dir=db-certs/ --ca-key=db-certs/ca.key - -cockroach cert list --certs-dir=db-certs/ -``` - -5. Create a values.yaml file that contains JWT, Cipher key, and Admin username and password of CSM Installer that are required by the installer during helm installation. See the [Configuration](#configuration) section for other values that can be set during helm installation. - -> __Note__: `jwtKey` will be used as a shared secret in HMAC algorithm for generating jwt token, `cipherKey` will be used as a symmetric key in AES cipher for encryption of storage system credentials. Those parameters are arbitrary, and you can set them to whatever you like. Just ensure that `cipherKey` is exactly 32 characters long. - -``` -# string of any length -jwtKey: - -# string of exactly 32 characters -cipherKey: "" - -# Admin username of CSM Installer -adminUserName: - -# Admin password of CSM Installer -adminPassword: -``` - -6. Follow step `a` if certificates are being used or step `b` if certificates are not being used: - -a) Install the helm chart, specifying the certificates generated in the previous steps: -``` -helm install -n csm-installer --create-namespace \ - --set-file serviceCertificate=api-certs/cert.crt \ - --set-file servicePrivateKey=api-certs/cert.key \ - --set-file databaseCertificate=db-certs/node.crt \ - --set-file databasePrivateKey=db-certs/node.key \ - --set-file dbClientCertificate=db-certs/client.root.crt \ - --set-file dbClientPrivateKey=db-certs/client.root.key \ - --set-file caCrt=db-certs/ca.crt \ - -f values.yaml \ - csm-installer dell/csm-installer -``` -b) If not deploying with certificates, execute the following command: -``` -helm install -n csm-installer --create-namespace \ - --set-string scheme=http \ - --set-string dbSSLEnabled="false" \ - -f values.yaml \ - csm-installer dell/csm-installer -``` - -> __Note__: In an OpenShift environment, the cockroachdb StatefulSet will run privileged pods so that it can mount the Persistent Volume used for storage. Follow the documentation for your OpenShift version to enable privileged pods. - -### Configuration - -| Parameter | Description | Default | -|----------------------------------|-----------------------------------------------|---------------------------------------------------------| -| `csmInstallerCount` | Number of replicas for the CSM Installer Deployment | `1`| -| `dbInstanceCount` | Number of replicas for the CSM Database StatefulSet | `2` | -| `imagePullPolicy` | Image pull policy for the CSM Installer images | `Always` | -| `host` | Host or IP that will be used to bind to the CSM Installer API service | `0.0.0.0` | -| `port` | Port that will be used to bind to the CSM Installer API service | `8080` | -| `scheme` | Scheme used for the CSM Installer API service. Valid values are `https` and `http` | `https` | -| `jwtKey` | Key used to sign the JWT token | | -| `cipherKey` | Key used to encrypt/decrypt user and storage system credentials. Must be 32 characters in length. | | -| `logLevel` | Log level used for the CSM Installer. Valid values are `DEBUG`, `INFO`, `WARN`, `ERROR`, and `FATAL` | `INFO` | -| `dbHost` | Host name of the Cockroach DB instance | `cockroachdb-public` | -| `dbPort` | Port number to access the Cockroach DB instance | `26257` | -| `dbSSLEnabled` | Enable SSL for the Cockroach DB connectiong | `true` | -| `installerImage` | Location of the CSM Installer Docker Image | `dellemc/dell-csm-installer:v1.0.0` | -| `dataCollectorImage`| Location of the CSM Data Collector Docker Image | `dellemc/csm-data-collector:v1.0.0` | -| `adminUserName` | Username to authenticate with the CSM Installer | | -| `adminPassword` | Password to authenticate with the CSM Installer | | -| `dbVolumeDirectory` | Directory on the worker node to use for the Persistent Volume | `/var/lib/cockroachdb` | -| `api_server_ip` | If using Swagger, set to public IP or host of the CSM Installer API service | `localhost` | - -## How to Upgrade the Container Storage Modules Installer - -When a new version of the CSM Installer helm chart is available, the following steps can be used to upgrade to the latest version. - ->Note: Upgrading the CSM Installer does not upgrade the Dell CSI Drivers or modules that were previously deployed with the installer. The CSM Installer does not support upgrading of the Dell CSI Drivers or modules. The Dell CSI Drivers and modules must be deleted and re-deployed using the latest CSM Installer in order to get the most recent version of the Dell CSI Driver and modules. - -1. Update the helm repository. -``` -helm repo update -``` - -2. Follow step `a` if certificates were used during the initial installation of the helm chart or step `b` if certificates were not used: - -a) Upgrade the helm chart, specifying the certificates used during initial installation: -``` -helm upgrade -n csm-installer \ - --set-file serviceCertificate=api-certs/cert.crt \ - --set-file servicePrivateKey=api-certs/cert.key \ - --set-file databaseCertificate=db-certs/node.crt \ - --set-file databasePrivateKey=db-certs/node.key \ - --set-file dbClientCertificate=db-certs/client.root.crt \ - --set-file dbClientPrivateKey=db-certs/client.root.key \ - --set-file caCrt=db-certs/ca.crt \ - -f values.yaml \ - csm-installer dell/csm-installer -``` - -b) If not deploying with certificates, execute the following command: -``` -helm upgrade -n csm-installer \ - --set-string scheme=http \ - --set-string dbSSLEnabled="false" \ - -f values.yaml \ - csm-installer dell/csm-installer -``` -## How to Uninstall the Container Storage Modules Installer - -1. Delete the Helm chart -``` -helm delete -n csm-installer csm-installer -``` diff --git a/content/docs/deployment/csminstaller/csmapi.md b/content/docs/deployment/csminstaller/csmapi.md deleted file mode 100644 index 812f36b835..0000000000 --- a/content/docs/deployment/csminstaller/csmapi.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "CSM REST API" -type: swagger -weight: 1 -description: Reference for the CSM REST API ---- - -{{< swaggerui src="../swagger.yaml" >}} \ No newline at end of file diff --git a/content/docs/deployment/csminstaller/csmcli.md b/content/docs/deployment/csminstaller/csmcli.md deleted file mode 100644 index 3711351969..0000000000 --- a/content/docs/deployment/csminstaller/csmcli.md +++ /dev/null @@ -1,269 +0,0 @@ ---- -title : CSM CLI -linktitle: CSM CLI -weight: 2 -description: > - Dell Container Storage Modules (CSM) Command Line Interface(CLI) Deployment and Management ---- -`csm` is a command-line client for installation of Dell Container Storage Modules and CSI Drivers for Kubernetes clusters. - -## Pre-requisites - -1. [Deploy the Container Storage Modules Installer](../../deployment) -2. Download/Install the `csm` binary from Github: https://github.com/dell/csm. Alternatively, you can build the binary by: - - cloning the `csm` repository - - changing into `csm/cmd/csm` directory - - running `make build` -3. create a `cli_env.sh` file that contains the correct values for the below variables. And export the variables by running `source ./cli_env.sh` - -```console -# Change this to CSM API Server IP -export API_SERVER_IP="127.0.0.1" - -# Change this to CSM API Server Port -export API_SERVER_PORT="31313" - -# CSM API Server protocol - allowed values are https & http -export SCHEME="https" - -# Path to store JWT -export AUTH_CONFIG_PATH="/home/user/installer-token/" -``` - -## Usage - -```console -~$ ./csm -h -csm is command line tool for csm application - -Usage: - csm [flags] - csm [command] - -Available Commands: - add add cluster, configuration or storage - approve-task approve task for application - authenticate authenticate user - change change - subcommand is password - create create application - delete delete storage, cluster, configuration or application - get get storage, cluster, application, configuration, supported driver, module, storage type - help Help about any command - reject-task reject task for an application - update update storage, configuration or cluster - -Flags: - -h, --help help for csm-cli - -Use "csm [command] --help" for more information about a command. -``` - -### Authenticate the User - -To begin with, you need to authenticate the user who will be managing the CSM Installer and its components. - -```console -./csm authenticate --username= --password= -``` -Or more securely, run the above command without `--password` to be prompted for one - -```console -./csm authenticate --username= -Enter user's password: - -``` - -### Change Password - -To change password follow below command - -```console -./csm change password --username= -``` - -### View Supported Platforms - -You can now view the supported DellCSI Drivers - -```console -./csm get supported-drivers -``` - -You can also view the supported Modules - -```console -./csm get supported-modules -``` - -And also view the supported Storage Array Types - -```console -./csm get supported-storage-arrays -``` - -### Add a Cluster - -You can now add a cluster by providing cluster detail name and Kubeconfig path - -```console -./csm add cluster --clustername --configfilepath -``` - -### Upload Configuration Files - -You can now add a configuration file that can be used for creating application by providing filename and path - -```console -./csm add configuration --filename --filepath -``` - -### Add a Storage System - -You can now add storage endpoints, array type and its unique id - -```console -./csm add storage --endpoint --storage-type --unique-id --username -``` - -The optional `--meta-data` flag can be used to provide additional meta-data for the storage system that is used when creating Secrets for the CSI Driver. These fields include: - - isDefault: Set to true if this storage system is used as default for multi-array configuration - - skipCertificateValidation: Set to true to skip certificate validation - - mdmId: Comma separated list of MDM IPs for PowerFlex - - nasName: NAS Name for PowerStore - - blockProtocol: Block Protocol for PowerStore - - port: Port for PowerScale - - portGroups: Comma separated list of port group names for PowerMax - -### Create an Application - -You may now create an application depending on the specific use case. Below are the common use cases: - -
- CSI Driver - -```console -./csm create application --clustername \ - --driver-type powerflex: --name \ - --storage-arrays -``` -
- -
- CSI Driver with CSM Authorization - -CSM Authorization requires a `token.yaml` issued by storage Admin from the CSM Authorization Server, a certificate file, and the of the authorization server. The `token.yaml` and `cert` should be added by following the steps in [adding configuration file](#upload-configuration-files). CSM Authorization does not yet support all CSI Drivers/platforms(See [supported platforms documentation](../../authorization/#supported-platforms) or [supported platforms via CLI](#view-supported-platforms))). -Finally, run the command below: - -```console -./csm create application --clustername \ - --driver-type powerflex: --name \ - --storage-arrays \ - --module-type authorization: \ - --module-configuration "karaviAuthorizationProxy.proxyAuthzToken.filename=,karaviAuthorizationProxy.rootCertificate.filename=,karaviAuthorizationProxy.proxyHost=" - -``` -
- -
- CSM Observability(Standalone) - -CSM Observability depends on driver config secret(s) corresponding to the metric(s) you want to enable. Please see [CSM Observability](../../observability/metrics) for all Supported Metrics. For the sake of demonstration, assuming we want to enable [CSM Metrics for PowerFlex](../../observability/metrics/powerflex), the PowerFlex secret yaml should be added by following the steps in [adding configuration file](#upload-configuration-files). -Once this is done, run the command below: - -```console -./csm create application --clustername \ - --name \ - --module-type observability: \ - --module-configuration "karaviMetricsPowerflex.driverConfig.filename=,karaviMetricsPowerflex.enabled=true" -``` -
- -
- CSM Observability(Standalone) with CSM Authorization - -See the individual steps for configuaration file pre-requisites for CSM Observability (Standalone) with CSM Authorization - -```console -./csm create application --clustername \ - --name \ - --module-type "observability:,authorization:" \ - --module-configuration "karaviMetricsPowerflex.driverConfig.filename=,karaviMetricsPowerflex.enabled=true,karaviAuthorizationProxy.proxyAuthzToken.filename=,karaviAuthorizationProxy.rootCertificate.filename=,karaviAuthorizationProxy.proxyHost=" -``` -
- -
- CSI Driver for Dell PowerMax with reverse proxy module - - To deploy CSI Driver for Dell PowerMax with reverse proxy module, first upload reverse proxy tls crt and tls key via [adding configuration file](#upload-configuration-files). Then, use the below command to create application: - -```console -./csm create application --clustername \ - --driver-type powermax: --name \ - --storage-arrays \ - --module-type reverse-proxy: \ - --module-configuration reverseProxy.tlsSecretKeyFile=,reverseProxy.tlsSecretCertFile= -``` -
- -
- CSI Driver with replication module - - To deploy CSI driver with replication module, first add a target cluster through [adding cluster](#add-a-cluster). Then, use the below command(this command is an example to deploy CSI Driver for Dell PowerStore with replication module) to create application:: - -```console -./csm create application --clustername \ - --driver-type powerstore: --name \ - --storage-arrays \ - --module-configuration target_cluster= \ - --module-type replication: -``` -
- - -
- CSI Driver with other module(s) not covered above - - Assuming you want to deploy a driver with `module A` and `module B`. If they have specific configurations of `A.image="docker:v1"`,`A.filename=hello`, and `B.namespace=world`. - -```console -./csm create application --clustername \ - --driver-type powerflex: --name \ - --storage-arrays \ - --module-type "module A:,module B:" \ - --module-configuration "A.image=docker:v1,A.filename=hello,B.namespace=world" -``` -
-
- -> __Note__: - - `--driver-type` and `--module-type` flags in create application command MUST match the values from the [supported CSM platforms](#view-supported-platforms) - - Replication module supports only using a pair of clusters at a time (source and a target/or single cluster) from CSM installer, However `repctl` can be used if needed to add multiple pairs of target clusters. Using replication module with other modules during application creation is not yet supported. - -### Approve application/task - -You may now approve the task so that you can continue to work with the application - -```console -./csm approve-task --applicationname -``` - -### Reject application/task - -You may want to reject a task or application to discontinue the ongoing process - -```console -./csm reject-task --applicationname -``` - -### Delete application/task - -If you want to delete an application - -```console -./csm delete application --name -``` - -> __Note__: When deleting an application, the namespace and Secrets are not deleted. These resources need to be deleted manually. See more in [Troubleshooting](../troubleshooting#after-deleting-an-application-why-cant-i-re-create-the-same-application). - -> __Note__: All commands and associated syntax can be displayed with -h or --help - diff --git a/content/docs/deployment/csminstaller/swagger.yaml b/content/docs/deployment/csminstaller/swagger.yaml deleted file mode 100644 index 15a9b8b227..0000000000 --- a/content/docs/deployment/csminstaller/swagger.yaml +++ /dev/null @@ -1,1395 +0,0 @@ -basePath: /api/v1 -definitions: - ApplicationCreateRequest: - properties: - cluster_id: - type: string - driver_configuration: - items: - type: string - type: array - driver_type_id: - type: string - module_configuration: - items: - type: string - type: array - module_types: - items: - type: string - type: array - name: - type: string - storage_arrays: - items: - type: string - type: array - required: - - cluster_id - - driver_type_id - - name - type: object - ApplicationResponse: - properties: - application_output: - type: string - cluster_id: - type: string - driver_configuration: - items: - type: string - type: array - driver_type_id: - type: string - id: - type: string - module_configuration: - items: - type: string - type: array - module_types: - items: - type: string - type: array - name: - type: string - storage_arrays: - items: - type: string - type: array - type: object - ClusterResponse: - properties: - cluster_id: - type: string - cluster_name: - type: string - nodes: - description: The nodes - type: string - type: object - ConfigFileResponse: - properties: - id: - type: string - name: - type: string - type: object - DriverResponse: - properties: - id: - type: string - storage_array_type_id: - type: string - version: - type: string - type: object - ErrorMessage: - properties: - arguments: - items: - type: string - type: array - code: - description: HTTPStatusEnum Possible HTTP status values of completed or failed - jobs - enum: - - 200 - - 201 - - 202 - - 204 - - 400 - - 401 - - 403 - - 404 - - 422 - - 429 - - 500 - - 503 - type: integer - message: - description: Message string. - type: string - message_l10n: - description: Localized message - type: object - severity: - description: |- - SeverityEnum - The severity of the condition - * INFO - Information that may be of use in understanding the failure. It is not a problem to fix. - * WARNING - A condition that isn't a failure, but may be unexpected or a contributing factor. It may be necessary to fix the condition to successfully retry the request. - * ERROR - An actual failure condition through which the request could not continue. - * CRITICAL - A failure with significant impact to the system. Normally failed commands roll back and are just ERROR, but this is possible - enum: - - INFO - - WARNING - - ERROR - - CRITICAL - type: string - type: object - ErrorResponse: - properties: - http_status_code: - description: HTTPStatusEnum Possible HTTP status values of completed or failed - jobs - enum: - - 200 - - 201 - - 202 - - 204 - - 400 - - 401 - - 403 - - 404 - - 422 - - 429 - - 500 - - 503 - type: integer - messages: - description: |- - A list of messages describing the failure encountered by this request. At least one will - be of Error severity because Info and Warning conditions do not cause the request to fail - items: - $ref: '#/definitions/ErrorMessage' - type: array - type: object - ModuleResponse: - properties: - id: - type: string - name: - type: string - standalone: - type: boolean - version: - type: string - type: object - StorageArrayCreateRequest: - properties: - management_endpoint: - type: string - meta_data: - items: - type: string - type: array - password: - type: string - storage_array_type: - type: string - unique_id: - type: string - username: - type: string - required: - - management_endpoint - - password - - storage_array_type - - unique_id - - username - type: object - StorageArrayResponse: - properties: - id: - type: string - management_endpoint: - type: string - meta_data: - items: - type: string - type: array - storage_array_type_id: - type: string - unique_id: - type: string - username: - type: string - type: object - StorageArrayTypeResponse: - properties: - id: - type: string - name: - type: string - type: object - StorageArrayUpdateRequest: - properties: - management_endpoint: - type: string - meta_data: - items: - type: string - type: array - password: - type: string - storage_array_type: - type: string - unique_id: - type: string - username: - type: string - type: object - TaskResponse: - properties: - _links: - additionalProperties: - additionalProperties: - type: string - type: object - type: object - application_name: - type: string - id: - type: string - logs: - type: string - status: - type: string - type: object -info: - contact: {} - description: CSM Deployment API - title: CSM Deployment API - version: "1.0" -paths: - /applications: - get: - consumes: - - application/json - description: List all applications - operationId: list-applications - parameters: - - description: Application Name - in: query - name: name - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - items: - $ref: '#/definitions/ApplicationResponse' - type: array - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: List all applications - tags: - - application - post: - consumes: - - application/json - description: Create a new application - operationId: create-application - parameters: - - description: Application info for creation - in: body - name: application - required: true - schema: - $ref: '#/definitions/ApplicationCreateRequest' - produces: - - application/json - responses: - "202": - description: Accepted - schema: - type: string - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Create a new application - tags: - - application - /applications/{id}: - delete: - consumes: - - application/json - description: Delete an application - operationId: delete-application - parameters: - - description: Application ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "204": - description: "" - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Delete an application - tags: - - application - get: - consumes: - - application/json - description: Get an application - operationId: get-application - parameters: - - description: Application ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/ApplicationResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Get an application - tags: - - application - /clusters: - get: - consumes: - - application/json - description: List all clusters - operationId: list-clusters - parameters: - - description: Cluster Name - in: query - name: cluster_name - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - items: - $ref: '#/definitions/ClusterResponse' - type: array - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: List all clusters - tags: - - cluster - post: - consumes: - - application/json - description: Create a new cluster - operationId: create-cluster - parameters: - - description: Name of the cluster - in: formData - name: name - required: true - type: string - - description: kube config file - in: formData - name: file - required: true - type: file - produces: - - application/json - responses: - "201": - description: Created - schema: - $ref: '#/definitions/ClusterResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Create a new cluster - tags: - - cluster - /clusters/{id}: - delete: - consumes: - - application/json - description: Delete a cluster - operationId: delete-cluster - parameters: - - description: Cluster ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "204": - description: "" - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Delete a cluster - tags: - - cluster - get: - consumes: - - application/json - description: Get a cluster - operationId: get-cluster - parameters: - - description: Cluster ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/ClusterResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Get a cluster - tags: - - cluster - patch: - consumes: - - application/json - description: Update a cluster - operationId: update-cluster - parameters: - - description: Cluster ID - in: path - name: id - required: true - type: string - - description: Name of the cluster - in: formData - name: name - type: string - - description: kube config file - in: formData - name: file - type: file - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/ClusterResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Update a cluster - tags: - - cluster - /configuration-files: - get: - consumes: - - application/json - description: List all configuration files - operationId: list-config-file - parameters: - - description: Name of the configuration file - in: query - name: config_name - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - items: - $ref: '#/definitions/ConfigFileResponse' - type: array - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: List all configuration files - tags: - - configuration-file - post: - consumes: - - application/json - description: Create a new configuration file - operationId: create-config-file - parameters: - - description: Name of the configuration file - in: formData - name: name - required: true - type: string - - description: Configuration file - in: formData - name: file - required: true - type: file - produces: - - application/json - responses: - "201": - description: Created - schema: - $ref: '#/definitions/ConfigFileResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Create a new configuration file - tags: - - configuration-file - /configuration-files/{id}: - delete: - consumes: - - application/json - description: Delete a configuration file - operationId: delete-config-file - parameters: - - description: Configuration file ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "204": - description: "" - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Delete a configuration file - tags: - - configuration-file - get: - consumes: - - application/json - description: Get a configuration file - operationId: get-config-file - parameters: - - description: Configuration file ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/ConfigFileResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Get a configuration file - tags: - - configuration-file - patch: - consumes: - - application/json - description: Update a configuration file - operationId: update-config-file - parameters: - - description: Configuration file ID - in: path - name: id - required: true - type: string - - description: Name of the configuration file - in: formData - name: name - required: true - type: string - - description: Configuration file - in: formData - name: file - required: true - type: file - produces: - - application/json - responses: - "204": - description: No Content - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Update a configuration file - tags: - - configuration-file - /driver-types: - get: - consumes: - - application/json - description: List all driver types - operationId: list-driver-types - produces: - - application/json - responses: - "200": - description: OK - schema: - items: - $ref: '#/definitions/DriverResponse' - type: array - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: List all driver types - tags: - - driver-type - /driver-types/{id}: - get: - consumes: - - application/json - description: Get a driver type - operationId: get-driver-type - parameters: - - description: Driver Type ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/DriverResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Get a driver type - tags: - - driver-type - /module-types: - get: - consumes: - - application/json - description: List all module types - operationId: list-module-type - produces: - - application/json - responses: - "200": - description: OK - schema: - items: - $ref: '#/definitions/ModuleResponse' - type: array - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: List all module types - tags: - - module-type - /module-types/{id}: - get: - consumes: - - application/json - description: Get a module type - operationId: get-module-type - parameters: - - description: Module Type ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/ModuleResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Get a module type - tags: - - module-type - /storage-array-types: - get: - consumes: - - application/json - description: List all storage array types - operationId: list-storage-array-type - produces: - - application/json - responses: - "200": - description: OK - schema: - items: - $ref: '#/definitions/StorageArrayTypeResponse' - type: array - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: List all storage array types - tags: - - storage-array-type - /storage-array-types/{id}: - get: - consumes: - - application/json - description: Get a storage array type - operationId: get-storage-array-type - parameters: - - description: Storage Array Type ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/StorageArrayTypeResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Get a storage array type - tags: - - storage-array-type - /storage-arrays: - get: - consumes: - - application/json - description: List all storage arrays - operationId: list-storage-arrays - parameters: - - description: Unique ID - in: query - name: unique_id - type: string - - description: Storage Type - in: query - name: storage_type - type: string - produces: - - application/json - responses: - "202": - description: Accepted - schema: - items: - $ref: '#/definitions/StorageArrayResponse' - type: array - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: List all storage arrays - tags: - - storage-array - post: - consumes: - - application/json - description: Create a new storage array - operationId: create-storage-array - parameters: - - description: Storage Array info for creation - in: body - name: storageArray - required: true - schema: - $ref: '#/definitions/StorageArrayCreateRequest' - produces: - - application/json - responses: - "201": - description: Created - schema: - $ref: '#/definitions/StorageArrayResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Create a new storage array - tags: - - storage-array - /storage-arrays/{id}: - delete: - consumes: - - application/json - description: Delete storage array - operationId: delete-storage-array - parameters: - - description: Storage Array ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: Success - schema: - type: string - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Delete storage array - tags: - - storage-array - get: - consumes: - - application/json - description: Get storage array - operationId: get-storage-array - parameters: - - description: Storage Array ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/StorageArrayResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Get storage array - tags: - - storage-array - patch: - consumes: - - application/json - description: Update a storage array - operationId: update-storage-array - parameters: - - description: Storage Array ID - in: path - name: id - required: true - type: string - - description: Storage Array info for update - in: body - name: storageArray - required: true - schema: - $ref: '#/definitions/StorageArrayUpdateRequest' - produces: - - application/json - responses: - "204": - description: No Content - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Update a storage array - tags: - - storage-array - /tasks: - get: - consumes: - - application/json - description: List all tasks - operationId: list-tasks - parameters: - - description: Application Name - in: query - name: application_name - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - items: - $ref: '#/definitions/TaskResponse' - type: array - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: List all tasks - tags: - - task - /tasks/{id}: - get: - consumes: - - application/json - description: Get a task - operationId: get-task - parameters: - - description: Task ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/TaskResponse' - "303": - description: See Other - schema: - $ref: '#/definitions/TaskResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Get a task - tags: - - task - /tasks/{id}/approve: - post: - consumes: - - application/json - description: Approve state change for an application - operationId: approve-state-change-application - parameters: - - description: Task ID - in: path - name: id - required: true - type: string - - description: Task is associated with an Application update operation - in: query - name: updating - type: boolean - produces: - - application/json - responses: - "202": - description: Accepted - schema: - type: string - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Approve state change for an application - tags: - - task - /tasks/{id}/cancel: - post: - consumes: - - application/json - description: Cancel state change for an application - operationId: cancel-state-change-application - parameters: - - description: Task ID - in: path - name: id - required: true - type: string - - description: Task is associated with an Application update operation - in: query - name: updating - type: boolean - produces: - - application/json - responses: - "200": - description: Success - schema: - type: string - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Cancel state change for an application - tags: - - task - /users/change-password: - patch: - consumes: - - application/json - description: Change password for existing user - operationId: change-password - parameters: - - description: Enter New Password - format: password - in: query - name: password - required: true - type: string - produces: - - application/json - responses: - "204": - description: No Content - "401": - description: Unauthorized - schema: - $ref: '#/definitions/ErrorResponse' - "403": - description: Forbidden - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - BasicAuth: [] - summary: Change password for existing user - tags: - - user - /users/login: - post: - consumes: - - application/json - description: Login for existing user - operationId: login - produces: - - application/json - responses: - "200": - description: Bearer Token for Logged in User - schema: - type: string - "401": - description: Unauthorized - schema: - $ref: '#/definitions/ErrorResponse' - "403": - description: Forbidden - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - BasicAuth: [] - summary: Login for existing user - tags: - - user -securityDefinitions: - ApiKeyAuth: - in: header - name: Authorization - type: apiKey - BasicAuth: - type: basic -swagger: "2.0" diff --git a/content/docs/deployment/csminstaller/troubleshooting.md b/content/docs/deployment/csminstaller/troubleshooting.md deleted file mode 100644 index 3fa403c8da..0000000000 --- a/content/docs/deployment/csminstaller/troubleshooting.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: "Troubleshooting" -linkTitle: "Troubleshooting" -weight: 3 -Description: > - Troubleshooting guide ---- - -## Frequently Asked Questions - - - [Why does the installation fail due to an invalid cipherKey value?](#why-does-the-installation-fail-due-to-an-invalid-cipherkey-value) - - [Why does the cluster-init pod show the error "cluster has already been initialized"?](#why-does-the-cluster-init-pod-show-the-error-cluster-has-already-been-initialized) - - [Why does the precheck fail when creating an application?](#why-does-the-precheck-fail-when-creating-an-application) - - [How can I view detailed logs for the CSM Installer?](#how-can-i-view-detailed-logs-for-the-csm-installer) - - [After deleting an application, why can't I re-create the same application?](#after-deleting-an-application-why-cant-i-re-create-the-same-application) - - [How can I upgrade CSM if I've used the CSM Installer to deploy CSM 1.0?](#how-can-i-upgrade-csm-if-ive-used-the-csm-installer-to-deploy-csm-10) - -### Why does the installation fail due to an invalid cipherKey value? -The `cipherKey` value used during deployment of the CSM Installer must be exactly 32 characters in length and contained within quotes. - -### Why does the cluster-init pod show the error "cluster has already been initialized"? -During the initial start-up of the CSM Installer, the database will be initialized by the cluster-init job. If the CSM Installer is uninstalled and then re-installed on the same cluster, this error may be shown due to the Persistent Volume for the database already containing an initialized database. The CSM Installer will function as normal and the cluster-init job can be ignored. - -If a clean installation of the CSM Installer is required, the `dbVolumeDirectory` (default location `/var/lib/cockroachdb`) must be deleted from the worker node which is hosting the Persistent Volume. After this directory is deleted, the CSM Installer can be re-installed. - -Caution: Deleting the `dbVolumeDirectory` location will remove any data persisted by the CSM Installer including clusters, storage systems, and installed applications. - -### Why does the precheck fail when creating an application? -Each CSI Driver and CSM Module has required software or CRDs that must be installed before the application can be deployed in the cluster. These prechecks are verified when the `csm create application` command is executed. If the error message "create application failed" is displayed, [review the CSM Installer logs](#how-can-i-view-detailed-logs-for-the-csm-installer) to view details about the failed prechecks. - -If the precheck fails due to required software (e.g. iSCSI, NFS, SDC) not installed on the cluster nodes, follow these steps to address the issue: -1. Delete the cluster from the CSM Installer using the `csm delete cluster` command. -2. Update the nodes in the cluster by installing required software. -3. Add the cluster to the CSM Installer using the `csm add cluster` command. - -### How can I view detailed logs for the CSM Installer? -Detailed logs of the CSM Installer can be displayed using the following command: -``` -kubectl logs -f -n deploy/dell-csm-installer -``` - -### After deleting an application, why can't I re-create the same application? -After deleting an application using the `csm delete application` command, the namespace and other non-application resources including Secrets are not deleted from the cluster. This is to prevent removing any resources that may not have been created by the CSM Installer. The namespace must be manually deleted before attempting to re-create the same application using the CSM Installer. - -### How can I upgrade CSM if I've used the CSM Installer to deploy CSM 1.0? -The CSM Installer currently does not support upgrade. If you used the CSM Installer to deploy CSM 1.0 you will need to perform the following steps to upgrade: -1. Using the CSM installer, [delete](../csmcli#delete-applicationtask) any driver/module applications that were installed (ex: `csm delete application --name `). -2. Uninstall the CSM Installer (ex: helm delete -n ) -3. Follow the deployment instructions [here](../../) to redeploy the CSI driver and modules. \ No newline at end of file From 8bdbb892bcc9a2dbee637d7e39aa1db511c430dd Mon Sep 17 00:00:00 2001 From: Yamunadevi N Shanmugam <82038610+shanmydell@users.noreply.github.com> Date: Fri, 26 Aug 2022 16:29:25 +0530 Subject: [PATCH 32/55] Common changes and version update (#335) --- content/docs/_index.md | 51 +- .../_index.md | 0 .../deployment.md | 10 +- .../troubleshooting.md | 0 .../uninstallation.md | 0 .../use_cases.md | 2 +- content/docs/csidriver/release/powermax.md | 6 +- content/docs/deployment/_index.md | 17 +- content/docs/deployment/csmoperator/_index.md | 5 +- content/docs/{ => references}/cli/_index.md | 2 +- content/v1/_index.md | 32 +- content/v1/authorization/_index.md | 12 +- content/v1/authorization/cli.md | 89 +- content/v1/authorization/deployment.md | 274 ---- content/v1/authorization/deployment/_index.md | 345 +--- .../authorization/deployment/helm/_index.md | 374 +++++ .../v1/authorization/deployment/rpm/_index.md | 349 +++++ content/v1/authorization/release/_index.md | 24 + content/v1/authorization/troubleshooting.md | 131 +- content/v1/csidriver/_index.md | 51 +- content/v1/csidriver/archives/_index.md | 43 - content/v1/csidriver/features/powerflex.md | 42 +- content/v1/csidriver/features/powermax.md | 76 +- content/v1/csidriver/features/powerstore.md | 65 +- content/v1/csidriver/features/unity.md | 53 +- .../v1/csidriver/installation/helm/isilon.md | 12 +- .../csidriver/installation/helm/powerflex.md | 80 +- .../csidriver/installation/helm/powermax.md | 70 +- .../csidriver/installation/helm/powerstore.md | 61 +- .../v1/csidriver/installation/helm/unity.md | 125 +- .../csidriver/installation/offline/_index.md | 4 +- .../csidriver/installation/operator/_index.md | 34 +- .../csidriver/installation/operator/isilon.md | 3 +- .../installation/operator/powerflex.md | 11 +- .../installation/operator/powermax.md | 174 +- .../installation/operator/powerstore.md | 9 +- .../csidriver/installation/operator/unity.md | 88 +- .../v1/csidriver/installation/test/unity.md | 10 +- content/v1/csidriver/partners/operator.md | 2 +- content/v1/csidriver/partners/tanzu.md | 2 +- content/v1/csidriver/release/operator.md | 7 +- content/v1/csidriver/release/powerflex.md | 10 +- content/v1/csidriver/release/powermax.md | 20 +- content/v1/csidriver/release/powerscale.md | 13 +- content/v1/csidriver/release/powerstore.md | 14 +- content/v1/csidriver/release/unity.md | 16 +- .../v1/csidriver/troubleshooting/powerflex.md | 2 + .../v1/csidriver/troubleshooting/powermax.md | 2 + .../csidriver/troubleshooting/powerstore.md | 3 + content/v1/csidriver/troubleshooting/unity.md | 10 +- .../csidriver/upgradation/drivers/isilon.md | 4 +- .../csidriver/upgradation/drivers/operator.md | 2 +- .../upgradation/drivers/powerflex.md | 5 +- .../csidriver/upgradation/drivers/powermax.md | 4 +- .../upgradation/drivers/powerstore.md | 4 +- .../v1/csidriver/upgradation/drivers/unity.md | 17 +- content/v1/deployment/csmapi.md | 8 - content/v1/deployment/csmcli.md | 269 ---- content/v1/deployment/csminstaller/_index.md | 2 +- content/v1/deployment/csmoperator/_index.md | 113 +- .../deployment/csmoperator/drivers/_index.md | 89 ++ .../csmoperator/drivers/powerscale.md | 2 +- .../deployment/csmoperator/modules/_index.md | 2 +- content/v1/deployment/swagger.yaml | 1395 ----------------- content/v1/deployment/troubleshooting.md | 41 - content/v1/observability/_index.md | 12 +- content/v1/observability/deployment/_index.md | 18 +- content/v1/observability/deployment/helm.md | 2 +- .../v1/observability/deployment/offline.md | 2 +- content/v1/observability/release/_index.md | 19 + content/v1/{ => references}/FAQ/_index.md | 2 +- content/v1/references/_index.md | 7 + .../contributionguidelines/_index.md | 2 +- .../v1/{grasp => references/learn}/_index.md | 2 +- .../v1/{grasp => references/learn}/start.md | 0 .../v1/{grasp => references/learn}/video.md | 0 content/v1/references/policies/_index.md | 7 + .../policies/deprecationpolicy/_index.md | 0 content/v1/release/_index.md | 19 + content/v1/replication/_index.md | 22 +- .../v1/replication/deployment/installation.md | 11 +- content/v1/replication/high-availability.md | 5 +- content/v1/replication/migrating-volumes.md | 145 ++ content/v1/replication/release/_index.md | 26 + content/v1/resiliency/_index.md | 57 +- content/v1/resiliency/deployment.md | 88 +- content/v1/resiliency/release/_index.md | 21 + content/v1/resiliency/upgrade.md | 4 +- content/v1/resiliency/usecases.md | 2 + .../volume-group-snapshots/_index.md | 51 + content/v2/_index.md | 22 +- content/v2/csidriver/features/powermax.md | 4 + .../csidriver/installation/offline/_index.md | 4 +- .../csidriver/installation/operator/_index.md | 5 +- .../csidriver/installation/test/powermax.md | 3 + content/v2/csidriver/release/powermax.md | 1 + .../csidriver/upgradation/drivers/operator.md | 5 +- .../csmoperator/drivers/powerscale.md | 15 +- .../deployment/csmoperator/modules/_index.md | 9 +- .../csmoperator/modules/authorization.md | 16 +- .../csmoperator/modules/replication.md | 27 + content/v2/observability/deployment/_index.md | 18 +- content/v2/replication/_index.md | 66 +- content/v3/FAQ/_index.md | 78 +- content/v3/_index.md | 33 +- content/v3/authorization/_index.md | 25 +- content/v3/authorization/cli.md | 59 +- content/v3/authorization/deployment/_index.md | 70 +- content/v3/authorization/design.md | 11 +- content/v3/authorization/troubleshooting.md | 150 -- content/v3/authorization/uninstallation.md | 2 +- content/v3/authorization/upgrade.md | 6 +- content/v3/contributionguidelines/_index.md | 2 +- content/v3/csidriver/_index.md | 69 +- content/v3/csidriver/features/powerflex.md | 15 +- content/v3/csidriver/features/powermax.md | 35 +- content/v3/csidriver/features/powerscale.md | 16 +- content/v3/csidriver/features/powerstore.md | 51 +- content/v3/csidriver/features/unity.md | 46 +- .../v3/csidriver/installation/helm/isilon.md | 83 +- .../csidriver/installation/helm/powerflex.md | 46 +- .../csidriver/installation/helm/powermax.md | 49 +- .../csidriver/installation/helm/powerstore.md | 106 +- .../v3/csidriver/installation/helm/unity.md | 111 +- .../csidriver/installation/offline/_index.md | 259 ++- .../csidriver/installation/operator/_index.md | 98 +- .../csidriver/installation/operator/isilon.md | 55 +- .../installation/operator/non-olm-1.jpg | Bin 206872 -> 117473 bytes .../installation/operator/powerflex.md | 8 +- .../installation/operator/powermax.md | 157 +- .../installation/operator/powerstore.md | 131 +- .../csidriver/installation/operator/unity.md | 78 +- .../csidriver/installation/test/powerflex.md | 4 +- .../csidriver/installation/test/powermax.md | 92 +- .../csidriver/installation/test/powerscale.md | 2 +- .../v3/csidriver/installation/test/unity.md | 11 + content/v3/csidriver/partners/ophub1.png | Bin 309602 -> 360494 bytes content/v3/csidriver/partners/ophub2.png | Bin 418711 -> 279647 bytes content/v3/csidriver/partners/ophub3.png | Bin 168373 -> 40361 bytes content/v3/csidriver/partners/redhat.md | 2 +- content/v3/csidriver/partners/tanzu.md | 2 +- content/v3/csidriver/release/operator.md | 12 +- content/v3/csidriver/release/powerflex.md | 15 +- content/v3/csidriver/release/powermax.md | 13 +- content/v3/csidriver/release/powerscale.md | 29 +- content/v3/csidriver/release/powerstore.md | 20 +- content/v3/csidriver/release/unity.md | 11 +- .../v3/csidriver/troubleshooting/powerflex.md | 5 +- .../csidriver/troubleshooting/powerscale.md | 6 +- .../csidriver/troubleshooting/powerstore.md | 2 +- content/v3/csidriver/troubleshooting/unity.md | 1 + .../csidriver/upgradation/drivers/isilon.md | 31 +- .../csidriver/upgradation/drivers/operator.md | 20 +- .../upgradation/drivers/powerflex.md | 16 +- .../csidriver/upgradation/drivers/powermax.md | 15 +- .../upgradation/drivers/powerstore.md | 23 +- .../v3/csidriver/upgradation/drivers/unity.md | 30 +- content/v3/deployment/_index.md | 10 +- content/v3/deployment/csminstaller/_index.md | 16 +- content/v3/deployment/csminstaller/csmcli.md | 12 +- content/v3/deployment/csmoperator/_index.md | 209 +++ .../deployment/csmoperator/drivers/_index.md | 6 + .../csmoperator/drivers/powerscale.md | 139 ++ content/v3/deployment/csmoperator/install.jpg | Bin 0 -> 170165 bytes .../v3/deployment/csmoperator/install_olm.jpg | Bin 0 -> 182304 bytes .../csmoperator/install_olm_pods.jpg | Bin 0 -> 107093 bytes .../deployment/csmoperator/install_pods.jpg | Bin 0 -> 116545 bytes .../deployment/csmoperator/modules/_index.md | 6 + .../csmoperator/modules/authorization.md | 20 + .../csmoperator/troubleshooting/_index.md | 60 + .../v3/deployment/csmoperator/uninstall.JPG | Bin 0 -> 110286 bytes .../deployment/csmoperator/uninstall_olm.JPG | Bin 0 -> 46203 bytes content/v3/grasp/video.md | 4 +- content/v3/observability/_index.md | 22 +- content/v3/observability/deployment/_index.md | 62 +- content/v3/observability/deployment/helm.md | 91 +- .../v3/observability/deployment/offline.md | 37 +- content/v3/observability/deployment/online.md | 38 +- content/v3/observability/metrics/_index.md | 2 +- content/v3/observability/metrics/powerflex.md | 2 +- .../v3/observability/metrics/powerstore.md | 2 +- .../observability/troubleshooting/_index.md | 10 + content/v3/observability/uninstall/_index.md | 4 +- content/v3/observability/upgrade/_index.md | 64 +- content/{v1 => v3}/policies/_index.md | 0 .../v3/policies/deprecationpolicy/_index.md | 31 + content/v3/replication/_index.md | 79 +- content/v3/replication/deployment/_index.md | 2 +- .../deployment/configmap-secrets.md | 3 +- .../v3/replication/deployment/installation.md | 10 +- content/v3/replication/deployment/powermax.md | 9 +- .../v3/replication/deployment/powerscale.md | 188 +++ .../v3/replication/deployment/powerstore.md | 12 +- .../replication/deployment/storageclasses.md | 3 +- content/v3/replication/disaster-recovery.md | 19 +- content/v3/replication/replication-actions.md | 27 +- content/v3/replication/uninstall.md | 2 +- content/v3/resiliency/_index.md | 53 +- content/v3/resiliency/deployment.md | 13 +- content/v3/resiliency/troubleshooting.md | 8 +- content/v3/resiliency/uninstallation.md | 2 +- content/v3/resiliency/upgrade.md | 2 +- content/v3/resiliency/usecases.md | 2 + content/v3/snapshots/_index.md | 2 +- content/v3/support/_index.md | 2 +- content/v3/troubleshooting/_index.md | 2 +- 206 files changed, 4713 insertions(+), 4296 deletions(-) rename content/docs/{application-mobility => applicationmobility}/_index.md (100%) rename content/docs/{application-mobility => applicationmobility}/deployment.md (94%) rename content/docs/{application-mobility => applicationmobility}/troubleshooting.md (100%) rename content/docs/{application-mobility => applicationmobility}/uninstallation.md (100%) rename content/docs/{application-mobility => applicationmobility}/use_cases.md (97%) rename content/docs/{ => references}/cli/_index.md (99%) delete mode 100644 content/v1/authorization/deployment.md create mode 100644 content/v1/authorization/deployment/helm/_index.md create mode 100644 content/v1/authorization/deployment/rpm/_index.md create mode 100644 content/v1/authorization/release/_index.md delete mode 100644 content/v1/csidriver/archives/_index.md delete mode 100644 content/v1/deployment/csmapi.md delete mode 100644 content/v1/deployment/csmcli.md delete mode 100644 content/v1/deployment/swagger.yaml delete mode 100644 content/v1/deployment/troubleshooting.md create mode 100644 content/v1/observability/release/_index.md rename content/v1/{ => references}/FAQ/_index.md (99%) create mode 100644 content/v1/references/_index.md rename content/v1/{ => references}/contributionguidelines/_index.md (99%) rename content/v1/{grasp => references/learn}/_index.md (88%) rename content/v1/{grasp => references/learn}/start.md (100%) rename content/v1/{grasp => references/learn}/video.md (100%) create mode 100644 content/v1/references/policies/_index.md rename content/v1/{ => references}/policies/deprecationpolicy/_index.md (100%) create mode 100644 content/v1/release/_index.md create mode 100644 content/v1/replication/migrating-volumes.md create mode 100644 content/v1/replication/release/_index.md create mode 100644 content/v1/resiliency/release/_index.md create mode 100644 content/v1/snapshots/volume-group-snapshots/_index.md create mode 100644 content/v2/deployment/csmoperator/modules/replication.md create mode 100644 content/v3/deployment/csmoperator/_index.md create mode 100644 content/v3/deployment/csmoperator/drivers/_index.md create mode 100644 content/v3/deployment/csmoperator/drivers/powerscale.md create mode 100644 content/v3/deployment/csmoperator/install.jpg create mode 100644 content/v3/deployment/csmoperator/install_olm.jpg create mode 100644 content/v3/deployment/csmoperator/install_olm_pods.jpg create mode 100644 content/v3/deployment/csmoperator/install_pods.jpg create mode 100644 content/v3/deployment/csmoperator/modules/_index.md create mode 100644 content/v3/deployment/csmoperator/modules/authorization.md create mode 100644 content/v3/deployment/csmoperator/troubleshooting/_index.md create mode 100644 content/v3/deployment/csmoperator/uninstall.JPG create mode 100644 content/v3/deployment/csmoperator/uninstall_olm.JPG rename content/{v1 => v3}/policies/_index.md (100%) create mode 100644 content/v3/policies/deprecationpolicy/_index.md create mode 100644 content/v3/replication/deployment/powerscale.md diff --git a/content/docs/_index.md b/content/docs/_index.md index 4819bc1e4e..ba78875316 100644 --- a/content/docs/_index.md +++ b/content/docs/_index.md @@ -6,6 +6,7 @@ weight: 20 menu: main: weight: 20 +no_list: true --- The Dell Technologies (Dell) Container Storage Modules (CSM) enables simple and consistent integration and automation experiences, extending enterprise storage capabilities to Kubernetes for cloud-native stateful applications. It reduces management complexity so developers can independently consume enterprise storage with ease and automate daily operations such as provisioning, snapshotting, replication, observability, authorization and, resiliency. @@ -39,30 +40,52 @@ CSM is made up of multiple components including modules (enterprise capabilities [...Learn more](observability/) {{< /card >}} {{< /cardpane >}} +{{< cardpane >}} +{{< card header="[Application Mobility](applicationmobility/)" + footer="Supports all platforms">}} + Container Storage Modules for Application Mobility provide Kubernetes administrators the ability to clone their stateful application workloads and application data to other clusters, either on-premise or in the cloud. + [...Learn more](applicationmobility/) + {{< /card >}} + {{< card header="[Encryption](secure/encryption)" + footer="Supports PowerScale">}} + Encryption provides the capability to encrypt user data residing on volumes created by Dell CSI Drivers. + [...Learn more](secure/encryption/) + {{< /card >}} +{{< /cardpane >}} +{{< cardpane >}} + {{< card header="[License](license/)" + footer="Required for [Application Mobility](applicationmobility/) & [Encryption](secure/encryption/)">}} + The tech-preview releases of Application Mobility and Encryption require a license. + Request a license using the [Container Storage Modules License Request](https://app.smartsheet.com/b/form/5e46fad643874d56b1f9cf4c9f3071fb) by providing the requested details. + [...Learn more](license/) + {{< /card >}} +{{< /cardpane >}} CSM Diagram ## CSM Supported Modules and Dell CSI Drivers -| Modules/Drivers | CSM 1.3 | [CSM 1.2.1](../v1/) | [CSM 1.2](../v2/) | [CSM 1.1](../v3/) | +| Modules/Drivers | CSM 1.4 | [CSM 1.3](../v1/) | [CSM 1.2.1](../v2/) | [CSM 1.2](../v3/) | | - | :-: | :-: | :-: | :-: | -| [Authorization](https://hub.docker.com/r/dellemc/csm-authorization-sidecar) | v1.3.0 | v1.2.0 | v1.2.0 | v1.1.0 | -| [Observability](https://hub.docker.com/r/dellemc/csm-topology) | v1.2.0 | v1.1.1 | v1.1.0 | v1.0.1 | -| [Replication](https://hub.docker.com/r/dellemc/dell-csi-replicator) | v1.3.0 | v1.2.0 | v1.2.0 | v1.1.0 | -| [Resiliency](https://hub.docker.com/r/dellemc/podmon) | v1.2.0 | v1.1.0 | v1.1.0 | v1.0.1 | -| [CSI Driver for PowerScale](https://hub.docker.com/r/dellemc/csi-isilon/tags) | v2.3.0 | v2.2.0 | v2.2.0 | v2.1.0 | -| [CSI Driver for Unity XT](https://hub.docker.com/r/dellemc/csi-unity/tags) | v2.3.0 | v2.2.0 | v2.2.0 | v2.1.0 | -| [CSI Driver for PowerStore](https://hub.docker.com/r/dellemc/csi-powerstore/tags) | v2.3.0 | v2.2.0 | v2.2.0| v2.1.0 | -| [CSI Driver for PowerFlex](https://hub.docker.com/r/dellemc/csi-vxflexos/tags) | v2.3.0 | v2.2.0 | v2.2.0 | v2.1.0 | -| [CSI Driver for PowerMax](https://hub.docker.com/r/dellemc/csi-powermax/tags) | v2.3.0 | v2.2.0 | v2.2.0 | v2.1.0 | +| [Authorization](https://hub.docker.com/r/dellemc/csm-authorization-sidecar) | v1.4.0 | v1.3.0 | v1.2.0 | v1.2.0 | +| [Observability](https://hub.docker.com/r/dellemc/csm-topology) | v1.3.0 | v1.2.0 | v1.1.1 | v1.1.0 | +| [Replication](https://hub.docker.com/r/dellemc/dell-csi-replicator) | v1.3.0 | v1.3.0 | v1.2.0 | v1.2.0 | +| [Resiliency](https://hub.docker.com/r/dellemc/podmon) | v1.3.0 | v1.2.0 | v1.1.0 | v1.1.0 | +| Encryption | NA | NA | NA | 0.1.0 | +| Appication Mobility | NA | NA | NA | 0.1.0 | +| [CSI Driver for PowerScale](https://hub.docker.com/r/dellemc/csi-isilon/tags) | v2.4.0 | v2.3.0 | v2.2.0 | v2.2.0 | +| [CSI Driver for Unity XT](https://hub.docker.com/r/dellemc/csi-unity/tags) | v2.4.0 | v2.3.0 | v2.2.0 | v2.2.0 | +| [CSI Driver for PowerStore](https://hub.docker.com/r/dellemc/csi-powerstore/tags) | v2.4.0 | v2.3.0 | v2.2.0| v2.2.0 | +| [CSI Driver for PowerFlex](https://hub.docker.com/r/dellemc/csi-vxflexos/tags) | v2.4.0 | v2.3.0 | v2.2.0 | v2.2.0 | +| [CSI Driver for PowerMax](https://hub.docker.com/r/dellemc/csi-powermax/tags) | v2.4.0 | v2.3.0 | v2.2.0 | v2.2.0 | ## CSM Modules Support Matrix for Dell CSI Drivers -| CSM Module | CSI PowerFlex v2.3.0 | CSI PowerScale v2.3.0 | CSI PowerStore v2.3.0 | CSI PowerMax v2.3.0 | CSI Unity XT v2.3.0 | +| CSM Module | CSI PowerFlex v2.4.0 | CSI PowerScale v2.4.0 | CSI PowerStore v2.4.0 | CSI PowerMax v2.4.0 | CSI Unity XT v2.4.0 | | ----------------- | -------------- | --------------- | --------------- | ------------- | --------------- | -| Authorization v1.3| ✔️ | ✔️ | ❌ | ✔️ | ❌ | -| Observability v1.2| ✔️ | ❌ | ✔️ | ❌ | ❌ | +| Authorization v1.4| ✔️ | ✔️ | ❌ | ✔️ | ❌ | +| Observability v1.3| ✔️ | ✔️ | ✔️ | ❌ | ❌ | | Replication v1.3| ❌ | ✔️ | ✔️ | ✔️ | ❌ | -| Resiliency v1.2| ✔️ | ✔️ | ❌ | ❌ | ✔️ | +| Resiliency v1.3| ✔️ | ✔️ | ❌ | ❌ | ✔️ | | Encryption v0.1.0| ❌ | ✔️ | ❌ | ❌ | ❌ | | Application Mobility v0.1.0| ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | diff --git a/content/docs/application-mobility/_index.md b/content/docs/applicationmobility/_index.md similarity index 100% rename from content/docs/application-mobility/_index.md rename to content/docs/applicationmobility/_index.md diff --git a/content/docs/application-mobility/deployment.md b/content/docs/applicationmobility/deployment.md similarity index 94% rename from content/docs/application-mobility/deployment.md rename to content/docs/applicationmobility/deployment.md index b9fbf58d7c..d5ffb3e8fd 100644 --- a/content/docs/application-mobility/deployment.md +++ b/content/docs/applicationmobility/deployment.md @@ -15,17 +15,17 @@ Description: > ``` kubectl create ns application-mobility ``` -1. Edit the license Secret file (see Pre-requisites above) and set the correct namespace (ex: `namespace: application-mobility`) -1. Create the Secret containing a license file +2. Edit the license Secret file (see Pre-requisites above) and set the correct namespace (ex: `namespace: application-mobility`) +3. Create the Secret containing a license file ``` kubectl apply -f license.yml ``` -1. Add the Dell Helm Charts repository +4. Add the Dell Helm Charts repository ``` helm repo add dell https://dell.github.io/helm-charts ``` -1. Either create a values.yml file or provide the `--set` options to the `helm install` to override default values from the [Configuration](#configuration) section. -1. Install the helm chart +5. Either create a values.yml file or provide the `--set` options to the `helm install` to override default values from the [Configuration](#configuration) section. +6. Install the helm chart ``` helm install application-mobility -n application-mobility dell/csm-application-mobility ``` diff --git a/content/docs/application-mobility/troubleshooting.md b/content/docs/applicationmobility/troubleshooting.md similarity index 100% rename from content/docs/application-mobility/troubleshooting.md rename to content/docs/applicationmobility/troubleshooting.md diff --git a/content/docs/application-mobility/uninstallation.md b/content/docs/applicationmobility/uninstallation.md similarity index 100% rename from content/docs/application-mobility/uninstallation.md rename to content/docs/applicationmobility/uninstallation.md diff --git a/content/docs/application-mobility/use_cases.md b/content/docs/applicationmobility/use_cases.md similarity index 97% rename from content/docs/application-mobility/use_cases.md rename to content/docs/applicationmobility/use_cases.md index 96dc9b880a..81642c3546 100644 --- a/content/docs/application-mobility/use_cases.md +++ b/content/docs/applicationmobility/use_cases.md @@ -6,7 +6,7 @@ Description: > Use Cases --- -After Application Mobility is installed, the [dellctl CLI](../../cli/) can be used to register clusters and manage backups and restores of applications. +After Application Mobility is installed, the [dellctl CLI](../../references/cli/) can be used to register clusters and manage backups and restores of applications. ## Backup and Restore an Application This example details the steps when an application in namespace `demo1` is being backed up and then later restored to either the same cluster or another cluster. In this sample, both Application Mobility and Velero are installed in the `application-mobility` namespace. diff --git a/content/docs/csidriver/release/powermax.md b/content/docs/csidriver/release/powermax.md index cf425eee38..8dcdc0ae88 100644 --- a/content/docs/csidriver/release/powermax.md +++ b/content/docs/csidriver/release/powermax.md @@ -9,11 +9,11 @@ description: Release notes for PowerMax CSI driver ### New Features/Changes - Online volume expansion for replicated volumes. -- Added support for PowerMax Juniper release +- Added support for PowerMaxOS 10. - Removed 9.x Unisphere REST endpoints support. - Added 10.0 Unisphere REST endpoints support. -- Automatic SRDF group creation for PowerMax arrays (Juniper release and above). -- Added PowerPath for Linux support. +- Automatic SRDF group creation for PowerMax arrays (PowerMaxOS 10 and above). +- Added PowerPath support. ### Fixed Issues There are no fixed issues in this release. diff --git a/content/docs/deployment/_index.md b/content/docs/deployment/_index.md index ae45e7739f..2110013a5c 100644 --- a/content/docs/deployment/_index.md +++ b/content/docs/deployment/_index.md @@ -11,7 +11,7 @@ The Container Storage Modules along with the required CSI Drivers can each be de {{< cardpane >}} {{< card header="[**CSM Operator**](csmoperator/)" - footer="Supports driver [PowerScale](csmoperator/drivers/powerscale/), module [Authorization](csmoperator/modules/authorization/)">}} + footer="Supports driver [PowerScale](csmoperator/drivers/powerscale/), modules [Authorization](csmoperator/modules/authorization/) [Replication](csmoperator/modules/replication/)">}} Dell CSM Operator is a Kubernetes Operator, which can be used to install and manage the CSI Drivers and CSM Modules provided by Dell for various storage platforms. This operator is available as a community operator for upstream Kubernetes and can be deployed using OperatorHub.io. The operator can be installed using OLM (Operator Lifecycle Manager) or manually. [...More on installation instructions](csmoperator/) {{< /card >}} @@ -61,4 +61,17 @@ The Container Storage Modules and the required CSI Drivers can each be deployed Replication module can be installed by installing repctl,Container Storage Modules (CSM) for Replication Controller,CSI driver after enabling replication. [...More on installation instructions](../replication/deployment) {{< /card >}} -{{< /cardpane >}} \ No newline at end of file +{{< /cardpane >}} +{{< cardpane >}} +{{< card header="[Dell Container Storage Module for Application Mobility](../applicationmobility/deployment)" + footer="Installs Application Mobility Module">}} + Application mobility module can be installed via helm charts. This is a tech preview release and it requires a license for installation. + [...More on installation instructions](../applicationmobility/deployment) + {{< /card >}} + {{< card header="[Dell Container Storage Module for Encryption](../secure/encryption/deployment)" + footer="Installs Encryption Module">}} + Encryption is enabled as part of the Dell CSI driver installation. The drivers can be installed either by a Helm chart or by the Dell CSI Operator. + In the tech preview release, Encryption can only be enabled via Helm chart installation. + [...More on installation instructions](../secure/encryption//deployment) + {{< /card >}} +{{< /cardpane >}} diff --git a/content/docs/deployment/csmoperator/_index.md b/content/docs/deployment/csmoperator/_index.md index c89d7e9d74..afb8519b81 100644 --- a/content/docs/deployment/csmoperator/_index.md +++ b/content/docs/deployment/csmoperator/_index.md @@ -6,10 +6,10 @@ weight: 1 --- {{% pageinfo color="primary" %}} -The Dell CSM Operator is currently in tech-preview and is not supported in production environments. It can be used in environments where no other Dell CSI Drivers or CSM Modules are installed. +The Dell Container Storage Modules Operator Operator is currently in tech-preview and is not supported in production environments. It can be used in environments where no other Dell CSI Drivers or CSM Modules are installed. {{% /pageinfo %}} -The Dell CSM Operator is a Kubernetes Operator, which can be used to install and manage the CSI Drivers and CSM Modules provided by Dell for various storage platforms. This operator is available as a community operator for upstream Kubernetes and can be deployed using OperatorHub.io. The operator can be installed using OLM (Operator Lifecycle Manager) or manually. +The Dell Container Storage Modules Operator Operator is a Kubernetes Operator, which can be used to install and manage the CSI Drivers and CSM Modules provided by Dell for various storage platforms. This operator is available as a community operator for upstream Kubernetes and can be deployed using OperatorHub.io. The operator can be installed using OLM (Operator Lifecycle Manager) or manually. ## Supported Platforms Dell CSM Operator has been tested and qualified on Upstream Kubernetes and OpenShift. Supported versions are listed below. @@ -29,6 +29,7 @@ Dell CSM Operator has been tested and qualified on Upstream Kubernetes and OpenS | CSM Modules | Version | ConfigVersion | | ------------------ | --------- | -------------- | | CSM Authorization | 1.2.0 + | v1.2.0 + | +| CSM Authorization | 1.3.0 + | v1.3.0 + | ## Installation Dell CSM Operator can be installed manually or via Operator Hub. diff --git a/content/docs/cli/_index.md b/content/docs/references/cli/_index.md similarity index 99% rename from content/docs/cli/_index.md rename to content/docs/references/cli/_index.md index 25723e6ff5..e99a6775da 100644 --- a/content/docs/cli/_index.md +++ b/content/docs/references/cli/_index.md @@ -1,7 +1,7 @@ --- title: "CLI" linkTitle: "CLI" -weight: 9 +weight: 1 Description: > CLI for Dell Container Storage Modules (CSM) --- diff --git a/content/v1/_index.md b/content/v1/_index.md index 181e677e61..baa4f84ee0 100644 --- a/content/v1/_index.md +++ b/content/v1/_index.md @@ -1,4 +1,3 @@ - --- title: "Documentation" linkTitle: "Documentation" @@ -7,6 +6,7 @@ linkTitle: "Documentation" This document version is no longer actively maintained. The site that you are currently viewing is an archived snapshot. For up-to-date documentation, see the [latest version](/csm-docs/) {{% /pageinfo %}} + The Dell Technologies (Dell) Container Storage Modules (CSM) enables simple and consistent integration and automation experiences, extending enterprise storage capabilities to Kubernetes for cloud-native stateful applications. It reduces management complexity so developers can independently consume enterprise storage with ease and automate daily operations such as provisioning, snapshotting, replication, observability, authorization and, resiliency. CSM Hex Diagram @@ -17,23 +17,23 @@ CSM is made up of multiple components including modules (enterprise capabilities ## CSM Supported Modules and Dell CSI Drivers -| Modules/Drivers | CSM 1.2.1 | [CSM 1.2](../v1/) | [CSM 1.1](../v1/) | [CSM 1.0.1](../v2/) | +| Modules/Drivers | CSM 1.3 | [CSM 1.2.1](../v1/) | [CSM 1.2](../v2/) | [CSM 1.1](../v3/) | | - | :-: | :-: | :-: | :-: | -| [Authorization](https://hub.docker.com/r/dellemc/csm-authorization-sidecar) | 1.2 | 1.2 | 1.1 | 1.0 | -| [Observability](https://hub.docker.com/r/dellemc/csm-topology) | 1.1.1 | 1.1 | 1.0.1 | 1.0.1 | -| [Replication](https://hub.docker.com/r/dellemc/dell-csi-replicator) | 1.2 | 1.2 | 1.1 | 1.0 | -| [Resiliency](https://hub.docker.com/r/dellemc/podmon) | 1.1 | 1.1 | 1.0.1 | 1.0.1 | -| [CSI Driver for PowerScale](https://hub.docker.com/r/dellemc/csi-isilon/tags) | v2.2 | v2.2 | v2.1 | v2.0 | -| [CSI Driver for Unity](https://hub.docker.com/r/dellemc/csi-unity/tags) | v2.2 | v2.2 | v2.1 | v2.0 | -| [CSI Driver for PowerStore](https://hub.docker.com/r/dellemc/csi-powerstore/tags) | v2.2 | v2.2 | v2.1 | v2.0 | -| [CSI Driver for PowerFlex](https://hub.docker.com/r/dellemc/csi-vxflexos/tags) | v2.2 | v2.2 | v2.1 | v2.0 | -| [CSI Driver for PowerMax](https://hub.docker.com/r/dellemc/csi-powermax/tags) | v2.2 | v2.2 | v2.1 | v2.0 | +| [Authorization](https://hub.docker.com/r/dellemc/csm-authorization-sidecar) | v1.3.0 | v1.2.0 | v1.2.0 | v1.1.0 | +| [Observability](https://hub.docker.com/r/dellemc/csm-topology) | v1.2.0 | v1.1.1 | v1.1.0 | v1.0.1 | +| [Replication](https://hub.docker.com/r/dellemc/dell-csi-replicator) | v1.3.0 | v1.2.0 | v1.2.0 | v1.1.0 | +| [Resiliency](https://hub.docker.com/r/dellemc/podmon) | v1.2.0 | v1.1.0 | v1.1.0 | v1.0.1 | +| [CSI Driver for PowerScale](https://hub.docker.com/r/dellemc/csi-isilon/tags) | v2.3.0 | v2.2.0 | v2.2.0 | v2.1.0 | +| [CSI Driver for Unity XT](https://hub.docker.com/r/dellemc/csi-unity/tags) | v2.3.0 | v2.2.0 | v2.2.0 | v2.1.0 | +| [CSI Driver for PowerStore](https://hub.docker.com/r/dellemc/csi-powerstore/tags) | v2.3.0 | v2.2.0 | v2.2.0| v2.1.0 | +| [CSI Driver for PowerFlex](https://hub.docker.com/r/dellemc/csi-vxflexos/tags) | v2.3.0 | v2.2.0 | v2.2.0 | v2.1.0 | +| [CSI Driver for PowerMax](https://hub.docker.com/r/dellemc/csi-powermax/tags) | v2.3.0 | v2.2.0 | v2.2.0 | v2.1.0 | ## CSM Modules Support Matrix for Dell CSI Drivers -| CSM Module | CSI PowerFlex v2.2 | CSI PowerScale v2.2 | CSI PowerStore v2.2 | CSI PowerMax v2.2 | CSI Unity XT v2.2 | +| CSM Module | CSI PowerFlex v2.3.0 | CSI PowerScale v2.3.0 | CSI PowerStore v2.3.0 | CSI PowerMax v2.3.0 | CSI Unity XT v2.3.0 | | ----------------- | -------------- | --------------- | --------------- | ------------- | --------------- | -| Authorization v1.2| ✔️ | ✔️ | ❌ | ✔️ | ❌ | -| Observability v1.1.1 | ✔️ | ❌ | ✔️ | ❌ | ❌ | -| Replication v1.2| ❌ | ✔️ | ✔️ | ✔️ | ❌ | -| Resilency v1.1| ✔️ | ❌ | ❌ | ❌ | ✔️ | \ No newline at end of file +| Authorization v1.3| ✔️ | ✔️ | ❌ | ✔️ | ❌ | +| Observability v1.2| ✔️ | ❌ | ✔️ | ❌ | ❌ | +| Replication v1.3| ❌ | ✔️ | ✔️ | ✔️ | ❌ | +| Resiliency v1.2| ✔️ | ✔️ | ❌ | ❌ | ✔️ | diff --git a/content/v1/authorization/_index.md b/content/v1/authorization/_index.md index 0310e936d6..744d4918eb 100644 --- a/content/v1/authorization/_index.md +++ b/content/v1/authorization/_index.md @@ -20,7 +20,7 @@ The following diagram shows a high-level overview of CSM for Authorization with ## CSM for Authorization Capabilities {{}} -| Feature | PowerFlex | PowerMax | PowerScale | Unity | PowerStore | +| Feature | PowerFlex | PowerMax | PowerScale | Unity XT | PowerStore | | - | - | - | - | - | - | | Ability to set storage quota limits to ensure k8s tenants are not overconsuming storage | Yes | Yes | No (natively supported) | No | No | | Ability to create access control policies to ensure k8s tenant clusters are not accessing storage that does not belong to them | Yes | Yes | No (natively supported) | No | No | @@ -33,8 +33,7 @@ The following diagram shows a high-level overview of CSM for Authorization with {{
}} | COP/OS | Supported Versions | |-|-| -| Kubernetes | 1.21, 1.22, 1.23 | -| Red Hat OpenShift | 4.8, 4.9| +| Kubernetes | 1.22, 1.23, 1.24 | | RHEL | 7.x, 8.x | | CentOS | 7.8, 7.9 | {{
}} @@ -53,9 +52,9 @@ CSM for Authorization supports the following CSI drivers and versions. {{}} | Storage Array | CSI Driver | Supported Versions | | ------------- | ---------- | ------------------ | -| CSI Driver for Dell PowerFlex | [csi-powerflex](https://github.com/dell/csi-powerflex) | v2.0, v2.1, v2.2 | -| CSI Driver for Dell PowerMax | [csi-powermax](https://github.com/dell/csi-powermax) | v2.0, v2.1 ,v2.2 | -| CSI Driver for Dell PowerScale | [csi-powerscale](https://github.com/dell/csi-powerscale) | v2.0, v2.1, v2.2 | +| CSI Driver for Dell PowerFlex | [csi-powerflex](https://github.com/dell/csi-powerflex) | v2.0 + | +| CSI Driver for Dell PowerMax | [csi-powermax](https://github.com/dell/csi-powermax) | v2.0 + | +| CSI Driver for Dell PowerScale | [csi-powerscale](https://github.com/dell/csi-powerscale) | v2.0 + | {{
}} **NOTE:** If the deployed CSI driver has a number of controller pods equal to the number of schedulable nodes in your cluster, CSM for Authorization may not be able to inject properly into the driver's controller pod. @@ -69,6 +68,7 @@ CSM for Authorization consists of 2 components - the Authorization sidecar and t | ------------------------------- | ---------------------------------- | | dellemc/csm-authorization-sidecar:v1.0.0 | v1.0.0, v1.1.0 | | dellemc/csm-authorization-sidecar:v1.2.0 | v1.1.0, v1.2.0 | +| dellemc/csm-authorization-sidecar:v1.3.0 | v1.1.0, v1.2.0, v1.3.0 | {{}} ## Roles and Responsibilities diff --git a/content/v1/authorization/cli.md b/content/v1/authorization/cli.md index f1ef1bb5aa..b282d7c3fd 100644 --- a/content/v1/authorization/cli.md +++ b/content/v1/authorization/cli.md @@ -25,6 +25,7 @@ If you feel that something is unclear or missing in this document, please open u | [karavictl role delete](#karavictl-role-delete ) | Delete role | | [karavictl rolebinding](#karavictl-rolebinding) | Manage role bindings | | [karavictl rolebinding create](#karavictl-rolebinding-create) | Create a rolebinding between role and tenant | +| [karavictl rolebinding delete](#karavictl-rolebinding-delete) | Delete a rolebinding between role and tenant | | [karavictl storage](#karavictl-storage) | Manage storage systems | | [karavictl storage get](#karavictl-storage-get) | Get details on a registered storage system | | [karavictl storage list](#karavictl-storage-list) | List registered storage systems | @@ -35,7 +36,7 @@ If you feel that something is unclear or missing in this document, please open u | [karavictl tenant create](#karavictl-tenant-create) | Create a tenant resource within CSM | | [karavictl tenant get](#karavictl-tenant-get) | Get a tenant resource within CSM | | [karavictl tenant list](#karavictl-tenant-list) | Lists tenant resources within CSM | -| [karavictl tenant get](#karavictl-tenant-get) | Get a tenant resource within CSM | +| [karavictl tenant revoke](#karavictl-tenant-revoke) | Get a tenant resource within CSM | | [karavictl tenant delete](#karavictl-tenant-delete) | Deletes a tenant resource within CSM | @@ -538,7 +539,46 @@ karavictl rolebinding create [flags] ``` $ karavictl rolebinding create --role CSISilver --tenant Alice ``` -On success, there will be no output. You may run `karavictl tenant get ` to confirm the rolebinding creation occurred. +On success, there will be no output. You may run `karavictl tenant get --name ` to confirm the rolebinding creation occurred. + + +--- + + + +### karavictl rolebinding delete + +Delete a rolebinding between role and tenant + +##### Synopsis + +Deletes a rolebinding between role and tenant + +``` +karavictl rolebinding delete [flags] +``` + +##### Options + +``` + -h, --help help for create + -r, --role string Role name + -t, --tenant string Tenant name +``` + +##### Options inherited from parent commands + +``` + --addr string Address of the server (default "localhost:443") + --config string config file (default is $HOME/.karavictl.yaml) +``` + +##### Output + +``` +$ karavictl rolebinding delete --role CSISilver --tenant Alice +``` +On success, there will be no output. You may run `karavictl tenant get --name ` to confirm the rolebinding deletion occurred. @@ -802,7 +842,7 @@ Manage tenants ##### Synopsis -Management fortenants +Management for tenants ``` karavictl tenant [flags] @@ -875,7 +915,7 @@ Get a tenant resource within CSM ##### Synopsis -Gets a tenant resource within CSM +Gets a tenant resource and its assigned roles within CSM ``` karavictl tenant get [flags] @@ -902,6 +942,7 @@ $ karavictl tenant get --name Alice { "name": "Alice" + "roles": "role-1,role-2" } ``` @@ -958,6 +999,44 @@ $ karavictl tenant list +### karavictl tenant revoke + +Revokes access for a tenant + +##### Synopsis + +Revokes access to storage resources for a tenant + +``` +karavictl tenant revoke [flags] +``` + +##### Options + +``` + -h, --help help for create + -n, --name string Tenant name +``` + +##### Options inherited from parent commands + +``` + --addr string Address of the server (default "localhost:443") + --config string config file (default is $HOME/.karavictl.yaml) +``` + +##### Output +``` +$ karavictl tenant revoke --name Alice +``` +On success, there will be no output. + + + +--- + + + ### karavictl tenant delete Deletes a tenant resource within CSM @@ -988,4 +1067,4 @@ karavictl tenant delete [flags] ``` $ karavictl tenant delete --name Alice ``` -On success, there will be no output. You may run `karavictl tenant get --name ` to confirm the deletion occurred. \ No newline at end of file +On success, there will be no output. You may run `karavictl tenant get --name ` to confirm the deletion occurred. diff --git a/content/v1/authorization/deployment.md b/content/v1/authorization/deployment.md deleted file mode 100644 index b2c11a53a0..0000000000 --- a/content/v1/authorization/deployment.md +++ /dev/null @@ -1,274 +0,0 @@ ---- -title: Deployment -linktitle: Deployment -weight: 2 -description: > - Dell EMC Container Storage Modules (CSM) for Authorization deployment ---- - -This section outlines the deployment steps for Container Storage Modules (CSM) for Authorization. The deployment of CSM for Authorization is handled in 2 parts: -- Deploying the CSM for Authorization proxy server, to be controlled by storage administrators -- Configuring one to many [supported](../../authorization#supported-csi-drivers) Dell EMC CSI drivers with CSM for Authorization - -## Prerequisites - -The CSM for Authorization proxy server requires a Linux host with the following minimum resource allocations: -- 32 GB of memory -- 4 CPU -- 200 GB local storage - -## Deploying the CSM Authorization Proxy Server - -The first part deploying CSM for Authorization is installing the proxy server. This activity and the administration of the proxy server will be owned by the storage administrator. - -The CSM for Authorization proxy server is installed using a single binary installer. - -### Single Binary Installer - -The easiest way to obtain the single binary installer RPM is directly from the [GitHub repository's releases](https://github.com/dell/karavi-authorization/releases) section. - -The single binary installer can also be built from source by cloning the [GitHub repository](https://github.com/dell/karavi-authorization) and using the following Makefile targets to build the installer: - -``` -make dist build-installer rpm -``` - -The `build-installer` step creates a binary at `bin/deploy` and embeds all components required for installation. The `rpm` step generates an RPM package and stores it at `deploy/rpm/x86_64/`. -This allows CSM for Authorization to be installed in network-restricted environments. - -A Storage Administrator can execute the installer or rpm package as a root user or via `sudo`. - -### Installing the RPM - -1. Before installing the rpm, some network and security configuration inputs need to be provided in json format. The json file should be created in the location `$HOME/.karavi/config.json` having the following contents: - - ```json - { - "web": { - "sidecarproxyaddr": "docker_registry/sidecar-proxy:latest", - "jwtsigningsecret": "secret" - }, - "proxy": { - "host": ":8080" - }, - "zipkin": { - "collectoruri": "http://DNS_host_name:9411/api/v2/spans", - "probability": 1 - }, - "certificate": { - "keyFile": "path_to_private_key_file", - "crtFile": "path_to_host_cert_file", - "rootCertificate": "path_to_root_CA_file" - }, - "hostName": "DNS_host_name" - } - ``` - - In the above template, `DNS_host_name` refers to the hostname of the system in which the CSM for Authorization server will be installed. This hostname can be found by running the below command on the system: - - ``` - nslookup - ``` - -2. In order to configure secure grpc connectivity, an additional subdomain in the format `grpc.DNS_host_name` is also required. All traffic from `grpc.DNS_host_name` needs to be routed to `DNS_host_name` address, this can be configured by adding a new DNS entry for `grpc.DNS_host_name` or providing a temporary path in the `/etc/hosts` file. - - **NOTE:** The certificate provided in `crtFile` should be valid for both the `DNS_host_name` and the `grpc.DNS_host_name` address. - - For example, create the certificate config file with alternate names (to include example.com and grpc.example.com) and then create the .crt file: - - ``` - CN = example.com - subjectAltName = @alt_names - [alt_names] - DNS.1 = grpc.example.com - - openssl x509 -req -in cert_request_file.csr -CA root_CA.pem -CAkey private_key_File.key -CAcreateserial -out example.com.crt -days 365 -sha256 - ``` - -3. To install the rpm package on the system, run the below command: - - ```shell - rpm -ivh - ``` - -4. After installation, application data will be stored on the system under `/var/lib/rancher/k3s/storage/`. - -## Configuring the CSM for Authorization Proxy Server - -The storage administrator must first configure the proxy server with the following: -- Storage systems -- Tenants -- Roles -- Bind roles to tenants - -Run the following commands on the Authorization proxy server: - - ```console - # Specify any desired name - export RoleName="" - export RoleQuota="" - export TenantName="" - - # Specify info about Array1 - export Array1Type="" - export Array1SystemID="" - export Array1User="" - export Array1Password="" - export Array1Pool="" - export Array1Endpoint="" - - # Specify info about Array2 - export Array2Type="" - export Array2SystemID="" - export Array2User="" - export Array2Password="" - export Array2Pool="" - export Array2Endpoint="" - - # Specify IPs - export DriverHostVMIP="" - export DriverHostVMPassword="" - export DriverHostVMUser="" - - # Specify Authorization host address. NOTE: this is not the same as IP - export AuthorizationHost="" - - echo === Creating Storage(s) === - # Add array1 to authorization - karavictl storage create \ - --type ${Array1Type} \ - --endpoint ${Array1Endpoint} \ - --system-id ${Array1SystemID} \ - --user ${Array1User} \ - --password ${Array1Password} \ - --insecure - - # Add array2 to authorization - karavictl storage create \ - --type ${Array2Type} \ - --endpoint ${Array2Endpoint} \ - --system-id ${Array2SystemID} \ - --user ${Array2User} \ - --password ${Array2Password} \ - --insecure - - echo === Creating Tenant === - karavictl tenant create -n $TenantName --insecure --addr "grpc.${AuthorizationHost}" - - echo === Creating Role === - karavictl role create \ - --role=${RoleName}=${Array1Type}=${Array1SystemID}=${Array1Pool}=${RoleQuota} \ - --role=${RoleName}=${Array2Type}=${Array2SystemID}=${Array2Pool}=${RoleQuota} - - echo === === Binding Role === - karavictl rolebinding create --tenant $TenantName --role $RoleName --insecure --addr "grpc.${AuthorizationHost}" - ``` - -### Generate a Token - -After creating the role bindings, the next logical step is to generate the access token. The storage admin is responsible for generating and sending the token to the Kubernetes tenant admin. - - ``` - echo === Generating token === - karavictl generate token --tenant $TenantName --insecure --addr "grpc.${AuthorizationHost}" | jq -r '.Token' > token.yaml - - echo === Copy token to Driver Host === - sshpass -p $DriverHostPassword scp token.yaml ${DriverHostVMUser}@{DriverHostVMIP}:/tmp/token.yaml - ``` - -**Note:** The sample above copies the token directly to the Kubernetes cluster master node. The requirement here is that the token must be copied and/or stored in any location accessible to the Kubernetes tenant admin. - -### Copy the karavictl Binary to the Kubernetes Master Node - -The karavictl binary is available from the CSM for Authorization proxy server. This needs to be copied to the Kubernetes master node where Kubernetes tenant admins so they configure the Dell EMC CSI driver with CSM for Authorization. - -``` -sshpass -p dangerous scp bin/karavictl root@10.247.96.174:/tmp/karavictl -``` - -**Note:** The storage admin is responsible for copying the binary to a location accessible by the Kubernetes tenant admin. - -## Configuring a Dell EMC CSI Driver with CSM for Authorization - -The second part of CSM for Authorization deployment is to configure one or more of the [supported](../../authorization#supported-csi-drivers). This is controlled by the Kubernetes tenant admin. - -There are currently 2 ways of doing this: -- Using the [CSM Installer](../../deployment) (*Recommended installation method*) -- Manually by following the steps [below](#configuring-a-dell-emc-csi-driver) - -### Configuring a Dell EMC CSI Driver - -Given a setup where Kubernetes, a storage system, CSI driver(s), and CSM for Authorization are deployed, follow the steps below to configure the CSI Drivers to work with the Authorization sidecar: - -Run the following commands on the CSI Driver host - - ```console - # Specify Authorization host address. NOTE: this is not the same as IP - export AuthorizationHost="" - - echo === Applying token token === - # It is assumed that array type powermax has the namespace "powermax" and powerflex has the namepace "vxflexos" - kubectl apply -f /tmp/token.yaml -n powermax - kubectl apply -f /tmp/token.yaml -n vxflexos - - echo === injecting sidecar in all CSI driver hosts that token has been applied to === - sudo curl -k https://${AuthorizationHost}/install | sh - - # NOTE: you can also query parameters("namespace" and "proxy-port") with the curl url if you desire a specific behavior. - # 1) For instance, if you want to inject into just powermax, you can run - # sudo curl -k https://${AuthorizationHost}/install?namespace=powermax | sh - # 2) If you want to specify the proxy-port for powermax to be 900001, you can run - # sudo curl -k https://${AuthorizationHost}/install?proxy-port=powermax:900001 | sh - # 3) You can mix behaviors - # sudo curl -k https://${AuthorizationHost}/install?namespace=powermax&proxy-port=powermax:900001&namespace=vxflexos | sh - ``` - -## Updating CSM for Authorization Proxy Server Configuration - -CSM for Authorization has a subset of configuration parameters that can be updated dynamically: - -| Parameter | Type | Default | Description | -| --------- | ---- | ------- | ----------- | -| certificate.crtFile | String | "" |Path to the host certificate file | -| certificate.keyFile | String | "" |Path to the host private key file | -| certificate.rootCertificate | String | "" |Path to the root CA file | -| web.sidecarproxyaddr | String |"127.0.0.1:5000/sidecar-proxy:latest" |Docker registry address of the CSM for Authorization sidecar-proxy | -| web.jwtsigningsecret | String | "secret" |The secret used to sign JWT tokens | - -Updating configuration parameters can be done by editing the `karavi-config-secret` on the CSM for the Authorization Server. The secret can be queried using k3s and kubectl like so: - -`k3s kubectl -n karavi get secret/karavi-config-secret` - -To update or add parameters, you must edit the base64 encoded data in the secret. The` karavi-config-secret` data can be decoded like so: - -`k3s kubectl -n karavi get secret/karavi-config-secret -o yaml | grep config.yaml | head -n 1 | awk '{print $2}' | base64 -d` - -Save the output to a file or copy it to an editor to make changes. Once you are done with the changes, you must encode the data to base64. If your changes are in a file, you can encode it like so: - -`cat | base64` - -Copy the new, encoded data and edit the `karavi-config-secret` with the new data. Run this command to edit the secret: - -`k3s kubectl -n karavi edit secret/karavi-config-secret` - -Replace the data in `config.yaml` under the `data` field with your new, encoded data. Save the changes and CSM for Authorization will read the changed secret. - -__Note:__ If you are updating the signing secret, the tenants need to be updated with new tokens via the `karavictl generate token` command like so: - -`karavictl generate token --tenant $TenantName --insecure --addr "grpc.${AuthorizationHost}" | jq -r '.Token' > kubectl -n $namespace apply -f -` - -## CSM for Authorization Proxy Server Dynamic Configuration Settings - -Some settings are not stored in the `karavi-config-secret` but in the csm-config-params ConfigMap, such as LOG_LEVEL and LOG_FORMAT. To update the CSM for Authorization logging settings during runtime, run the below command on the K3s cluster, make your changes, and save the updated configmap data. - -``` -k3s kubectl -n karavi edit configmap/csm-config-params -``` - -This edit will not update the logging level for the sidecar-proxy containers running in the CSI Driver pods. To update the sidecar-proxy logging levels, you must update the associated CSI Driver ConfigMap in a similar fashion: - -``` -kubectl -n [CSM_CSI_DRVIER_NAMESPACE] edit configmap/-config-params -``` - -Using PowerFlex as an example, `kubectl -n vxflexos edit configmap/vxflexos-config-params` can be used to update the logging level of the sidecar-proxy and the driver. \ No newline at end of file diff --git a/content/v1/authorization/deployment/_index.md b/content/v1/authorization/deployment/_index.md index ca15cb03da..5ff8a907d1 100644 --- a/content/v1/authorization/deployment/_index.md +++ b/content/v1/authorization/deployment/_index.md @@ -1,344 +1,11 @@ --- title: Deployment -linktitle: Deployment +linktitle: Deployment weight: 2 -description: > - Dell Technologies (Dell) Container Storage Modules (CSM) for Authorization deployment +description: Methods to install CSM Authorization +tags: + - install + - csm-authorization --- -This section outlines the deployment steps for Container Storage Modules (CSM) for Authorization. The deployment of CSM for Authorization is handled in 2 parts: -- Deploying the CSM for Authorization proxy server, to be controlled by storage administrators -- Configuring one to many [supported](../../authorization#supported-csi-drivers) Dell CSI drivers with CSM for Authorization - -## Prerequisites - -The CSM for Authorization proxy server requires a Linux host with the following minimum resource allocations: -- 32 GB of memory -- 4 CPU -- 200 GB local storage - -## Deploying the CSM Authorization Proxy Server - -The first part of deploying CSM for Authorization is installing the proxy server. This activity and the administration of the proxy server will be owned by the storage administrator. - -The CSM for Authorization proxy server is installed using a single binary installer. - -### Single Binary Installer - -The easiest way to obtain the single binary installer RPM is directly from the [GitHub repository's releases](https://github.com/dell/karavi-authorization/releases) section. - -Alternatively, the single binary installer can be built from source by cloning the [GitHub repository](https://github.com/dell/karavi-authorization) and using the following Makefile targets to build the installer: - -``` -make dist build-installer rpm -``` - -The `build-installer` step creates a binary at `karavi-authorization/bin/deploy` and embeds all components required for installation. The `rpm` step generates an RPM package and stores it at `karavi-authorization/deploy/rpm/x86_64/`. -This allows CSM for Authorization to be installed in network-restricted environments. - -A Storage Administrator can execute the installer or rpm package as a root user or via `sudo`. - -### Installing the RPM - -1. Before installing the rpm, some network and security configuration inputs need to be provided in json format. The json file should be created in the location `$HOME/.karavi/config.json` having the following contents: - - ```json - { - "web": { - "jwtsigningsecret": "secret" - }, - "proxy": { - "host": ":8080" - }, - "zipkin": { - "collectoruri": "http://DNS-hostname:9411/api/v2/spans", - "probability": 1 - }, - "certificate": { - "keyFile": "path_to_private_key_file", - "crtFile": "path_to_host_cert_file", - "rootCertificate": "path_to_root_CA_file" - }, - "hostname": "DNS-hostname" - } - ``` - - In an instance where a secure deployment is not required, an insecure deployment is possible. Please note that self-signed certificates will be created for you using cert-manager to allow TLS encryption for communication on the CSM for Authorization proxy server. However, this is not recommended for production environments. For an insecure deployment, the json file in the location `$HOME/.karavi/config.json` only requires the following contents: - - ```json - { - "hostname": "DNS-hostname" - } - ``` - ->__Note__: -> - `DNS-hostname` refers to the hostname of the system in which the CSM for Authorization server will be installed. This hostname can be found by running `nslookup ` -> - There are a number of ways to create certificates. In a production environment, certificates are usually created and managed by an IT administrator. Otherwise, certificates can be created using OpenSSL. - -2. In order to configure secure grpc connectivity, an additional subdomain in the format `grpc.DNS-hostname` is also required. All traffic from `grpc.DNS-hostname` needs to be routed to `DNS-hostname` address, this can be configured by adding a new DNS entry for `grpc.DNS-hostname` or providing a temporary path in the systems `/etc/hosts` file. - ->__Note__: The certificate provided in `crtFile` should be valid for both the `DNS-hostname` and the `grpc.DNS-hostname` address. - - For example, create the certificate config file with alternate names (to include DNS-hostname and grpc.DNS-hostname) and then create the .crt file: - - ``` - CN = DNS-hostname - subjectAltName = @alt_names - [alt_names] - DNS.1 = grpc.DNS-hostname.com - - $ openssl x509 -req -in cert_request_file.csr -CA root_CA.pem -CAkey private_key_File.key -CAcreateserial -out DNS-hostname.com.crt -days 365 -sha256 - ``` - -3. To install the rpm package on the system, run the below command: - - ```shell - rpm -ivh - ``` - -4. After installation, application data will be stored on the system under `/var/lib/rancher/k3s/storage/`. - -## Configuring the CSM for Authorization Proxy Server - -The storage administrator must first configure the proxy server with the following: -- Storage systems -- Tenants -- Roles -- Bind roles to tenants - -Run the following commands on the Authorization proxy server: ->__Note__: The `--insecure` flag is only necessary if certificates were not provided in `$HOME/.karavi/config.json`. - - ```console - # Specify any desired name - export RoleName="" - export RoleQuota="" - export TenantName="" - - # Specify info about Array1 - export Array1Type="" - export Array1SystemID="" - export Array1User="" - export Array1Password="" - export Array1Pool="" - export Array1Endpoint="" - - # Specify info about Array2 - export Array2Type="" - export Array2SystemID="" - export Array2User="" - export Array2Password="" - export Array2Pool="" - export Array2Endpoint="" - - # Specify IPs - export DriverHostVMIP="" - export DriverHostVMPassword="" - export DriverHostVMUser="" - - # Specify Authorization proxy host address. NOTE: this is not the same as IP - export AuthorizationProxyHost="" - - echo === Creating Storage(s) === - # Add array1 to authorization - karavictl storage create \ - --type ${Array1Type} \ - --endpoint ${Array1Endpoint} \ - --system-id ${Array1SystemID} \ - --user ${Array1User} \ - --password ${Array1Password} \ - --insecure - - # Add array2 to authorization - karavictl storage create \ - --type ${Array2Type} \ - --endpoint ${Array2Endpoint} \ - --system-id ${Array2SystemID} \ - --user ${Array2User} \ - --password ${Array2Password} \ - --insecure - - echo === Creating Tenant === - karavictl tenant create -n $TenantName --insecure --addr "grpc.${AuthorizationProxyHost}" - - echo === Creating Role === - karavictl role create \ - --role=${RoleName}=${Array1Type}=${Array1SystemID}=${Array1Pool}=${RoleQuota} \ - --role=${RoleName}=${Array2Type}=${Array2SystemID}=${Array2Pool}=${RoleQuota} - - echo === === Binding Role === - karavictl rolebinding create --tenant $TenantName --role $RoleName --insecure --addr "grpc.${AuthorizationProxyHost}" - ``` - -### Generate a Token - -After creating the role bindings, the next logical step is to generate the access token. The storage admin is responsible for generating and sending the token to the Kubernetes tenant admin. - ->__Note__: -> - The `--insecure` flag is only necessary if certificates were not provided in `$HOME/.karavi/config.json`. -> - This sample copies the token directly to the Kubernetes cluster master node. The requirement here is that the token must be copied and/or stored in any location accessible to the Kubernetes tenant admin. - - ``` - echo === Generating token === - karavictl generate token --tenant $TenantName --insecure --addr "grpc.${AuthorizationProxyHost}" | jq -r '.Token' > token.yaml - - echo === Copy token to Driver Host === - sshpass -p $DriverHostPassword scp token.yaml ${DriverHostVMUser}@{DriverHostVMIP}:/tmp/token.yaml - ``` - -### Copy the karavictl Binary to the Kubernetes Master Node - -The karavictl binary is available from the CSM for Authorization proxy server. This needs to be copied to the Kubernetes master node for Kubernetes tenant admins so the Kubernetes tenant admins can configure the Dell CSI driver with CSM for Authorization. - -``` -sshpass -p dangerous scp bin/karavictl root@10.247.96.174:/tmp/karavictl -``` - ->__Note__: The storage admin is responsible for copying the binary to a location accessible by the Kubernetes tenant admin. - -## Configuring a Dell CSI Driver with CSM for Authorization - -The second part of CSM for Authorization deployment is to configure one or more of the [supported](../../authorization#supported-csi-drivers) CSI drivers. This is controlled by the Kubernetes tenant admin. - -### Configuring a Dell CSI Driver - -Given a setup where Kubernetes, a storage system, and the CSM for Authorization Proxy Server are deployed, follow the steps below to configure the CSI Drivers to work with the Authorization sidecar: - -1. Create the secret token in the namespace of the driver. - - ```console - # It is assumed that array type powermax has the namespace "powermax", powerflex has the namepace "vxflexos", and powerscale has the namespace "isilon". - kubectl apply -f /tmp/token.yaml -n powermax - kubectl apply -f /tmp/token.yaml -n vxflexos - kubectl apply -f /tmp/token.yaml -n isilon - ``` - -2. Edit the following parameters in samples/secret/karavi-authorization-config.json file in [CSI PowerFlex](https://github.com/dell/csi-powerflex/tree/main/samples), [CSI PowerMax](https://github.com/dell/csi-powermax/tree/main/samples/secret), or [CSI PowerScale](https://github.com/dell/csi-powerscale/tree/main/samples/secret) driver and update/add connection information for one or more backend storage arrays. In an instance where multiple CSI drivers are configured on the same Kubernetes cluster, the port range in the *endpoint* parameter must be different for each driver. - - | Parameter | Description | Required | Default | - | --------- | ----------- | -------- |-------- | - | username | Username for connecting to the backend storage array. This parameter is ignored. | No | - | - | password | Password for connecting to to the backend storage array. This parameter is ignored. | No | - | - | intendedEndpoint | HTTPS REST API endpoint of the backend storage array. | Yes | - | - | endpoint | HTTPS localhost endpoint that the authorization sidecar will listen on. | Yes | https://localhost:9400 | - | systemID | System ID of the backend storage array. | Yes | " " | - | insecure | A boolean that enables/disables certificate validation of the backend storage array. This parameter is not used. | No | true | - | isDefault | A boolean that indicates if the array is the default array. This parameter is not used. | No | default value from values.yaml | - - -Create the karavi-authorization-config secret using the following command: - -`kubectl -n [CSI_DRIVER_NAMESPACE] create secret generic karavi-authorization-config --from-file=config=samples/secret/karavi-authorization-config.json -o yaml --dry-run=client | kubectl apply -f -` - ->__Note__: -> - Create the driver secret as you would normally except update/add the connection information for communicating with the sidecar instead of the backend storage array and scrub the username and password -> - For PowerScale, the *systemID* will be the *clusterName* of the array. -> - The *isilon-creds* secret has a *mountEndpoint* parameter which must be set to the hostname or IP address of the PowerScale OneFS API server, for example, 10.0.0.1. -3. Create the proxy-server-root-certificate secret. - - If running in *insecure* mode, create the secret with empty data: - - `kubectl -n [CSI_DRIVER_NAMESPACE] create secret generic proxy-server-root-certificate --from-literal=rootCertificate.pem= -o yaml --dry-run=client | kubectl apply -f -` - - Otherwise, create the proxy-server-root-certificate secret with the appropriate file: - - `kubectl -n [CSI_DRIVER_NAMESPACE] create secret generic proxy-server-root-certificate --from-file=rootCertificate.pem=/path/to/rootCA -o yaml --dry-run=client | kubectl apply -f -` - - ->__Note__: Follow the steps below for additional configurations to one or more of the supported CSI drivers. -#### PowerFlex - -Please refer to step 5 in the [installation steps for PowerFlex](../../csidriver/installation/helm/powerflex) to edit the parameters in samples/config.yaml file to communicate with the sidecar. - -1. Update *endpoint* to match the endpoint set in samples/secret/karavi-authorization-config.json - -2. Create vxflexos-config secret using the following command: - - `kubectl create secret generic vxflexos-config -n vxflexos --from-file=config=config.yaml -o yaml --dry-run=client | kubectl apply -f -` - -Please refer to step 9 in the [installation steps for PowerFlex](../../csidriver/installation/helm/powerflex) to edit the parameters in *myvalues.yaml* file to communicate with the sidecar. - -3. Enable CSM for Authorization and provide *proxyHost* address - -4. Install the CSI PowerFlex driver -#### PowerMax - -Please refer to step 7 in the [installation steps for PowerMax](../../csidriver/installation/helm/powermax) to edit the parameters in *my-powermax-settings.yaml* to communicate with the sidecar. - -1. Update *endpoint* to match the endpoint set in samples/secret/karavi-authorization-config.json - -2. Enable CSM for Authorization and provide *proxyHost* address - -3. Install the CSI PowerMax driver - -#### PowerScale - -Please refer to step 5 in the [installation steps for PowerScale](../../csidriver/installation/helm/isilon) to edit the parameters in *my-isilon-settings.yaml* to communicate with the sidecar. - -1. Update *endpointPort* to match the endpoint port number set in samples/secret/karavi-authorization-config.json - -*Notes:* -> - In *my-isilon-settings.yaml*, endpointPort acts as a default value. If endpointPort is not specified in *my-isilon-settings.yaml*, then it should be specified in the *endpoint* parameter of samples/secret/secret.yaml. -> - The *isilon-creds* secret has a *mountEndpoint* parameter which must be set to the hostname or IP address of the PowerScale OneFS API server, for example, 10.0.0.1. - -2. Enable CSM for Authorization and provide *proxyHost* address - -Please refer to step 6 in the [installation steps for PowerScale](../../csidriver/installation/helm/isilon) to edit the parameters in samples/secret/secret.yaml file to communicate with the sidecar. - -3. Update *endpoint* to match the endpoint set in samples/secret/karavi-authorization-config.json - ->__Note__: Only add the endpoint port if it has not been set in *my-isilon-settings.yaml*. - -4. Create the isilon-creds secret using the following command: - - `kubectl create secret generic isilon-creds -n isilon --from-file=config=secret.yaml -o yaml --dry-run=client | kubectl apply -f -` - -5. Install the CSI PowerScale driver -## Updating CSM for Authorization Proxy Server Configuration - -CSM for Authorization has a subset of configuration parameters that can be updated dynamically: - -| Parameter | Type | Default | Description | -| --------- | ---- | ------- | ----------- | -| certificate.crtFile | String | "" |Path to the host certificate file | -| certificate.keyFile | String | "" |Path to the host private key file | -| certificate.rootCertificate | String | "" |Path to the root CA file | -| web.jwtsigningsecret | String | "secret" |The secret used to sign JWT tokens | - -Updating configuration parameters can be done by editing the `karavi-config-secret` on the CSM for the Authorization Server. The secret can be queried using k3s and kubectl like so: - -`k3s kubectl -n karavi get secret/karavi-config-secret` - -To update or add parameters, you must edit the base64 encoded data in the secret. The` karavi-config-secret` data can be decoded like so: - -`k3s kubectl -n karavi get secret/karavi-config-secret -o yaml | grep config.yaml | head -n 1 | awk '{print $2}' | base64 -d` - -Save the output to a file or copy it to an editor to make changes. Once you are done with the changes, you must encode the data to base64. If your changes are in a file, you can encode it like so: - -`cat | base64` - -Copy the new, encoded data and edit the `karavi-config-secret` with the new data. Run this command to edit the secret: - -`k3s kubectl -n karavi edit secret/karavi-config-secret` - -Replace the data in `config.yaml` under the `data` field with your new, encoded data. Save the changes and CSM for Authorization will read the changed secret. - ->__Note__: If you are updating the signing secret, the tenants need to be updated with new tokens via the `karavictl generate token` command like so. The `--insecure` flag is only necessary if certificates were not provided in `$HOME/.karavi/config.json` - -`karavictl generate token --tenant $TenantName --insecure --addr "grpc.${AuthorizationProxyHost}" | jq -r '.Token' > kubectl -n $namespace apply -f -` - -## CSM for Authorization Proxy Server Dynamic Configuration Settings - -Some settings are not stored in the `karavi-config-secret` but in the csm-config-params ConfigMap, such as LOG_LEVEL and LOG_FORMAT. To update the CSM for Authorization logging settings during runtime, run the below command on the K3s cluster, make your changes, and save the updated configmap data. - -``` -k3s kubectl -n karavi edit configmap/csm-config-params -``` - -This edit will not update the logging level for the sidecar-proxy containers running in the CSI Driver pods. To update the sidecar-proxy logging levels, you must update the associated CSI Driver ConfigMap in a similar fashion: - -``` -kubectl -n [CSM_CSI_DRVIER_NAMESPACE] edit configmap/-config-params -``` - -Using PowerFlex as an example, `kubectl -n vxflexos edit configmap/vxflexos-config-params` can be used to update the logging level of the sidecar-proxy and the driver. +Installation information for CSM Authorization can be found in this section. diff --git a/content/v1/authorization/deployment/helm/_index.md b/content/v1/authorization/deployment/helm/_index.md new file mode 100644 index 0000000000..76d0f47c1a --- /dev/null +++ b/content/v1/authorization/deployment/helm/_index.md @@ -0,0 +1,374 @@ +--- +title: Helm +linktitle: Helm +description: > + Dell Technologies (Dell) Container Storage Modules (CSM) for Authorization Helm deployment +--- + +CSM Authorization can be installed by using the provided Helm v3 charts on Kubernetes platforms. + +The following CSM Authorization components are installed in the specified namespace: +- proxy-service, which forwards requests from the CSI Driver to the backend storage array +- tenant-service, which configures tenants, role bindings, and generates JSON Web Tokens +- role-service, which configures roles for tenants to be bound to +- storage-service, which configures backend storage arrays for the proxy-server to foward requests to + +The folloiwng third-party components are installed in the specified namespace: +- redis, which stores data regarding tenants and their volume ownership, quota, and revokation status +- redis-commander, a web management tool for Redis + +The following third-party components are optionally installed in the specified namespace: +- cert-manager, which optionally provides a self-signed certificate to configure the CSM Authorization Ingresses +- nginx-ingress-controller, which fulfills the CSM Authorization Ingresses + +## Install CSM Authorization + +**Steps** +1. Run `git clone https://github.com/dell/helm-charts.git` to clone the git repository. + +2. Ensure that you have created a namespace where you want to install CSM Authorization. You can run `kubectl create namespace authorization` to create a new one. + +3. Prepare `samples/csm-authorization/config.yaml` which contains the JWT signing secret. The following table lists the configuration parameters. + + | Parameter | Description | Required | Default | + | --------- | ------------------------------------------------------------ | -------- | ------- | + | web.jwtsigningsecret | String used to sign JSON Web Tokens | true | secret |. + + Example: + + ```yaml + web: + jwtsigningsecret: randomString123 + ``` + + After editing the file, run the following command to create a secret called `karavi-config-secret`: + + `kubectl create secret generic karavi-config-secret -n authorization --from-file=config.yaml=samples/csm-authorization/config.yaml` + + Use the following command to replace or update the secret: + + `kubectl create secret generic karavi-config-secret -n authorization --from-file=config=samples/csm-authorization/config.yaml -o yaml --dry-run=client | kubectl replace -f -` + +4. Copy the default values.yaml file `cp charts/csm-authorization/values.yaml myvalues.yaml` + +5. Look over all the fields in `myvalues.yaml` and fill in/adjust any as needed. + +| Parameter | Description | Required | Default | +| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------- | +| **ingress-nginx** | This section configures the enablement of the NGINX Ingress Controller. | - | - | +| enabled | Enable/Disable deployment of the NGINX Ingress Controller. Set to false if you already have an Ingress Controller installed. | No | true | +| **cert-manager** | This section configures the enablement of cert-manager. | - | - | +| enabled | Enable/Disable deployment of cert-manager. Set to false if you already have cert-manager installed. | No | true | +| **authorization** | This section configures the CSM-Authorization components. | - | - | +| authorization.images.proxyService | The image to use for the proxy-service. | Yes | dellemc/csm-authorization-proxy:nightly | +| authorization.images.tenantService | The image to use for the tenant-service. | Yes | dellemc/csm-authorization-tenant:nightly | +| authorization.images.roleService | The image to use for the role-service. | Yes | dellemc/csm-authorization-proxy:nightly | +| authorization.images.storageService | The image to use for the storage-service. | Yes | dellemc/csm-authorization-storage:nightly | +| authorization.images.opa | The image to use for Open Policy Agent. | Yes | openpolicyagent/opa | +| authorization.images.opaKubeMgmt | The image to use for Open Policy Agent kube-mgmt. | Yes | openpolicyagent/kube-mgmt:0.11 | +| authorization.hostname | The hostname to configure the self-signed certificate (if applicable) and the proxy, tenant, role, and storage service Ingresses. | Yes | csm-authorization.com | +| authorization.logLevel | CSM Authorization log level. Allowed values: “error”, “warn”/“warning”, “info”, “debug”. | Yes | debug | +| authorization.zipkin.collectoruri | The URI of the Zipkin instance to export traces. | No | - | +| authorization.zipkin.probability | The ratio of traces to export. | No | - | +| authorization.proxyServerIngress.ingressClassName | The ingressClassName of the proxy-service Ingress. | Yes | - | +| authorization.proxyServerIngress.hosts | Additional host rules to be applied to the proxy-service Ingress. | No | - | +| authorization.proxyServerIngress.annotations | Additional annotations for the proxy-service Ingress. | No | - | +| authorization.tenantServiceIngress.ingressClassName | The ingressClassName of the tenant-service Ingress. | Yes | - | +| authorization.tenantServiceIngress.hosts | Additional host rules to be applied to the tenant-service Ingress. | No | - | +| authorization.tenantServiceIngress.annotations | Additional annotations for the tenant-service Ingress. | No | - | +| authorization.roleServiceIngress.ingressClassName | The ingressClassName of the role-service Ingress. | Yes | - | +| authorization.roleServiceIngress.hosts | Additional host rules to be applied to the role-service Ingress. | No | - | +| authorization.roleServiceIngress.annotations | Additional annotations for the role-service Ingress. | No | - | +| authorization.storageServiceIngress.ingressClassName | The ingressClassName of the storage-service Ingress. | Yes | - | +| authorization.storageServiceIngress.hosts | Additional host rules to be applied to the storage-service Ingress. | No | - | +| authorization.storageServiceIngress.annotations | Additional annotations for the storage-service Ingress. | No | - | +| **redis** | This section configures Redis. | - | - | +| redis.images.redis | The image to use for Redis. | Yes | redis:6.0.8-alpine | +| redis.images.commander | The image to use for Redis Commander. | Yes | rediscommander/redis-commander:latest | +| redis.storageClass | The storage class for Redis to use for persistence. If not supplied, the default storage class is used. | No | - | + + *NOTE*: +- The tenant, role, and storage services use GRPC. If the Ingress Controller requires annotations to support GRPC, they must be supplied. + +6. Install the driver using `helm`: + +To install CSM Authorization with the service Ingresses using your own certificate, run: + +``` +helm -n authorization install authorization -f myvalues.yaml charts/csm-authorization \ +--set-file authorization.certificate= \ +--set-file authorization.privateKey= +``` + +To install CSM Authorization with the service Ingresses using a self-signed certificate generated via cert-manager, run: + +``` +helm -n authorization install authorization -f myvalues.yaml charts/csm-authorization +``` + +## Install Karavictl + +The Karavictl CLI can be obtained directly from the [GitHub repository's releases](https://github.com/dell/karavi-authorization/releases) section. + +In order to run `karavictl` commands, the binary needs to exist in your PATH, for example /usr/local/bin. + +Karavictl commands and intended use can be found [here](../../cli/). + +## Configuring the CSM Authorization Proxy Server + +The storage administrator must first configure the proxy server with the following: +- Storage systems +- Tenants +- Roles +- Role bindings + +This is done using `karavictl` to connect to the storage, tenant, and role services. In this example, we will be referencing an installation using `csm-authorization.com` as the authorization.hostname value and the NGINX Ingress Controller accessed via the cluster's master node. + +Run `kubectl -n authorization get ingress` and `kubectl -n authorization get service` to see the Ingress rules for these services and the exposed port for accessing these services via the LoadBalancer. For example: + +``` +# kubectl -n authorization get ingress +NAME CLASS HOSTS ADDRESS PORTS AGE +proxy-server nginx csm-authorization.com 80, 443 86s +role-service nginx role.csm-authorization.com 80, 443 86s +storage-service nginx storage.csm-authorization.com 80, 443 86s +tenant-service nginx tenant.csm-authorization.com 80, 443 86s + +# kubectl -n auth get service +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +authorization-cert-manager ClusterIP 10.104.35.150 9402/TCP 28s +authorization-cert-manager-webhook ClusterIP 10.97.179.94 443/TCP 27s +authorization-ingress-nginx-controller LoadBalancer 10.108.115.217 80:30080/TCP,443:30016/TCP 27s +authorization-ingress-nginx-controller-admission ClusterIP 10.103.143.215 443/TCP 27s +proxy-server ClusterIP 10.111.86.51 8080/TCP 28s +redis ClusterIP 10.111.158.17 6379/TCP 28s +redis-commander ClusterIP 10.107.22.41 8081/TCP 27s +role-service ClusterIP 10.96.113.230 50051/TCP 27s +storage-service ClusterIP 10.101.144.37 50051/TCP 27s +tenant-service ClusterIP 10.109.60.141 50051/TCP 28s +``` + +On the machine running `karavictl`, the `/etc/hosts` file needs to be updated with the Ingress hosts for the storage, tenant, and role services. For example: + +``` + tenant.csm-authorization.com + role.csm-authorization.com + storage.csm-authorization.com +``` + +The port that exposes these services is `30016`. + + +### Configure Storage + +A `storage` entity in CSM Authorization consists of the storage type (PowerFlex, PowerMax, PowerScale), the system ID, the API endpoint, and the credentials. For example, to create PowerFlex storage: + +``` +karavictl storage create --type powerflex --endpoint https://10.0.0.1 --system-id ${systemID} --user ${user} --password ${password} --insecure --array-insecure --addr storage.csm-authorization.com:30016 +``` + + *NOTE*: +- The `insecure` flag specifies to skip certificate validation when connecting to the CSM Authorization storage service. The `array-insecure` flag specifies to skip certificate validation when proxy-service connects to the backend storage array. Run `karavictl storage create --help` for help. + +### Configuring Tenants + +A `tenant` is a Kubernetes cluster that a role will be bound to. For example, to create a tenant named `Finance`: + +``` +karavictl tenant create --name Finance --insecure --addr tenant.csm-authorization.com:30016 +``` + + *NOTE*: +- The `insecure` flag specifies to skip certificate validation when connecting to the tenant service. Run `karavictl tenant create --help` for help. + +### Configuring Roles + +A `role` consists of a name, the storage to use, and the quota limit for the storage pool to be used. For example, to create a role named `FinanceRole` using the PowerFlex storage created above with a quota limit of 100GB in storage pool `myStoragePool`: + +``` +karavictl role create --insecure --addr role.csm-authorization.com:30016 --role=FinanceRole=powerflex=${systemID}=myStoragePool=100GB +``` + + *NOTE*: +- The `insecure` flag specifies to skip certificate validation when connecting to the role service. Run `karavictl role create --help` for help. + +### Configuring Role Bindings + +A `role binding` binds a role to a tenant. For example, to bind the `FinanceRole` to the `Finance` tenant: + +``` +karavictl rolebinding create --tenant Finance --role FinanceRole --insecure --addr tenant.csm-authorization.com:30016 +``` + + *NOTE*: +- The `insecure` flag specifies to skip certificate validation when connecting to the tenant service. Run `karavictl rolebinding create --help` for help. + +### Generating a Token + +Now that the tenant is bound to a role, a JSON Web Token can be generated for the tenant. For example, to generate a token for the `Finance` tenant: + +``` +karavictl generate token --tenant Finance --insecure --addr --addr tenant.csm-authorization.com:30016 + +{ + "Token": "\napiVersion: v1\nkind: Secret\nmetadata:\n name: proxy-authz-tokens\ntype: Opaque\ndata:\n access: ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SmhkV1FpT2lKcllYSmhkbWtpTENKbGVIQWlPakUyTlRNek1qUXhPRFlzSW1keWIzVndJam9pWm05dklpd2lhWE56SWpvaVkyOXRMbVJsYkd3dWEyRnlZWFpwSWl3aWNtOXNaWE1pT2lKaVlYSWlMQ0p6ZFdJaU9pSnJZWEpoZG1rdGRHVnVZVzUwSW4wLmJIODN1TldmaHoxc1FVaDcweVlfMlF3N1NTVnEyRzRKeGlyVHFMWVlEMkU=\n refresh: ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SmhkV1FpT2lKcllYSmhkbWtpTENKbGVIQWlPakUyTlRVNU1UWXhNallzSW1keWIzVndJam9pWm05dklpd2lhWE56SWpvaVkyOXRMbVJsYkd3dWEyRnlZWFpwSWl3aWNtOXNaWE1pT2lKaVlYSWlMQ0p6ZFdJaU9pSnJZWEpoZG1rdGRHVnVZVzUwSW4wLkxNbWVUSkZlX2dveXR0V0lUUDc5QWVaTy1kdmN5SHAwNUwyNXAtUm9ZZnM=\n" +} +``` + +With [jq](https://stedolan.github.io/jq/), you process the above response to filter the secret manifest. For example: + +``` +karavictl generate token --tenant Finance --insecure --addr --addr tenant.csm-authorization.com:30016 | jq -r '.Token' +apiVersion: v1 +kind: Secret +metadata: + name: proxy-authz-tokens +type: Opaque +data: + access: ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SmhkV1FpT2lKcllYSmhkbWtpTENKbGVIQWlPakUyTlRNek1qUTFOekVzSW1keWIzVndJam9pWm05dklpd2lhWE56SWpvaVkyOXRMbVJsYkd3dWEyRnlZWFpwSWl3aWNtOXNaWE1pT2lKaVlYSWlMQ0p6ZFdJaU9pSnJZWEpoZG1rdGRHVnVZVzUwSW4wLk4tNE42Q1pPbUptcVQtRDF5ZkNGdEZqSmRDRjcxNlh1SXlNVFVyckNOS1U= + refresh: ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SmhkV1FpT2lKcllYSmhkbWtpTENKbGVIQWlPakUyTlRVNU1UWTFNVEVzSW1keWIzVndJam9pWm05dklpd2lhWE56SWpvaVkyOXRMbVJsYkd3dWEyRnlZWFpwSWl3aWNtOXNaWE1pT2lKaVlYSWlMQ0p6ZFdJaU9pSnJZWEpoZG1rdGRHVnVZVzUwSW4wLkVxb3lXNld5ZEFLdU9mSmtkMkZaMk9TVThZMzlKUFc0YmhfNHc5R05ZNmM= +``` + +This secret must be applied in the driver namespace. Continue reading the next section for configuring the driver to use CSM Authorization. + +## Configuring a Dell CSI Driver with CSM for Authorization + +The second part of CSM for Authorization deployment is to configure one or more of the [supported](../../authorization#supported-csi-drivers) CSI drivers. This is controlled by the Kubernetes tenant admin. + +### Configuring a Dell CSI Driver + +Given a setup where Kubernetes, a storage system, and the CSM for Authorization Proxy Server are deployed, follow the steps below to configure the CSI Drivers to work with the Authorization sidecar: + +1. Apply the secret containing the token data into the driver namespace. It's assumed that the Kubernetes administrator has the token secret manifest saved in `/tmp/token.yaml`. + + ```console + # It is assumed that array type powermax has the namespace "powermax", powerflex has the namepace "vxflexos", and powerscale has the namespace "isilon". + kubectl apply -f /tmp/token.yaml -n powermax + kubectl apply -f /tmp/token.yaml -n vxflexos + kubectl apply -f /tmp/token.yaml -n isilon + ``` + +2. Edit the following parameters in samples/secret/karavi-authorization-config.json file in [CSI PowerFlex](https://github.com/dell/csi-powerflex/tree/main/samples), [CSI PowerMax](https://github.com/dell/csi-powermax/tree/main/samples/secret), or [CSI PowerScale](https://github.com/dell/csi-powerscale/tree/main/samples/secret) driver and update/add connection information for one or more backend storage arrays. In an instance where multiple CSI drivers are configured on the same Kubernetes cluster, the port range in the *endpoint* parameter must be different for each driver. + + | Parameter | Description | Required | Default | + | --------- | ----------- | -------- |-------- | + | username | Username for connecting to the backend storage array. This parameter is ignored. | No | - | + | password | Password for connecting to to the backend storage array. This parameter is ignored. | No | - | + | intendedEndpoint | HTTPS REST API endpoint of the backend storage array. | Yes | - | + | endpoint | HTTPS localhost endpoint that the authorization sidecar will listen on. | Yes | https://localhost:9400 | + | systemID | System ID of the backend storage array. | Yes | " " | + | insecure | A boolean that enables/disables certificate validation of the backend storage array. This parameter is not used. | No | true | + | isDefault | A boolean that indicates if the array is the default array. This parameter is not used. | No | default value from values.yaml | + + +Create the karavi-authorization-config secret using the following command: + +`kubectl -n [CSI_DRIVER_NAMESPACE] create secret generic karavi-authorization-config --from-file=config=samples/secret/karavi-authorization-config.json -o yaml --dry-run=client | kubectl apply -f -` + +>__Note__: +> - Create the driver secret as you would normally except update/add the connection information for communicating with the sidecar instead of the backend storage array and scrub the username and password +> - For PowerScale, the *systemID* will be the *clusterName* of the array. +> - The *isilon-creds* secret has a *mountEndpoint* parameter which must be set to the hostname or IP address of the PowerScale OneFS API server, for example, 10.0.0.1. +3. Create the proxy-server-root-certificate secret. + + If running in *insecure* mode, create the secret with empty data: + + `kubectl -n [CSI_DRIVER_NAMESPACE] create secret generic proxy-server-root-certificate --from-literal=rootCertificate.pem= -o yaml --dry-run=client | kubectl apply -f -` + + Otherwise, create the proxy-server-root-certificate secret with the appropriate file: + + `kubectl -n [CSI_DRIVER_NAMESPACE] create secret generic proxy-server-root-certificate --from-file=rootCertificate.pem=/path/to/rootCA -o yaml --dry-run=client | kubectl apply -f -` + + +>__Note__: Follow the steps below for additional configurations to one or more of the supported CSI drivers. +#### PowerFlex + +Please refer to step 5 in the [installation steps for PowerFlex](../../../csidriver/installation/helm/powerflex) to edit the parameters in samples/config.yaml file to communicate with the sidecar. + +1. Update *endpoint* to match the endpoint set in samples/secret/karavi-authorization-config.json + +2. Create vxflexos-config secret using the following command: + + `kubectl create secret generic vxflexos-config -n vxflexos --from-file=config=config.yaml -o yaml --dry-run=client | kubectl apply -f -` + +Please refer to step 9 in the [installation steps for PowerFlex](../../../csidriver/installation/helm/powerflex) to edit the parameters in *myvalues.yaml* file to communicate with the sidecar. + +3. Enable CSM for Authorization and provide *proxyHost* address + +4. Install the CSI PowerFlex driver +#### PowerMax + +Please refer to step 7 in the [installation steps for PowerMax](../../../csidriver/installation/helm/powermax) to edit the parameters in *my-powermax-settings.yaml* to communicate with the sidecar. + +1. Update *endpoint* to match the endpoint set in samples/secret/karavi-authorization-config.json + +2. Enable CSM for Authorization and provide *proxyHost* address + +3. Install the CSI PowerMax driver + +#### PowerScale + +Please refer to step 5 in the [installation steps for PowerScale](../../../csidriver/installation/helm/isilon) to edit the parameters in *my-isilon-settings.yaml* to communicate with the sidecar. + +1. Update *endpointPort* to match the endpoint port number set in samples/secret/karavi-authorization-config.json + +*Notes:* +> - In *my-isilon-settings.yaml*, endpointPort acts as a default value. If endpointPort is not specified in *my-isilon-settings.yaml*, then it should be specified in the *endpoint* parameter of samples/secret/secret.yaml. +> - The *isilon-creds* secret has a *mountEndpoint* parameter which must be set to the hostname or IP address of the PowerScale OneFS API server, for example, 10.0.0.1. + +2. Enable CSM for Authorization and provide *proxyHost* address + +Please refer to step 6 in the [installation steps for PowerScale](../../../csidriver/installation/helm/isilon) to edit the parameters in samples/secret/secret.yaml file to communicate with the sidecar. + +3. Update *endpoint* to match the endpoint set in samples/secret/karavi-authorization-config.json + +>__Note__: Only add the endpoint port if it has not been set in *my-isilon-settings.yaml*. + +4. Create the isilon-creds secret using the following command: + + `kubectl create secret generic isilon-creds -n isilon --from-file=config=secret.yaml -o yaml --dry-run=client | kubectl apply -f -` + +5. Install the CSI PowerScale driver +## Updating CSM for Authorization Proxy Server Configuration + +CSM for Authorization has a subset of configuration parameters that can be updated dynamically: + +| Parameter | Type | Default | Description | +| --------- | ---- | ------- | ----------- | +| web.jwtsigningsecret | String | "secret" |The secret used to sign JWT tokens | + +Updating configuration parameters can be done by editing the `karavi-config-secret`. The secret can be queried using k3s and kubectl like so: + +`kubectl -n authorization get secret/karavi-config-secret` + +To update parameters, you must edit the base64 encoded data in the secret. The` karavi-config-secret` data can be decoded like so: + +`kubectl -n authorization get secret/karavi-config-secret -o yaml | grep config.yaml | head -n 1 | awk '{print $2}' | base64 -d` + +Save the output to a file or copy it to an editor to make changes. Once you are done with the changes, you must encode the data to base64. If your changes are in a file, you can encode it like so: + +`cat | base64` + +Copy the new, encoded data and edit the `karavi-config-secret` with the new data. Run this command to edit the secret: + +`kubectl -n karavi edit secret/karavi-config-secret` + +Replace the data in `config.yaml` under the `data` field with your new, encoded data. Save the changes and CSM Authorization will read the changed secret. + +>__Note__: If you are updating the signing secret, the tenants need to be updated with new tokens via the `karavictl generate token` command. + +## CSM for Authorization Proxy Server Dynamic Configuration Settings + +Some settings are not stored in the `karavi-config-secret` but in the csm-config-params ConfigMap, such as LOG_LEVEL and LOG_FORMAT. To update the CSM Authorization logging settings during runtime, run the below command, make your changes, and save the updated configMap data. + +``` +kubectl -n authorization edit configmap/csm-config-params +``` + +This edit will not update the logging level for the sidecar-proxy containers running in the CSI Driver pods. To update the sidecar-proxy logging levels, you must update the associated CSI Driver ConfigMap in a similar fashion: + +``` +kubectl -n [CSM_CSI_DRVIER_NAMESPACE] edit configmap/-config-params +``` + +Using PowerFlex as an example, `kubectl -n vxflexos edit configmap/vxflexos-config-params` can be used to update the logging level of the sidecar-proxy and the driver. \ No newline at end of file diff --git a/content/v1/authorization/deployment/rpm/_index.md b/content/v1/authorization/deployment/rpm/_index.md new file mode 100644 index 0000000000..3c037dad45 --- /dev/null +++ b/content/v1/authorization/deployment/rpm/_index.md @@ -0,0 +1,349 @@ +--- +title: RPM +linktitle: RPM +weight: 2 +description: > + Dell Technologies (Dell) Container Storage Modules (CSM) for Authorization RPM deployment +--- + +This section outlines the deployment steps for Container Storage Modules (CSM) for Authorization. The deployment of CSM for Authorization is handled in 2 parts: +- Deploying the CSM for Authorization proxy server, to be controlled by storage administrators +- Configuring one to many [supported](../../../authorization#supported-csi-drivers) Dell CSI drivers with CSM for Authorization + +## Prerequisites + +The CSM for Authorization proxy server requires a Linux host with the following minimum resource allocations: +- 32 GB of memory +- 4 CPU +- 200 GB local storage + +These packages need to be installed on the Linux host: +- container-selinux +- https://rpm.rancher.io/k3s/stable/common/centos/7/noarch/k3s-selinux-0.4-1.el7.noarch.rpm + +## Deploying the CSM Authorization Proxy Server + +The first part of deploying CSM for Authorization is installing the proxy server. This activity and the administration of the proxy server will be owned by the storage administrator. + +The CSM for Authorization proxy server is installed using a single binary installer. + +If CSM for Authorization is being installed on a system where SELinux is enabled, you must ensure the proper SELinux policies have been installed. + +### Single Binary Installer + +The easiest way to obtain the single binary installer RPM is directly from the [GitHub repository's releases](https://github.com/dell/karavi-authorization/releases) section. + +Alternatively, the single binary installer can be built from source by cloning the [GitHub repository](https://github.com/dell/karavi-authorization) and using the following Makefile targets to build the installer: + +``` +make dist build-installer rpm +``` + +The `build-installer` step creates a binary at `karavi-authorization/bin/deploy` and embeds all components required for installation. The `rpm` step generates an RPM package and stores it at `karavi-authorization/deploy/rpm/x86_64/`. +This allows CSM for Authorization to be installed in network-restricted environments. + +A Storage Administrator can execute the installer or rpm package as a root user or via `sudo`. + +### Installing the RPM + +1. Before installing the rpm, some network and security configuration inputs need to be provided in json format. The json file should be created in the location `$HOME/.karavi/config.json` having the following contents: + + ```json + { + "web": { + "jwtsigningsecret": "secret" + }, + "proxy": { + "host": ":8080" + }, + "zipkin": { + "collectoruri": "http://DNS-hostname:9411/api/v2/spans", + "probability": 1 + }, + "certificate": { + "keyFile": "path_to_private_key_file", + "crtFile": "path_to_host_cert_file", + "rootCertificate": "path_to_root_CA_file" + }, + "hostname": "DNS-hostname" + } + ``` + + In an instance where a secure deployment is not required, an insecure deployment is possible. Please note that self-signed certificates will be created for you using cert-manager to allow TLS encryption for communication on the CSM for Authorization proxy server. However, this is not recommended for production environments. For an insecure deployment, the json file in the location `$HOME/.karavi/config.json` only requires the following contents: + + ```json + { + "hostname": "DNS-hostname" + } + ``` + +>__Note__: +> - `DNS-hostname` refers to the hostname of the system in which the CSM for Authorization server will be installed. This hostname can be found by running `nslookup ` +> - There are a number of ways to create certificates. In a production environment, certificates are usually created and managed by an IT administrator. Otherwise, certificates can be created using OpenSSL. + +2. In order to configure secure grpc connectivity, an additional subdomain in the format `grpc.DNS-hostname` is also required. All traffic from `grpc.DNS-hostname` needs to be routed to `DNS-hostname` address, this can be configured by adding a new DNS entry for `grpc.DNS-hostname` or providing a temporary path in the systems `/etc/hosts` file. + +>__Note__: The certificate provided in `crtFile` should be valid for both the `DNS-hostname` and the `grpc.DNS-hostname` address. + + For example, create the certificate config file with alternate names (to include DNS-hostname and grpc.DNS-hostname) and then create the .crt file: + + ``` + CN = DNS-hostname + subjectAltName = @alt_names + [alt_names] + DNS.1 = grpc.DNS-hostname.com + + $ openssl x509 -req -in cert_request_file.csr -CA root_CA.pem -CAkey private_key_File.key -CAcreateserial -out DNS-hostname.com.crt -days 365 -sha256 + ``` + +3. To install the rpm package on the system, run the below command: + + ```shell + rpm -ivh + ``` + +4. After installation, application data will be stored on the system under `/var/lib/rancher/k3s/storage/`. + +If errors occur during installation, review the [Troubleshooting](../../troubleshooting) section. + +## Configuring the CSM for Authorization Proxy Server + +The storage administrator must first configure the proxy server with the following: +- Storage systems +- Tenants +- Roles +- Bind roles to tenants + +Run the following commands on the Authorization proxy server: +>__Note__: The `--insecure` flag is only necessary if certificates were not provided in `$HOME/.karavi/config.json`. + + ```console + # Specify any desired name + export RoleName="" + export RoleQuota="" + export TenantName="" + + # Specify info about Array1 + export Array1Type="" + export Array1SystemID="" + export Array1User="" + export Array1Password="" + export Array1Pool="" + export Array1Endpoint="" + + # Specify info about Array2 + export Array2Type="" + export Array2SystemID="" + export Array2User="" + export Array2Password="" + export Array2Pool="" + export Array2Endpoint="" + + # Specify IPs + export DriverHostVMIP="" + export DriverHostVMPassword="" + export DriverHostVMUser="" + + # Specify Authorization proxy host address. NOTE: this is not the same as IP + export AuthorizationProxyHost="" + + echo === Creating Storage(s) === + # Add array1 to authorization + karavictl storage create \ + --type ${Array1Type} \ + --endpoint ${Array1Endpoint} \ + --system-id ${Array1SystemID} \ + --user ${Array1User} \ + --password ${Array1Password} \ + --array-insecure + + # Add array2 to authorization + karavictl storage create \ + --type ${Array2Type} \ + --endpoint ${Array2Endpoint} \ + --system-id ${Array2SystemID} \ + --user ${Array2User} \ + --password ${Array2Password} \ + --array-insecure + + echo === Creating Tenant === + karavictl tenant create -n $TenantName --insecure --addr "grpc.${AuthorizationProxyHost}" + + echo === Creating Role === + karavictl role create \ + --role=${RoleName}=${Array1Type}=${Array1SystemID}=${Array1Pool}=${RoleQuota} \ + --role=${RoleName}=${Array2Type}=${Array2SystemID}=${Array2Pool}=${RoleQuota} + + echo === === Binding Role === + karavictl rolebinding create --tenant $TenantName --role $RoleName --insecure --addr "grpc.${AuthorizationProxyHost}" + ``` + +### Generate a Token + +After creating the role bindings, the next logical step is to generate the access token. The storage admin is responsible for generating and sending the token to the Kubernetes tenant admin. + +>__Note__: +> - The `--insecure` flag is only necessary if certificates were not provided in `$HOME/.karavi/config.json`. +> - This sample copies the token directly to the Kubernetes cluster master node. The requirement here is that the token must be copied and/or stored in any location accessible to the Kubernetes tenant admin. + + ``` + echo === Generating token === + karavictl generate token --tenant $TenantName --insecure --addr "grpc.${AuthorizationProxyHost}" | jq -r '.Token' > token.yaml + + echo === Copy token to Driver Host === + sshpass -p ${DriverHostPassword} scp token.yaml ${DriverHostVMUser}@{DriverHostVMIP}:/tmp/token.yaml + ``` + +### Copy the karavictl Binary to the Kubernetes Master Node + +The karavictl binary is available from the CSM for Authorization proxy server. This needs to be copied to the Kubernetes master node for Kubernetes tenant admins so the Kubernetes tenant admins can configure the Dell CSI driver with CSM for Authorization. + +``` +sshpass -p ${DriverHostPassword} scp bin/karavictl root@{DriverHostVMIP}:/tmp/karavictl +``` + +>__Note__: The storage admin is responsible for copying the binary to a location accessible by the Kubernetes tenant admin. + +## Configuring a Dell CSI Driver with CSM for Authorization + +The second part of CSM for Authorization deployment is to configure one or more of the [supported](../../../authorization#supported-csi-drivers) CSI drivers. This is controlled by the Kubernetes tenant admin. + +### Configuring a Dell CSI Driver + +Given a setup where Kubernetes, a storage system, and the CSM for Authorization Proxy Server are deployed, follow the steps below to configure the CSI Drivers to work with the Authorization sidecar: + +1. Create the secret token in the namespace of the driver. + + ```console + # It is assumed that array type powermax has the namespace "powermax", powerflex has the namepace "vxflexos", and powerscale has the namespace "isilon". + kubectl apply -f /tmp/token.yaml -n powermax + kubectl apply -f /tmp/token.yaml -n vxflexos + kubectl apply -f /tmp/token.yaml -n isilon + ``` + +2. Edit the following parameters in samples/secret/karavi-authorization-config.json file in [CSI PowerFlex](https://github.com/dell/csi-powerflex/tree/main/samples), [CSI PowerMax](https://github.com/dell/csi-powermax/tree/main/samples/secret), or [CSI PowerScale](https://github.com/dell/csi-powerscale/tree/main/samples/secret) driver and update/add connection information for one or more backend storage arrays. In an instance where multiple CSI drivers are configured on the same Kubernetes cluster, the port range in the *endpoint* parameter must be different for each driver. + + | Parameter | Description | Required | Default | + | --------- | ----------- | -------- |-------- | + | username | Username for connecting to the backend storage array. This parameter is ignored. | No | - | + | password | Password for connecting to to the backend storage array. This parameter is ignored. | No | - | + | intendedEndpoint | HTTPS REST API endpoint of the backend storage array. | Yes | - | + | endpoint | HTTPS localhost endpoint that the authorization sidecar will listen on. | Yes | https://localhost:9400 | + | systemID | System ID of the backend storage array. | Yes | " " | + | insecure | A boolean that enables/disables certificate validation of the backend storage array. This parameter is not used. | No | true | + | isDefault | A boolean that indicates if the array is the default array. This parameter is not used. | No | default value from values.yaml | + + +Create the karavi-authorization-config secret using the following command: + +`kubectl -n [CSI_DRIVER_NAMESPACE] create secret generic karavi-authorization-config --from-file=config=samples/secret/karavi-authorization-config.json -o yaml --dry-run=client | kubectl apply -f -` + +>__Note__: +> - Create the driver secret as you would normally except update/add the connection information for communicating with the sidecar instead of the backend storage array and scrub the username and password +> - For PowerScale, the *systemID* will be the *clusterName* of the array. +> - The *isilon-creds* secret has a *mountEndpoint* parameter which must be set to the hostname or IP address of the PowerScale OneFS API server, for example, 10.0.0.1. +3. Create the proxy-server-root-certificate secret. + + If running in *insecure* mode, create the secret with empty data: + + `kubectl -n [CSI_DRIVER_NAMESPACE] create secret generic proxy-server-root-certificate --from-literal=rootCertificate.pem= -o yaml --dry-run=client | kubectl apply -f -` + + Otherwise, create the proxy-server-root-certificate secret with the appropriate file: + + `kubectl -n [CSI_DRIVER_NAMESPACE] create secret generic proxy-server-root-certificate --from-file=rootCertificate.pem=/path/to/rootCA -o yaml --dry-run=client | kubectl apply -f -` + + +>__Note__: Follow the steps below for additional configurations to one or more of the supported CSI drivers. +#### PowerFlex + +Please refer to step 5 in the [installation steps for PowerFlex](../../../csidriver/installation/helm/powerflex) to edit the parameters in samples/config.yaml file to communicate with the sidecar. + +1. Update *endpoint* to match the endpoint set in samples/secret/karavi-authorization-config.json + +2. Create vxflexos-config secret using the following command: + + `kubectl create secret generic vxflexos-config -n vxflexos --from-file=config=config.yaml -o yaml --dry-run=client | kubectl apply -f -` + +Please refer to step 9 in the [installation steps for PowerFlex](../../../csidriver/installation/helm/powerflex) to edit the parameters in *myvalues.yaml* file to communicate with the sidecar. + +3. Enable CSM for Authorization and provide *proxyHost* address + +4. Install the CSI PowerFlex driver +#### PowerMax + +Please refer to step 7 in the [installation steps for PowerMax](../../../csidriver/installation/helm/powermax) to edit the parameters in *my-powermax-settings.yaml* to communicate with the sidecar. + +1. Update *endpoint* to match the endpoint set in samples/secret/karavi-authorization-config.json + +2. Enable CSM for Authorization and provide *proxyHost* address + +3. Install the CSI PowerMax driver + +#### PowerScale + +Please refer to step 5 in the [installation steps for PowerScale](../../../csidriver/installation/helm/isilon) to edit the parameters in *my-isilon-settings.yaml* to communicate with the sidecar. + +1. Update *endpointPort* to match the endpoint port number set in samples/secret/karavi-authorization-config.json + +*Notes:* +> - In *my-isilon-settings.yaml*, endpointPort acts as a default value. If endpointPort is not specified in *my-isilon-settings.yaml*, then it should be specified in the *endpoint* parameter of samples/secret/secret.yaml. +> - The *isilon-creds* secret has a *mountEndpoint* parameter which must be set to the hostname or IP address of the PowerScale OneFS API server, for example, 10.0.0.1. + +2. Enable CSM for Authorization and provide *proxyHost* address + +Please refer to step 6 in the [installation steps for PowerScale](../../../csidriver/installation/helm/isilon) to edit the parameters in samples/secret/secret.yaml file to communicate with the sidecar. + +3. Update *endpoint* to match the endpoint set in samples/secret/karavi-authorization-config.json + +>__Note__: Only add the endpoint port if it has not been set in *my-isilon-settings.yaml*. + +4. Create the isilon-creds secret using the following command: + + `kubectl create secret generic isilon-creds -n isilon --from-file=config=secret.yaml -o yaml --dry-run=client | kubectl apply -f -` + +5. Install the CSI PowerScale driver +## Updating CSM for Authorization Proxy Server Configuration + +CSM for Authorization has a subset of configuration parameters that can be updated dynamically: + +| Parameter | Type | Default | Description | +| --------- | ---- | ------- | ----------- | +| web.jwtsigningsecret | String | "secret" |The secret used to sign JWT tokens | + +Updating configuration parameters can be done by editing the `karavi-config-secret` on the CSM for the Authorization Server. The secret can be queried using k3s and kubectl like so: + +`k3s kubectl -n karavi get secret/karavi-config-secret` + +To update or add parameters, you must edit the base64 encoded data in the secret. The` karavi-config-secret` data can be decoded like so: + +`k3s kubectl -n karavi get secret/karavi-config-secret -o yaml | grep config.yaml | head -n 1 | awk '{print $2}' | base64 -d` + +Save the output to a file or copy it to an editor to make changes. Once you are done with the changes, you must encode the data to base64. If your changes are in a file, you can encode it like so: + +`cat | base64` + +Copy the new, encoded data and edit the `karavi-config-secret` with the new data. Run this command to edit the secret: + +`k3s kubectl -n karavi edit secret/karavi-config-secret` + +Replace the data in `config.yaml` under the `data` field with your new, encoded data. Save the changes and CSM for Authorization will read the changed secret. + +>__Note__: If you are updating the signing secret, the tenants need to be updated with new tokens via the `karavictl generate token` command like so. The `--insecure` flag is only necessary if certificates were not provided in `$HOME/.karavi/config.json` + +`karavictl generate token --tenant $TenantName --insecure --addr "grpc.${AuthorizationProxyHost}" | jq -r '.Token' > kubectl -n $namespace apply -f -` + +## CSM for Authorization Proxy Server Dynamic Configuration Settings + +Some settings are not stored in the `karavi-config-secret` but in the csm-config-params ConfigMap, such as LOG_LEVEL and LOG_FORMAT. To update the CSM for Authorization logging settings during runtime, run the below command on the K3s cluster, make your changes, and save the updated configmap data. + +``` +k3s kubectl -n karavi edit configmap/csm-config-params +``` + +This edit will not update the logging level for the sidecar-proxy containers running in the CSI Driver pods. To update the sidecar-proxy logging levels, you must update the associated CSI Driver ConfigMap in a similar fashion: + +``` +kubectl -n [CSM_CSI_DRVIER_NAMESPACE] edit configmap/-config-params +``` + +Using PowerFlex as an example, `kubectl -n vxflexos edit configmap/vxflexos-config-params` can be used to update the logging level of the sidecar-proxy and the driver. diff --git a/content/v1/authorization/release/_index.md b/content/v1/authorization/release/_index.md new file mode 100644 index 0000000000..9e877ab1b9 --- /dev/null +++ b/content/v1/authorization/release/_index.md @@ -0,0 +1,24 @@ +--- +title: "Release notes" +linkTitle: "Release notes" +weight: 6 +Description: > + Dell Container Storage Modules (CSM) release notes for authorization +--- + +## Release Notes - CSM Authorization 1.3.0 + +### New Features/Changes + +- [CSM-Authorization can deployed with helm](https://github.com/dell/csm/issues/261) + +### Fixed Issues + +- [Authorization proxy server install fails due to missing container-selinux](https://github.com/dell/csm/issues/313) +- [Permissions on karavictl and k3s binaries are incorrect](https://github.com/dell/csm/issues/277) + + + +### Known Issues + +- [Authorization NGINX Ingress Controller fails to install on OpenShift](https://github.com/dell/csm/issues/317) \ No newline at end of file diff --git a/content/v1/authorization/troubleshooting.md b/content/v1/authorization/troubleshooting.md index 0a47cb4ec8..4792dc36ac 100644 --- a/content/v1/authorization/troubleshooting.md +++ b/content/v1/authorization/troubleshooting.md @@ -6,7 +6,14 @@ Description: > Troubleshooting guide --- +## RPM Deployment - [Running `karavictl tenant` commands result in an HTTP 504 error](#running-karavictl-tenant-commands-result-in-an-http-504-error) +- [Installation fails to install policies](#installation-fails-to-install-policies) +- [After installation, the create-pvc Pod is in an Error state](#after-installation-the-create-pvc-pod-is-in-an-error-state) + +## Helm Deployment +- [The CSI Driver for Dell PowerFlex v2.3.0 is in an Error or CrashLoopBackoff state due to "request denied for path" errors](#the-csi-driver-for-dell-powerflex-v230-is-in-an-error-or-crashloopbackoff-state-due-to-request-denied-for-path-errors) + --- ### Retrieve CSM Authorization Server Logs @@ -35,4 +42,126 @@ $ karavictl tenant list --addr __Resolution__ Consult with your system administrator or Iptables/firewall documentation. If there are rules in place to -prevent communication with the ``, either new rules must be created or existing rules must be updated. \ No newline at end of file +prevent communication with the ``, either new rules must be created or existing rules must be updated. + +### Installation fails to install policies +If SELinux is enabled, the policies may fail to install: + +``` +error: failed to install policies (see /tmp/policy-install-for-karavi3163047435): exit status 1 +``` + +__Resolution__ + +View the contents /tmp/policy-install-for-karavi* file listed in the error message. If there is a Permission denied error while running the policy-install.sh script, manually run the script to install policies. + +``` +$ cat /tmp/policy-install-for-karavi3163047435 + +# find the location of the policy-install.sh script located in the file and manually run the script + +$ /tmp/karavi-installer-2908017483/policy-install.sh +``` + +### After installation, the create-pvc Pod is in an Error state +If SELinux is enabled, the create-pvc Pod may be in an Error state: + +``` +kube-system create-pvc-44a763c7-e70f-4e32-a114-e94615041042 0/1 Error 0 102s +``` + +__Resolution__ + +Run the following commands to allow the PVC to be created: +``` +$ semanage fcontext -a -t container_file_t "/var/lib/rancher/k3s/storage(/.*)?" +$ restorecon -R /var/lib/rancher/k3s/storage/ +``` + +### The CSI Driver for Dell PowerFlex v2.3.0 is in an Error or CrashLoopBackoff state due to "request denied for path" errors +The vxflexos-controller pods will have logs similar to: +``` +time="2022-06-30T17:35:03Z" level=error msg="failed to list vols for array 2d6fb7c6370a990f : rpc error: code = Internal desc = Unable to list volumes: request denied for path " error="rpc error: code = Internal desc = Unable to list volumes: request denied for path" +time="2022-06-30T17:35:03Z" level=error msg="array 2d6fb7c6370a990f probe failed: failed to list vols for array 2d6fb7c6370a990f : rpc error: code = Internal desc = Unable to list volumes: request denied for path " +... +time="2022-06-30T17:35:03Z" level=fatal msg="grpc failed" error="rpc error: code = FailedPrecondition desc = All arrays are not working. Could not proceed further: map[2d6fb7c6370a990f:failed to list vols for array 2d6fb7c6370a990f : rpc error: code = Internal desc = Unable to list volumes: request denied for path ]" +``` + +The vxflexos-node pods will have logs similar to: +``` +time="2022-06-30T17:38:32Z" level=error msg="failed to list vols for array 2d6fb7c6370a990f : rpc error: code = Internal desc = Unable to list volumes: request denied for path " error="rpc error: code = Internal desc = Unable to list volumes: request denied for path" +time="2022-06-30T17:38:32Z" level=error msg="array 2d6fb7c6370a990f probe failed: failed to list vols for array 2d6fb7c6370a990f : rpc error: code = Internal desc = Unable to list volumes: request denied for path " +... +time="2022-06-30T17:38:32Z" level=fatal msg="grpc failed" error="rpc error: code = FailedPrecondition desc = All arrays are not working. Could not proceed further: map[2d6fb7c6370a990f:failed to list vols for array 2d6fb7c6370a990f : rpc error: code = Internal desc = Unable to list volumes: request denied for path ]" +``` + +This occurs when the CSM Authorization proxy-server does not allow all driver HTTPS request paths. + +__Resolution__ + +1. Edit the `powerflex-urls` configMap in the namespace where CSM Authorization is deployed to allow all request paths by default. + +``` +kubectl -n edit configMap powerflex-urls +``` + +In the `data` field, navigate towards the bottom of this field where you see `default allow = false`. This is highlighted in **bold** in the example below. Replace `false` with `true` and save the edit. + +

+data:
+  url.rego: "# Copyright © 2022 Dell Inc., or its subsidiaries. All Rights Reserved.\n#\n#
+    Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not
+    use this file except in compliance with the License.\n# You may obtain a copy
+    of the License at\n#\n#     http:#www.apache.org/licenses/LICENSE-2.0\n#\n# Unless
+    required by applicable law or agreed to in writing, software\n# distributed under
+    the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS
+    OF ANY KIND, either express or implied.\n# See the License for the specific language
+    governing permissions and\n# limitations under the License.\n\npackage karavi.authz.url\n\nallowlist
+    = [\n    \"GET /api/login/\",\n\t\t\"POST /proxy/refresh-token/\",\n\t\t\"GET
+    /api/version/\",\n\t\t\"GET /api/types/System/instances/\",\n\t\t\"GET /api/types/StoragePool/instances/\",\n\t\t\"POST
+    /api/types/Volume/instances/\",\n\t\t\"GET /api/instances/Volume::[a-f0-9]+/$\",\n\t\t\"POST
+    /api/types/Volume/instances/action/queryIdByKey/\",\n\t\t\"GET /api/instances/System::[a-f0-9]+/relationships/Sdc/\",\n\t\t\"GET
+    /api/instances/Sdc::[a-f0-9]+/relationships/Statistics/\",\n\t\t\"GET /api/instances/Sdc::[a-f0-9]+/relationships/Volume/\",\n\t\t\"GET
+    /api/instances/Volume::[a-f0-9]+/relationships/Statistics/\",\n\t\t\"GET /api/instances/StoragePool::[a-f0-9]+/relationships/Statistics/\",\n\t\t\"POST
+    /api/instances/Volume::[a-f0-9]+/action/addMappedSdc/\",\n\t\t\"POST /api/instances/Volume::[a-f0-9]+/action/removeMappedSdc/\",\n\t\t\"POST
+    /api/instances/Volume::[a-f0-9]+/action/removeVolume/\"\n]\n\ndefault allow =
+    false\nallow {\n\tregex.match(allowlist[_], sprintf(\"%s %s\", [input.method,
+    input.url]))\n}\n"
+
+ +Edited data: + +

+data:
+  url.rego: "# Copyright © 2022 Dell Inc., or its subsidiaries. All Rights Reserved.\n#\n#
+    Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not
+    use this file except in compliance with the License.\n# You may obtain a copy
+    of the License at\n#\n#     http:#www.apache.org/licenses/LICENSE-2.0\n#\n# Unless
+    required by applicable law or agreed to in writing, software\n# distributed under
+    the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS
+    OF ANY KIND, either express or implied.\n# See the License for the specific language
+    governing permissions and\n# limitations under the License.\n\npackage karavi.authz.url\n\nallowlist
+    = [\n    \"GET /api/login/\",\n\t\t\"POST /proxy/refresh-token/\",\n\t\t\"GET
+    /api/version/\",\n\t\t\"GET /api/types/System/instances/\",\n\t\t\"GET /api/types/StoragePool/instances/\",\n\t\t\"POST
+    /api/types/Volume/instances/\",\n\t\t\"GET /api/instances/Volume::[a-f0-9]+/$\",\n\t\t\"POST
+    /api/types/Volume/instances/action/queryIdByKey/\",\n\t\t\"GET /api/instances/System::[a-f0-9]+/relationships/Sdc/\",\n\t\t\"GET
+    /api/instances/Sdc::[a-f0-9]+/relationships/Statistics/\",\n\t\t\"GET /api/instances/Sdc::[a-f0-9]+/relationships/Volume/\",\n\t\t\"GET
+    /api/instances/Volume::[a-f0-9]+/relationships/Statistics/\",\n\t\t\"GET /api/instances/StoragePool::[a-f0-9]+/relationships/Statistics/\",\n\t\t\"POST
+    /api/instances/Volume::[a-f0-9]+/action/addMappedSdc/\",\n\t\t\"POST /api/instances/Volume::[a-f0-9]+/action/removeMappedSdc/\",\n\t\t\"POST
+    /api/instances/Volume::[a-f0-9]+/action/removeVolume/\"\n]\n\ndefault allow =
+    true\nallow {\n\tregex.match(allowlist[_], sprintf(\"%s %s\", [input.method,
+    input.url]))\n}\n"
+
+ +2. Rollout restart the CSM Authorization proxy-server so the policy change gets applied. + +``` +kubectl -n rollout restart deploy/proxy-server +``` + +3. Optionally, rollout restart the CSI Driver for Dell PowerFlex to restart the driver pods. Alternatively, wait for the Kubernetes CrashLoopBackoff behavior to restart the driver. + +``` +kubectl -n rollout restart deploy/vxflexos-controller +kubectl -n rollout restart daemonSet/vxflexos-node +``` diff --git a/content/v1/csidriver/_index.md b/content/v1/csidriver/_index.md index 495c29b500..732f364787 100644 --- a/content/v1/csidriver/_index.md +++ b/content/v1/csidriver/_index.md @@ -14,16 +14,16 @@ The CSI Drivers by Dell implement an interface between [CSI](https://kubernetes- ### Supported Operating Systems/Container Orchestrator Platforms {{}} -| | PowerMax | PowerFlex | Unity | PowerScale | PowerStore | +| | PowerMax | PowerFlex | Unity XT | PowerScale | PowerStore | |---------------|:----------------:|:-------------------:|:----------------:|:-----------------:|:----------------:| -| Kubernetes | 1.21, 1.22, 1.23 | 1.21, 1.22, 1.23 | 1.21, 1.22, 1.23 | 1.21, 1.22, 1.23 | 1.21, 1.22, 1.23 | +| Kubernetes | 1.22, 1.23, 1.24 | 1.22, 1.23, 1.24 | 1.22, 1.23, 1.24 | 1.22, 1.23, 1.24 | 1.22, 1.23, 1.24 | | 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 | 18.04, 20.04 | 20.04 | | CentOS | 7.8, 7.9 | 7.8, 7.9 | 7.8, 7.9 | 7.8, 7.9 | 7.8, 7.9 | | SLES | 15SP3 | 15SP3 | 15SP3 | 15SP3 | 15SP3 | -| Red Hat OpenShift | 4.8, 4.8 EUS, 4.9 | 4.8, 4.8 EUS, 4.9 | 4.8, 4.8 EUS, 4.9 | 4.8, 4.8 EUS, 4.9 | 4.8, 4.8 EUS, 4.9 | -| Mirantis Kubernetes Engine | 3.4.x | 3.4.x | 3.5.x | 3.4.x | 3.4.x | -| Google Anthos | 1.6 | 1.8 | no | 1.9 | 1.9 | +| Red Hat OpenShift | 4.9, 4.10, 4.10 EUS | 4.9, 4.10, 4.10 EUS | 4.9, 4.10, 4.10 EUS | 4.9, 4.10, 4.10 EUS | 4.9, 4.10, 4.10 EUS | +| Mirantis Kubernetes Engine | 3.5.x | 3.5.x | 3.5.x | 3.5.x | 3.5.x | +| Google Anthos | 1.9 | 1.8 | no | 1.9 | 1.9 | | VMware Tanzu | no | no | NFS | NFS | NFS | | Rancher Kubernetes Engine | yes | yes | yes | yes | yes | | Amazon Elastic Kubernetes Service
Anywhere | no | yes | no | no | yes | @@ -32,39 +32,40 @@ The CSI Drivers by Dell implement an interface between [CSI](https://kubernetes- ### CSI Driver Capabilities {{
}} -| Features | PowerMax | PowerFlex | Unity | PowerScale | PowerStore | -|--------------------------|:--------:|:---------:|:------:|:----------:|:----------:| -| CSI Driver version | 2.2.0 | 2.2.0 | 2.2.0 | 2.2.0 | 2.2.0 | -| Static Provisioning | yes | yes | yes | yes | yes | -| Dynamic Provisioning | yes | yes | yes | yes | yes | -| Expand Persistent Volume | yes | yes | yes | yes | yes | -| Create VolumeSnapshot | yes | yes | yes | yes | yes | -| Create Volume from Snapshot | yes | yes | yes | yes | yes | -| Delete Snapshot | yes | yes | yes | yes | yes | -| [Access Mode](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes)| RWO/
RWOP(FC/iSCSI)
RWO/
RWX/
ROX/
RWOP(Raw block) | RWO/ROX/RWOP

RWX (Raw block only) | RWO/ROX/RWOP

RWX (Raw block & NFS only) | RWO/RWX/ROX/
RWOP | RWO/RWOP
(FC/iSCSI)
RWO/
RWX/
ROX/
RWOP
(RawBlock, NFS) | -| CSI Volume Cloning | yes | yes | yes | yes | yes | -| CSI Raw Block Volume | yes | yes | yes | no | yes | -| CSI Ephemeral Volume | no | yes | yes | yes | yes | -| Topology | yes | yes | yes | yes | yes | -| Multi-array | yes | yes | yes | yes | yes | -| Volume Health Monitoring | yes | yes | yes | yes | yes | +| Features | PowerMax | PowerFlex | Unity XT | PowerScale | PowerStore | +|--------------------------|:--------:|:---------:|:---------:|:----------:|:----------:| +| CSI Driver version | 2.3.0 | 2.3.0 | 2.3.0 | 2.3.0 | 2.3.0 | +| Static Provisioning | yes | yes | yes | yes | yes | +| Dynamic Provisioning | yes | yes | yes | yes | yes | +| Expand Persistent Volume | yes | yes | yes | yes | yes | +| Create VolumeSnapshot | yes | yes | yes | yes | yes | +| Create Volume from Snapshot | yes | yes | yes | yes | yes | +| Delete Snapshot | yes | yes | yes | yes | yes | +| [Access Mode](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes)| **FC/iSCSI:**
RWO/
RWOP
**Raw block:**
RWO/
RWX/
ROX/
RWOP | RWO/ROX/RWOP

RWX (Raw block only) | RWO/ROX/RWOP

RWX (Raw block & NFS only) | RWO/RWX/ROX/
RWOP | RWO/RWOP
(FC/iSCSI)
RWO/
RWX/
ROX/
RWOP
(RawBlock, NFS) | +| CSI Volume Cloning | yes | yes | yes | yes | yes | +| CSI Raw Block Volume | yes | yes | yes | no | yes | +| CSI Ephemeral Volume | no | yes | yes | yes | yes | +| Topology | yes | yes | yes | yes | yes | +| Multi-array | yes | yes | yes | yes | yes | +| Volume Health Monitoring | yes | yes | yes | yes | yes | {{
}} ### Supported Storage Platforms {{}} -| | PowerMax | PowerFlex | Unity | PowerScale | PowerStore | +| | PowerMax | PowerFlex | Unity XT | PowerScale | PowerStore | |---------------|:-------------------------------------------------------:|:----------------:|:--------------------------:|:----------------------------------:|:----------------:| -| Storage Array |5978.479.479, 5978.711.711
Unisphere 9.2| 3.5.x, 3.6.x | 5.0.7, 5.1.0, 5.1.2 | OneFS 8.1, 8.2, 9.0, 9.1, 9.2, 9.3 | 1.0.x, 2.0.x, 2.1.x | +| Storage Array |5978.479.479, 5978.711.711
Unisphere 9.2| 3.5.x, 3.6.x | 5.0.7, 5.1.0, 5.1.2 | OneFS 8.1, 8.2, 9.0, 9.1, 9.2, 9.3, 9.4 | 1.0.x, 2.0.x, 2.1.x, 3.0 | {{
}} ### Backend Storage Details {{}} -| Features | PowerMax | PowerFlex | Unity | PowerScale | PowerStore | +| Features | PowerMax | PowerFlex | Unity XT | PowerScale | PowerStore | |---------------|:----------------:|:------------------:|:----------------:|:----------------:|:----------------:| | Fibre Channel | yes | N/A | yes | N/A | yes | | iSCSI | yes | N/A | yes | N/A | yes | | NVMeTCP | N/A | N/A | N/A | N/A | yes | +| NVMeFC | N/A | N/A | N/A | N/A | yes | | NFS | N/A | N/A | yes | yes | yes | | Other | N/A | ScaleIO protocol | N/A | N/A | N/A | | Supported FS | ext4 / xfs | ext4 / xfs | ext3 / ext4 / xfs / NFS | NFS | ext3 / ext4 / xfs / NFS | | Thin / Thick provisioning | Thin | Thin | Thin/Thick | N/A | Thin | | Platform-specific configurable settings | Service Level selection
iSCSI CHAP | - | Host IO Limit
Tiering Policy
NFS Host IO size
Snapshot Retention duration | Access Zone
NFS version (3 or 4);Configurable Export IPs | iSCSI CHAP | -{{
}} +{{}} \ No newline at end of file diff --git a/content/v1/csidriver/archives/_index.md b/content/v1/csidriver/archives/_index.md deleted file mode 100644 index c6df42da23..0000000000 --- a/content/v1/csidriver/archives/_index.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Archives -description: Product Guide and Release Notes for previous versions of Dell CSI drivers ---- - -## PowerScale -### v1.3 --[Release Notes](/pdf/RN_isilon.pdf) - --[Product Guide](/pdf/PG_isilon.pdf) - -### v1.2 - --[Release Notes](/pdf/RN_isilon_2.pdf) - --[Product Guide](/pdf/PG_isilon_2.pdf) - -## PowerMax - -### v1.4 --[Release Notes](/pdf/RN_powermax.pdf) - --[Product Guide](/pdf/PG_powermax.pdf) - -## PowerFlex - -### v1.2 --[Release Notes](/pdf/RN_vxflex.pdf) - --[Product Guide](/pdf/PG_vxflex.pdf) - -## PowerStore -### v1.1 --[Release Notes](/pdf/RN_powerstore.pdf) - --[Product Guide](/pdf/PG_powerstore.pdf) - -## Unity -### v1.3 --[Release Notes](/pdf/RN_unity.pdf) - --[Product Guide](/pdf/PG_unity.pdf) - diff --git a/content/v1/csidriver/features/powerflex.md b/content/v1/csidriver/features/powerflex.md index 6353aa6f58..cfc331a718 100644 --- a/content/v1/csidriver/features/powerflex.md +++ b/content/v1/csidriver/features/powerflex.md @@ -7,7 +7,7 @@ Description: Code features for PowerFlex Driver ## Volume Snapshot Feature -The CSI PowerFlex driver version 2.0 and higher supports v1 snapshots on Kubernetes 1.21/1.22/1.23. +The CSI PowerFlex driver versions 2.0 and higher support v1 snapshots. In order to use Volume Snapshots, ensure the following components are deployed to your cluster: - Kubernetes Volume Snapshot CRDs @@ -82,35 +82,7 @@ spec: ## Create Consistent Snapshot of Group of Volumes -This feature extends CSI specification to add the capability to create crash-consistent snapshots of a group of volumes. This feature is available as a technical preview. To use this feature, users have to deploy the csi-volumegroupsnapshotter side-car as part of the PowerFlex driver. Once the sidecar has been deployed, users can make snapshots by using yaml files such as this one: -``` -apiVersion: volumegroup.storage.dell.com/v1 -kind: DellCsiVolumeGroupSnapshot -metadata: - name: "vg-snaprun1" - namespace: "helmtest-vxflexos" -spec: - # Add fields here - driverName: "csi-vxflexos.dellemc.com" - # defines how to process VolumeSnapshot members when volume group snapshot is deleted - # "Retain" - keep VolumeSnapshot instances - # "Delete" - delete VolumeSnapshot instances - memberReclaimPolicy: "Retain" - volumesnapshotclass: "vxflexos-snapclass" - pvcLabel: "vgs-snap-label" - # pvcList: - # - "pvcName1" - # - "pvcName2" -``` -The pvcLabel field specifies a label that must be present in PVCs that are to be snapshotted. Here is a sample of that portion of a .yaml for a PVC: -``` -metadata: - name: pvol0 - namespace: helmtest-vxflexos - labels: - volume-group: vgs-snap-label -``` -More details about the installation and use of the VolumeGroup Snapshotter can be found here: [dell-csi-volumegroup-snapshotter](https://github.com/dell/csi-volumegroup-snapshotter). +This feature extends CSI specification to add the capability to create crash-consistent snapshots of a group of volumes. This feature is available as a technical preview. To use this feature, users have to deploy the csi-volumegroupsnapshotter side-car as part of the PowerFlex driver. Once the sidecar has been deployed, users can make snapshots by using yaml files, More information can be found here: [Volume Group Snapshotter](../../../snapshots/volume-group-snapshots/). ## Volume Expansion Feature @@ -398,9 +370,9 @@ controller: - key: "node-role.kubernetes.io/master" operator: "Exists" effect: "NoSchedule" -``` +``` > *NOTE:* Tolerations/selectors work the same way for node pods. - + For configuring Controller HA on the Dell CSI Operator, please refer to the [Dell CSI Operator documentation](../../installation/operator/#custom-resource-specification). ## SDC Deployment @@ -450,7 +422,7 @@ There is a sample yaml file in the samples folder under the top-level directory endpoint: "https://127.0.0.2" skipCertificateValidation: true mdm: "10.0.0.3,10.0.0.4" - ``` + ``` Here we specify that we want the CSI driver to manage two arrays: one with an IP `127.0.0.1` and the other with an IP `127.0.0.2`. To use this config we need to create a Kubernetes secret from it. To do so, run the following command: @@ -546,7 +518,7 @@ To run the corresponding helm test, go to csi-vxflexos/test/helm/ephemeral and f Then run: ```` ./testEphemeral.sh -```` +```` this test deploys the pod with two ephemeral volumes, and write some data to them before deleting the pod. When creating ephemeral volumes, it is important to specify the following within the volumeAttributes section: volumeName, size, storagepool, and if you want to use a non-default array, systemID. @@ -587,7 +559,7 @@ Events: Type Reason Age From Message ---- ------ ---- ---- ------ Warning VolumeConditionAbnormal 32s csi-pv-monitor-controller-csi-vxflexos.dellemc.com Volume is not found at 2021-11-03 20:31:04 -``` +``` Events will also be reported to pods that have abnormal volumes. In these two events from `kubectl describe pods -n `, we can see that this pod has two abnormal volumes: one volume was unmounted outside of Kubernetes, while another was deleted from PowerFlex array. ``` Events: diff --git a/content/v1/csidriver/features/powermax.md b/content/v1/csidriver/features/powermax.md index a635b79ec6..697c1040b1 100644 --- a/content/v1/csidriver/features/powermax.md +++ b/content/v1/csidriver/features/powermax.md @@ -399,7 +399,7 @@ After a successful installation of the driver, if a node Pod is running successf The values for all these keys are always set to the name of the provisioner which is usually `csi-powermax.dellemc.com`. -> *NOTE:* The Topology support does not include any customer-defined topology, that is, users cannot create their own labels for nodes and storage classes and expect the labels to be honored by the driver. +Starting from version 2.3.0, topology keys have been enhanced to filter out arrays, associated transport protocol available to each node and create topology keys based on any such user input. ### Topology Usage To use the Topology feature, the storage classes must be modified as follows: @@ -437,6 +437,80 @@ on any worker node with access to the PowerMax array `000000000001` irrespective For additional information on how to use _Topology aware Volume Provisioning_, see the [Kubernetes Topology documentation](https://kubernetes-csi.github.io/docs/topology.html). +### Custom Topology keys +To use the enhanced topology keys: +1. To use this feature, set node.topologyControl.enabled to true. +2. Edit the config file [topologyConfig.yaml](https://github.com/dell/csi-powermax/blob/main/samples/configmap/topologyConfig.yaml) in `csi-powermax/samples/configmap` folder and provide values for the following parameters. + +| Parameter | Description | +|-----------|--------------| +| allowedConnections | List of node, array and protocol info for user allowed configuration | +| allowedConnections.nodeName | Name of the node on which user wants to apply given rules | +| allowedConnections.rules | List of StorageArrayID:TransportProtocol pair | +| deniedConnections | List of node, array and protocol info for user denied configuration | +| deniedConnections.nodeName | Name of the node on which user wants to apply given rules | +| deniedConnections.rules | List of StorageArrayID:TransportProtocol pair | + +
+ +**Sample config file:** + +``` +# allowedConnections contains a list of (node, array and protocol) info for user allowed configuration +# For any given storage array ID and protocol on a Node, topology keys will be created for just those pair and +# every other configuration is ignored +# Please refer to the doc website about a detailed explanation of each configuration parameter +# and the various possible inputs +allowedConnections: + # nodeName: Name of the node on which user wants to apply given rules + # Allowed values: + # nodeName - name of a specific node + # * - all the nodes + # Examples: "node1", "*" + - nodeName: "node1" + # rules is a list of 'StorageArrayID:TransportProtocol' pair. ':' is required between both value + # Allowed values: + # StorageArrayID: + # - SymmetrixID : for specific storage array + # - "*" :- for all the arrays connected to the node + # TransportProtocol: + # - FC : Fibre Channel protocol + # - ISCSI : iSCSI protocol + # - "*" - for all the possible Transport Protocol + # Examples: "000000000001:FC", "000000000002:*", "*:FC", "*:*" + rules: + - "000000000001:FC" + - "000000000002:FC" + - nodeName: "*" + rules: + - "000000000002:FC" +# deniedConnections contains a list of (node, array and protocol) info for denied configurations by user +# For any given storage array ID and protocol on a Node, topology keys will be created for every other configuration but +# not these input pairs +deniedConnections: + - nodeName: "node2" + rules: + - "000000000002:*" + - nodeName: "node3" + rules: + - "*:*" +``` + +3. Use the below command to create ConfigMap with configmap name as `node-topology-config` in the namespace powermax, + +`kubectl create configmap node-topology-config --from-file=topologyConfig.yaml -n powermax` + +For example, let there be 3 nodes and 2 arrays, so based on the sample config file above, topology keys will be created as below: + +New Topology keys +N1: csi-driver/000000000001.FC:csi-driver, csi-driver/000000000002.FC:csi-driver +
+N2 and N3: None + + +>Note: Name of the configmap should always be `node-topology-config`. + + ## Dynamic Logging Configuration This feature is introduced in CSI Driver for PowerMax version 2.0.0. diff --git a/content/v1/csidriver/features/powerstore.md b/content/v1/csidriver/features/powerstore.md index 1f5b1fb50e..e4a3103b11 100644 --- a/content/v1/csidriver/features/powerstore.md +++ b/content/v1/csidriver/features/powerstore.md @@ -541,7 +541,7 @@ The value of that parameter is added as an additional entry to NFS Export host a For example the following notation: ```yaml externalAccess: "10.0.0.0/24" -``` +``` This means that we allow for NFS Export created by driver to be consumed by address range `10.0.0.0-10.0.0.255`. @@ -668,10 +668,65 @@ nfsAcls: "A::OWNER@:rwatTnNcCy,A::GROUP@:rxtncy,A::EVERYONE@:rxtncy,A::user@doma >POSIX ACLs are not supported and only POSIX mode bits are supported for NFSv3 shares. -## NVMe/TCP Support - -CSI Driver for Dell Powerstore 2.2.0 and above supports NVMe/TCP provisioning. To enable NVMe/TCP provisioning, blockProtocol on secret should be specified as `NVMeTCP`. -In case blockProtocol is specified as `auto`, the driver will be able to find the initiators on the host and choose the protocol accordingly. If the host has multiple protocols enabled, then FC gets the highest priority followed by iSCSI and then NVMeTCP. +## NVMe Support +**NVMeTCP Support** +CSI Driver for Dell Powerstore 2.2.0 and above supports NVMe/TCP provisioning. To enable NVMe/TCP provisioning, blockProtocol on secret should be specified as `NVMeTCP`. >Note: NVMe/TCP is not supported on RHEL 7.x versions and CoreOS. >NVMe/TCP is supported with Powerstore 2.1 and above. + +**NVMeFC Support** +CSI Driver for Dell Powerstore 2.3.0 and above supports NVMe/FC provisioning. To enable NVMe/FC provisioning, blockProtocol on secret should be specified as `NVMeFC`. +>NVMe/FC is supported with Powerstore 3.0 and above. + +>NVMe-FC feature is supported with Helm. + +>Note: +> In case blockProtocol is specified as `auto`, the driver will be able to find the initiators on the host and choose the protocol accordingly. If the host has multiple protocols enabled, then NVMeFC gets the highest priority followed by NVMeTCP, followed by FC and then iSCSI. + +## Volume group snapshot Support + +CSI Driver for Dell Powerstore 2.3.0 and above supports creating volume groups and take snapshot of them by making use of CRD (Custom Resource Definition). More information can be found here: [Volume Group Snapshotter](../../../snapshots/volume-group-snapshots/). + +## Configurable Volume Attributes (Optional) + +The CSI PowerStore driver version 2.3.0 and above supports Configurable volume atttributes. + +PowerStore array provides a set of optional volume creation attributes. These attributes can be configured for the volume (block and NFS) at the time of creation through PowerStore CSI driver. +These attributes can be specified as labels in PVC yaml file. The following is a sample manifest for creating volume with some of the configurable volume attributes. + +```yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: pvc1 + namespace: default + labels: + description: DB-volume + appliance_id: A1 + volume_group_id: f5f9dbbd-d12f-463e-becb-2e6d0a85405e +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 8Gi + storageClassName: powerstore-ext4 + +``` + +>Note: Default description value is `pvcName-pvcNamespace`. + +The following is the list of all the attribtues supported by PowerStore CSI driver: + +| Block Volume | NFS Volume | +| --- | --- | +| description
appliance_id
volume_group_id
protection_policy_id
performance_policy_id
app_type
app_type_other





| description
config_type
access_policy
locking_policy
folder_rename_policy
is_async_mtime_enabled
protection_policy_id
file_events_publishing_mode
host_io_size
flr_attributes.flr_create.mode
flr_attributes.flr_create.default_retention
flr_attributes.flr_create.maximum_retention
flr_attributes.flr_create.minimum_retention | + +
+ +**Note:** +>Refer to the PowerStore array specification for the allowed values for each attribute, at `https:///swaggerui/`. +>Make sure that the attributes specified are supported by the version of PowerStore array used. + +>Configurable Volume Attributes feature is supported with Helm. diff --git a/content/v1/csidriver/features/unity.md b/content/v1/csidriver/features/unity.md index 7559245396..4cac022944 100644 --- a/content/v1/csidriver/features/unity.md +++ b/content/v1/csidriver/features/unity.md @@ -1,6 +1,6 @@ --- -title: Unity -Description: Code features for Unity Driver +title: Unity XT +Description: Code features for Unity XT Driver weight: 1 --- @@ -30,9 +30,9 @@ kubectl delete -f test/sample.yaml ## Consuming existing volumes with static provisioning -You can use existent volumes from Unity array as Persistent Volumes in your Kubernetes, to do that you must perform the following steps: +You can use existent volumes from Unity XT array as Persistent Volumes in your Kubernetes, to do that you must perform the following steps: -1. Open your volume in Unity Management UI (Unisphere), and take a note of volume-id. The `volume-id` looks like `csiunity-xxxxx` and CLI ID looks like `sv_xxxx`. +1. Open your volume in Unity XT Management UI (Unisphere), and take a note of volume-id. The `volume-id` looks like `csiunity-xxxxx` and CLI ID looks like `sv_xxxx`. 2. Create PersistentVolume and use this volume-id as a volumeHandle in the manifest. Modify other parameters according to your needs. ```yaml @@ -106,8 +106,6 @@ In order to use Volume Snapshots, ensure the following components have been depl ### Volume Snapshot Class -During the installation of the CSI Unity 2.0 driver and higher, a Volume Snapshot Class is not created and need to create Volume Snapshot Class. - Following is the manifest to create Volume Snapshot Class : ```yaml @@ -146,7 +144,7 @@ status: readyToUse: true ``` Note : -For CSI Driver for Unity version 1.6 and later, `dell-csi-helm-installer` does not create any Volume Snapshot classes as part of the driver installation. A set of annotated volume snapshot class manifests have been provided in the `csi-unity/samples/volumesnapshotclass/` folder. Use these samples to create new Volume Snapshot to provision storage. +A set of annotated volume snapshot class manifests have been provided in the [csi-unity/samples/volumesnapshotclass/](https://github.com/dell/csi-unity/tree/main/samples/volumesnapshotclass) folder. Use these samples to create new Volume Snapshot to provision storage. ### Creating PVCs with Volume Snapshots as Source @@ -173,7 +171,7 @@ spec: ## Volume Expansion -The CSI Unity driver version 1.3 and later supports the expansion of Persistent Volumes (PVs). This expansion can be done either online (for example, when a PVC is attached to a node) or offline (for example, when a PVC is not attached to any node). +The CSI Unity XT driver supports the expansion of Persistent Volumes (PVs). This expansion can be done either online (for example, when a PVC is attached to a node) or offline (for example, when a PVC is not attached to any node). To use this feature, the storage class that is used to create the PVC must have the attribute `allowVolumeExpansion` set to true. @@ -215,7 +213,7 @@ spec: ## Raw block support -The CSI Unity driver supports Raw Block Volumes. +The CSI Unity XT driver supports Raw Block Volumes. Raw Block volumes are created using the volumeDevices list in the pod template spec with each entry accessing a volumeClaimTemplate specifying a volumeMode: Block. The following is an example configuration: ```yaml @@ -259,14 +257,14 @@ spec: Access modes allowed are ReadWriteOnce and ReadWriteMany. Raw Block volumes are presented as a block device to the pod by using a bind mount to a block device in the node's file system. The driver does not format or check the format of any file system on the block device. -Raw Block volumes support online Volume Expansion, but it is up to the application to manage to reconfigure the file system (if any) to the new size. Access mode ReadOnlyMany is not supported with raw block since we cannot restrict volumes to be readonly from Unity. +Raw Block volumes support online Volume Expansion, but it is up to the application to manage and reconfigure the file system (if any) to the new size. Access mode ReadOnlyMany is not supported with raw block since we cannot restrict volumes to be readonly from Unity XT. For additional information, see the [kubernetes](https://kubernetes.io/DOCS/CONCEPTS/STORAGE/PERSISTENT-VOLUMES/#volume-mode) website. ## Volume Cloning Feature -The CSI Unity driver version 1.3 and later supports volume cloning. This allows specifying existing PVCs in the _dataSource_ field to indicate a user would like to clone a Volume. +The CSI Unity XT driver supports volume cloning. This allows specifying existing PVCs in the _dataSource_ field to indicate a user would like to clone a Volume. Source and destination PVC must be in the same namespace and have the same Storage Class. @@ -310,11 +308,11 @@ spec: ## Ephemeral Inline Volume -The CSI Unity driver supports ephemeral inline CSI volumes. This feature allows CSI volumes to be specified directly in the pod specification. +The CSI Unity XT driver supports ephemeral inline CSI volumes. This feature allows CSI volumes to be specified directly in the pod specification. At runtime, nested inline volumes follow the ephemeral lifecycle of their associated pods where the driver handles all phases of volume operations as pods are created and destroyed. -The following is a sample manifest for creating ephemeral volume in pod manifest with CSI Unity driver. +The following is a sample manifest for creating ephemeral volume in pod manifest with CSI Unity XT driver. ```yaml kind: Pod @@ -361,9 +359,9 @@ To create `NFS` volume you need to provide `nasName:` parameters that point to t ## Controller HA -The CSI Unity driver supports controller HA feature. Instead of StatefulSet controller pods deployed as a Deployment. +The CSI Unity XT driver supports controller HA feature. Instead of StatefulSet controller pods deployed as a Deployment. -By default, number of replicas is set to 2, you can set the `controllerCount` parameter to 1 in `myvalues.yaml` if you want to disable controller HA for your installation. When installing via Operator you can change the `replicas` parameter in the `spec.driver` section in your Unity Custom Resource. +By default, the number of replicas is set to 2. You can set the controllerCount parameter to 1 in myvalues.yaml if you want to disable controller HA for your installation. When installing via Operator, you can change the replicas parameter in the spec.driver section in your Unity XT Custom Resource. When multiple replicas of controller pods are in a cluster each sidecar (Attacher, Provisioner, Resizer, and Snapshotter) tries to get a lease so only one instance of each sidecar is active in the cluster at a time. @@ -407,7 +405,7 @@ As said before you can configure where node driver pods would be assigned in a s ## Topology -The CSI Unity driver supports Topology which forces volumes to be placed on worker nodes that have connectivity to the backend storage. This covers use cases where users have chosen to restrict the nodes on which the CSI driver is deployed. +The CSI Unity XT driver supports Topology which forces volumes to be placed on worker nodes that have connectivity to the backend storage. This covers use cases where users have chosen to restrict the nodes on which the CSI driver is deployed. This Topology support does not include customer-defined topology, users cannot create their own labels for nodes, they should use whatever labels are returned by the driver and applied automatically by Kubernetes on its nodes. @@ -433,7 +431,7 @@ allowedTopologies: - "true" ``` -This example matches all nodes where the driver has a connection to the Unity array with array ID mentioned via Fiber Channel. Similarly, by replacing `fc` with `iscsi` in the key checks for iSCSI connectivity with the node. +This example matches all nodes where the driver has a connection to the Unity XT array with array ID mentioned via Fiber Channel. Similarly, by replacing `fc` with `iscsi` in the key checks for iSCSI connectivity with the node. You can check what labels your nodes contain by running `kubectl get nodes --show-labels` command. @@ -442,7 +440,7 @@ You can check what labels your nodes contain by running `kubectl get nodes --sho For any additional information about the topology, see the [Kubernetes Topology documentation](https://kubernetes-csi.github.io/docs/topology.html). ## Volume Limit -The CSI Driver for Dell Unity allows users to specify the maximum number of Unity volumes that can be used in a node. +The CSI Driver for Dell Unity XT allows users to specify the maximum number of Unity XT volumes that can be used in a node. The user can set the volume limit for a node by creating a node label `max-unity-volumes-per-node` and specifying the volume limit for that node.
`kubectl label node max-unity-volumes-per-node=` @@ -452,12 +450,12 @@ The user can also set the volume limit for all the nodes in the cluster by speci >**NOTE:**
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 unity --no-headers=true | awk '/unity-/{print $1}'| xargs kubectl delete -n unity pod`.

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.

The default value of `maxUnityVolumesPerNode` is 0.

If `maxUnityVolumesPerNode` is set to zero, then Container Orchestration decides how many volumes of this type can be published by the controller to the node.

The volume limit specified to `maxUnityVolumesPerNode` attribute is applicable to all the nodes in the cluster for which node label `max-unity-volumes-per-node` is not set. ## NAT Support -CSI Driver for Dell Unity is supported in the NAT environment for NFS protocol. +CSI Driver for Dell Unity XT is supported in the NAT environment for NFS protocol. The user will be able to install the driver and able to create pods. ## Single Pod Access Mode for PersistentVolumes -CSI Driver for Unity supports a new accessmode `ReadWriteOncePod` for PersistentVolumes and PersistentVolumeClaims. With this feature, CSI Driver for Unity allows to restrict volume access to a single pod in the cluster +CSI Driver for Unity XT supports a new accessmode `ReadWriteOncePod` for PersistentVolumes and PersistentVolumeClaims. With this feature, CSI Driver for Unity XT restricts volume access to a single pod in the cluster Prerequisites 1. Enable the ReadWriteOncePod feature gate for kube-apiserver, kube-scheduler, and kubelet as the ReadWriteOncePod access mode is in alpha for Kubernetes v1.22 and is only supported for CSI volumes. You can enable the feature by setting command line arguments: @@ -477,14 +475,13 @@ spec: ``` ## Volume Health Monitoring -CSI Driver for Unity supports volume health monitoring. This is an alpha feature and requires feature gate to be enabled by setting command line arguments `--feature-gates="...,CSIVolumeHealth=true"`. +CSI Driver for Unity XT supports volume health monitoring. This is an alpha feature and requires feature gate to be enabled by setting command line arguments `--feature-gates="...,CSIVolumeHealth=true"`. This feature: 1. Reports on the condition of the underlying volumes via events when a volume condition is abnormal. We can watch the events on the describe of pvc `kubectl describe pvc -n ` 2. Collects the volume stats. We can see the volume usage in the node logs `kubectl logs -n -c driver` -By default this is disabled in CSI Driver for Unity. 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. +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. ## Dynamic Logging Configuration -This feature is introduced in CSI Driver for unity version 2.0.0. ### Helm based installation As part of driver installation, a ConfigMap with the name `unity-config-params` is created, which contains an attribute `CSI_LOG_LEVEL` which specifies the current log level of CSI driver. @@ -508,13 +505,11 @@ To update the log level dynamically user has to edit the ConfigMap `unity-config kubectl edit configmap -n unity unity-config-params ``` ->Note: Prior to CSI Driver for unity version 2.0.0, the log level was allowed to be updated dynamically through `logLevel` attribute in the secret object. - -## Tenancy support for Unity NFS +## Tenancy support for Unity XT NFS -The CSI Unity driver version 2.1.0 (and later versions) supports the Tenancy feature of Unity such that the user will be able to associate specific worker nodes (in the cluster) and NFS storage volumes with Tenant. +The CSI Unity XT driver version v2.1.0 (and later versions) supports the Tenancy feature of Unity XT such that the user will be able to associate specific worker nodes (in the cluster) and NFS storage volumes with Tenant. -Prerequisites (to be manually created in Unity Array) before the driver installation: +Prerequisites (to be manually created in Unity XT Array) before the driver installation: * Create Tenants * Create Pools * Create NAS Servers with Tenant and Pool mapping @@ -634,4 +629,4 @@ data: SYNC_NODE_INFO_TIME_INTERVAL: "15" TENANT_NAME: "" ``` ->Note: csi-unity supports Tenancy in multi-array setup, provided the TenantName is the same across Unity instances. +>Note: csi-unity supports Tenancy in multi-array setup, provided the TenantName is the same across Unity XT instances. diff --git a/content/v1/csidriver/installation/helm/isilon.md b/content/v1/csidriver/installation/helm/isilon.md index 08d51943eb..d1ba801503 100644 --- a/content/v1/csidriver/installation/helm/isilon.md +++ b/content/v1/csidriver/installation/helm/isilon.md @@ -25,6 +25,7 @@ The following are requirements to be met before installing the CSI Driver for De - If using Snapshot feature, satisfy all Volume Snapshot requirements - If enabling CSM for Authorization, please refer to the [Authorization deployment steps](../../../../authorization/deployment/) first - If enabling CSM for Replication, please refer to the [Replication deployment steps](../../../../replication/deployment/) first +- If enabling CSM for Resiliency, please refer to the [Resiliency deployment steps](../../../../resiliency/deployment/) first ### Install Helm 3.0 @@ -120,7 +121,7 @@ CRDs should be configured during replication prepare stage with repctl as descri ## Install the Driver **Steps** -1. Run `git clone -b v2.2.0 https://github.com/dell/csi-powerscale.git` to clone the git repository. +1. Run `git clone -b v2.3.0 https://github.com/dell/csi-powerscale.git` to clone the git repository. 2. Ensure that you have created the namespace where you want to install the driver. You can run `kubectl create namespace isilon` to create a new one. The use of "isilon" as the namespace is just an example. You can choose any name for the namespace. 3. Collect information from the PowerScale Systems like IP address, IsiPath, username, and password. Make a note of the value for these parameters as they must be entered in the *secret.yaml*. 4. Copy *the helm/csi-isilon/values.yaml* into a new location with name say *my-isilon-settings.yaml*, to customize settings for installation. @@ -139,6 +140,8 @@ CRDs should be configured during replication prepare stage with repctl as descri | kubeletConfigDir | Specify kubelet config dir path | Yes | "/var/lib/kubelet" | | enableCustomTopology | Indicates PowerScale FQDN/IP which will be fetched from node label and the same will be used by controller and node pod to establish a connection to Array. This requires enableCustomTopology to be enabled. | No | false | | fsGroupPolicy | Defines which FS Group policy mode to be used, Supported modes `None, File and ReadWriteOnceWithFSType` | No | "ReadWriteOnceWithFSType" | + | podmonAPIPort | Defines the port which csi-driver will use within the cluster to support podmon | No | 8083 | + | maxPathLen | Defines the maximum length of path for a volume | No | 192 | | ***controller*** | Configure controller pod 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" | @@ -171,6 +174,9 @@ CRDs should be configured during replication prepare stage with repctl as descri | sidecarProxyImage | Image for csm-authorization-sidecar. | No | " " | | proxyHost | Hostname of the csm-authorization server. | No | Empty | | skipCertificateValidation | A boolean that enables/disables certificate validation of the csm-authorization server. | No | true | + | **podmon** | Podmon is an optional feature under development and tech preview. Enable this feature only after contact support for additional information. | - | - | + | enabled | A boolean that enable/disable podmon feature. | No | false | + | image | image for podmon. | No | " " | *NOTE:* @@ -261,7 +267,7 @@ The CSI driver for Dell PowerScale version 1.5 and later, `dell-csi-helm-install ### What happens to my existing storage classes? -*Upgrading from CSI PowerScale v2.1 driver*: +*Upgrading from CSI PowerScale v2.2 driver*: The storage classes created as part of the installation have an annotation - "helm.sh/resource-policy": keep set. This ensures that even after an uninstall or upgrade, the storage classes are not deleted. You can continue using these storage classes if you wish so. *NOTE*: @@ -283,7 +289,7 @@ Starting CSI PowerScale v1.6, `dell-csi-helm-installer` will not create any Volu ### What happens to my existing Volume Snapshot Classes? -*Upgrading from CSI PowerScale v2.1 driver*: +*Upgrading from CSI PowerScale v2.2 driver*: The existing volume snapshot class will be retained. *Upgrading from an older version of the driver*: diff --git a/content/v1/csidriver/installation/helm/powerflex.md b/content/v1/csidriver/installation/helm/powerflex.md index 9bdb0ccdc0..c021fb43e9 100644 --- a/content/v1/csidriver/installation/helm/powerflex.md +++ b/content/v1/csidriver/installation/helm/powerflex.md @@ -29,6 +29,7 @@ The following are requirements that must be met before installing the CSI Driver - If using Snapshot feature, satisfy all Volume Snapshot requirements - A user must exist on the array with a role _>= FrontEndConfigure_ - If enabling CSM for Authorization, please refer to the [Authorization deployment steps](../../../../authorization/deployment/) first +- If multipath is configured, ensure CSI-PowerFlex volumes are blacklisted by multipathd. See [troubleshooting section](../../../troubleshooting/powerflex.md) for details ### Install Helm 3.0 @@ -109,7 +110,7 @@ kubectl -n kube-system kustomize deploy/kubernetes/snapshot-controller | kubectl ## Install the Driver **Steps** -1. Run `git clone -b v2.2.0 https://github.com/dell/csi-powerflex.git` to clone the git repository. +1. Run `git clone -b v2.3.0 https://github.com/dell/csi-powerflex.git` to clone the git repository. 2. Ensure that you have created a namespace where you want to install the driver. You can run `kubectl create namespace vxflexos` to create a new one. @@ -130,61 +131,36 @@ kubectl -n kube-system kustomize deploy/kubernetes/snapshot-controller | kubectl Example: `samples/config.yaml` - ```yaml - # Username for accessing PowerFlex system. - # If authorization is enabled, username will be ignored. - - username: "admin" - # Password for accessing PowerFlex system. - # If authorization is enabled, password will be ignored. - password: "password" - # System name/ID of PowerFlex system. - systemID: "ID1" - # Previous names of PowerFlex system if used for PV. - allSystemNames: "pflex-1,pflex-2" - # REST API gateway HTTPS endpoint for PowerFlex system. - # If authorization is enabled, endpoint should be the HTTPS localhost endpoint that - # the authorization sidecar will listen on - endpoint: "https://127.0.0.1" - # Determines if the driver is going to validate certs while connecting to PowerFlex REST API interface. - # Allowed values: true or false - # Default value: true - skipCertificateValidation: true - # indicates if this array is the default array - # needed for backwards compatibility - # only one array is allowed to have this set to true - # Default value: false - isDefault: true - # defines the MDM(s) that SDC should register with on start. - # Allowed values: a list of IP addresses or hostnames separated by comma. - # Default value: none - mdm: "10.0.0.1,10.0.0.2" - - username: "admin" - password: "Password123" - systemID: "ID2" - endpoint: "https://127.0.0.2" - skipCertificateValidation: true - mdm: "10.0.0.3,10.0.0.4" - ``` - - After editing the file, run the following command to create a secret called `vxflexos-config`: +```yaml +- username: "admin" + password: "Password123" + systemID: "ID2" + endpoint: "https://127.0.0.2" + skipCertificateValidation: true + isDefault: true + mdm: "10.0.0.3,10.0.0.4" +``` + *NOTE: To use multiple arrays, copy and paste section above for each array. Make sure isDefault is set to true for only one array.* + +After editing the file, run the below command to create a secret called `vxflexos-config`: `kubectl create secret generic vxflexos-config -n vxflexos --from-file=config=samples/config.yaml` - Use the following command to replace or update the secret: +Use the below command to replace or update the secret: `kubectl create secret generic vxflexos-config -n vxflexos --from-file=config=samples/config.yaml -o yaml --dry-run=client | kubectl replace -f -` - *NOTE:* +*NOTE:* - - The user needs to validate the YAML syntax and array-related key/values while replacing the vxflexos-creds secret. - - If you want to create a new array or update the MDM values in the secret, you will need to reinstall the driver. If you change other details, such as login information, the secret will dynamically update -- see [dynamic-array-configuration](../../../features/powerflex#dynamic-array-configuration) for more details. - - Old `json` format of the array configuration file is still supported in this release. If you already have your configuration in `json` format, you may continue to maintain it or you may transfer this configuration to `yaml` - format and replace/update the secret. - - "insecure" parameter has been changed to "skipCertificateValidation" as insecure is deprecated and will be removed from use in config.yaml or secret.yaml in a future release. Users can continue to use any one of "insecure" or "skipCertificateValidation" for now. The driver would return an error if both parameters are used. - - Please note that log configuration parameters from v1.5 will no longer work in v2.0 and higher. Please refer to the [Dynamic Logging Configuration](../../../features/powerflex#dynamic-logging-configuration) section in Features for more information. - - If the user is using complex K8s version like "v1.21.3-mirantis-1", use below kubeVersion check in helm/csi-unity/Chart.yaml file. +- The user needs to validate the YAML syntax and array-related key/values while replacing the vxflexos-creds secret. +- If you want to create a new array or update the MDM values in the secret, you will need to reinstall the driver. If you change other details, such as login information, the secret will dynamically update -- see [dynamic-array-configuration](../../../features/powerflex#dynamic-array-configuration) for more details. +- Old `json` format of the array configuration file is still supported in this release. If you already have your configuration in `json` format, you may continue to maintain it or you may transfer this configuration to `yaml`format and replace/update the secret. +- "insecure" parameter has been changed to "skipCertificateValidation" as insecure is deprecated and will be removed from use in config.yaml or secret.yaml in a future release. Users can continue to use any one of "insecure" or "skipCertificateValidation" for now. The driver would return an error if both parameters are used. +- Please note that log configuration parameters from v1.5 will no longer work in v2.0 and higher. Please refer to the [Dynamic Logging Configuration](../../../features/powerflex#dynamic-logging-configuration) section in Features for more information. +- If the user is using complex K8s version like "v1.21.3-mirantis-1", use this kubeVersion check in helm/csi-unity/Chart.yaml file. kubeVersion: ">= 1.21.0-0 < 1.24.0-0" - + + 5. Default logging options are set during Helm install. To see possible configuration options, see the [Dynamic Logging Configuration](../../../features/powerflex#dynamic-logging-configuration) section in Features. 6. If using automated SDC deployment: @@ -206,6 +182,7 @@ kubectl -n kube-system kustomize deploy/kubernetes/snapshot-controller | kubectl | logFormat | CSI driver log format. Allowed values: "TEXT" or "JSON". | Yes | "TEXT" | | kubeletConfigDir | kubelet config directory path. Ensure that the config.yaml file is present at this path. | Yes | /var/lib/kubelet | | defaultFsType | Used to set the default FS type which will be used for mount volumes if FsType is not specified in the storage class. Allowed values: ext4, xfs. | Yes | ext4 | +| fsGroupPolicy | Defines which FS Group policy mode to be used. Supported modes are`None, File, and ReadWriteOnceWithFSType.` | No | "ReadWriteOnceWithFSType" | | imagePullPolicy | Policy to determine if the image should be pulled prior to starting the container. Allowed values: Always, IfNotPresent, Never. | Yes | IfNotPresent | | 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 | @@ -221,14 +198,13 @@ kubectl -n kube-system kustomize deploy/kubernetes/snapshot-controller | kubectl | enabled | Enable/Disable deployment of external health monitor sidecar. | No | false | | volumeHealthMonitorInterval | Interval of monitoring volume health condition. Allowed values: Number followed by unit (s,m,h)| No | 60s | | **node** | This section allows the configuration of node-specific parameters. | - | - | +| healthMonitor.enabled | Enable/Disable health monitor of CSI volumes- volume usage, volume condition | No | false | | nodeSelector | Defines what nodes would be selected for pods of node daemonset. Leave as blank to use all nodes. | Yes | " " | | tolerations | Defines tolerations that would be applied to node daemonset. Leave as blank to install node driver only on worker nodes. | Yes | " " | | **monitor** | This section allows the configuration of the SDC monitoring pod. | - | - | | enabled | Set to enable the usage of the monitoring pod. | Yes | false | | hostNetwork | Set whether the monitor pod should run on the host network or not. | Yes | true | | hostPID | Set whether the monitor pod should run in the host namespace or not. | Yes | true | -| **healthMonitor** | This section configures node side volume health monitoring | - | -| -| enabled| Enable/Disable health monitor of CSI volumes- volume usage, volume condition | No | false | | **vgsnapshotter** | This section allows the configuration of the volume group snapshotter(vgsnapshotter) pod. | - | - | | enabled | A boolean that enable/disable vg snapshotter feature. | No | false | | image | Image for vg snapshotter. | No | " " | @@ -338,8 +314,8 @@ Starting CSI PowerFlex v1.5, `dell-csi-helm-installer` will not create any Volum ### What happens to my existing Volume Snapshot Classes? -*Upgrading from CSI PowerFlex v2.1 driver*: +*Upgrading from CSI PowerFlex v2.2 driver*: The existing volume snapshot class will be retained. *Upgrading from an older version of the driver*: -It is strongly recommended to upgrade the earlier versions of CSI PowerFlex to 1.5 or higher, before upgrading to 2.2. +It is strongly recommended to upgrade the earlier versions of CSI PowerFlex to 1.5 or higher, before upgrading to 2.3. diff --git a/content/v1/csidriver/installation/helm/powermax.md b/content/v1/csidriver/installation/helm/powermax.md index ef8882ce05..d63d770012 100644 --- a/content/v1/csidriver/installation/helm/powermax.md +++ b/content/v1/csidriver/installation/helm/powermax.md @@ -162,7 +162,7 @@ CRDs should be configured during replication prepare stage with repctl as descri **Steps** -1. Run `git clone -b v2.2.0 https://github.com/dell/csi-powermax.git` to clone the git repository. This will include the Helm charts and dell-csi-helm-installer scripts. +1. Run `git clone -b v2.3.0 https://github.com/dell/csi-powermax.git` to clone the git repository. This will include the Helm charts and dell-csi-helm-installer scripts. 2. Ensure that you have created a namespace where you want to install the driver. You can run `kubectl create namespace powermax` to create a new one 3. Edit the `samples/secret/secret.yaml file, point to the correct namespace, and replace the values for the username and password parameters. These values can be obtained using base64 encoding as described in the following example: @@ -178,16 +178,40 @@ CRDs should be configured during replication prepare stage with repctl as descri | Parameter | Description | Required | Default | |-----------|--------------|------------|----------| +| **global**| This section refers to configuration options for both CSI PowerMax Driver and Reverse Proxy | - | - | +|defaultCredentialsSecret| This secret name refers to:
1. The Unisphere credentials if the driver is installed without proxy or with proxy in Linked mode.
2. The proxy credentials if the driver is installed with proxy in StandAlone mode.
3. The default Unisphere credentials if credentialsSecret is not specified for a management server.| Yes | powermax-creds | +| storageArrays| This section refers to the list of arrays managed by the driver and Reverse Proxy in StandAlone mode.| - | - | +| storageArrayId | This refers to PowerMax Symmetrix ID.| Yes | 000000000001| +| endpoint | This refers to the URL of the Unisphere server managing _storageArrayId_. If authorization is enabled, endpoint should be the HTTPS localhost endpoint that the authorization sidecar will listen on| Yes if Reverse Proxy mode is _StandAlone_ | https://primary-1.unisphe.re:8443 | +| backupEndpoint | This refers to the URL of the backup Unisphere server managing _storageArrayId_, if Reverse Proxy is installed in _StandAlone_ mode. If authorization is enabled, backupEndpoint should be the HTTPS localhost endpoint that the authorization sidecar will listen on| No | https://backup-1.unisphe.re:8443 | +| managementServers | This section refers to the list of configurations for Unisphere servers managing powermax arrays.| - | - | +| endpoint | This refers to the URL of the Unisphere server. If authorization is enabled, endpoint should be the HTTPS localhost endpoint that the authorization sidecar will listen on | Yes | https://primary-1.unisphe.re:8443 | +| credentialsSecret| This refers to the user credentials for _endpoint_ | No| primary-1-secret| +| skipCertificateValidation | This parameter should be set to false if you want to do client-side TLS verification of Unisphere for PowerMax SSL certificates.| No | "True" | +| certSecret | The name of the secret in the same namespace containing the CA certificates of the Unisphere server | Yes, if skipCertificateValidation is set to false | Empty| +| limits | This refers to various limits for Reverse Proxy | No | - | +| maxActiveRead | This refers to the maximum concurrent READ request handled by the reverse proxy.| No | 5 | +| maxActiveWrite | This refers to the maximum concurrent WRITE request handled by the reverse proxy.| No | 4 | +| maxOutStandingRead | This refers to maximum queued READ request when reverse proxy receives more than _maxActiveRead_ requests. | No | 50 | +| maxOutStandingWrite| This refers to maximum queued WRITE request when reverse proxy receives more than _maxActiveWrite_ requests.| No | 50 | | kubeletConfigDir | Specify kubelet config dir path | Yes | /var/lib/kubelet | | imagePullPolicy | The default pull policy is IfNotPresent which causes the Kubelet to skip pulling an image if it already exists. | Yes | IfNotPresent | | clusterPrefix | Prefix that is used during the creation of various masking-related entities (Storage Groups, Masking Views, Hosts, and Volume Identifiers) on the array. The value that you specify here must be unique. Ensure that no other CSI PowerMax driver is managing the same arrays that are configured with the same prefix. The maximum length for this prefix is three characters. | Yes | "ABC" | +| logLevel | CSI driver log level. Allowed values: "error", "warn"/"warning", "info", "debug". | Yes | "debug" | +| logFormat | CSI driver log format. Allowed values: "TEXT" or "JSON". | Yes | "TEXT" | +| kubeletConfigDir | kubelet config directory path. Ensure that the config.yaml file is present at this path. | Yes | /var/lib/kubelet | | defaultFsType | Used to set the default FS type for external provisioner | Yes | ext4 | | portGroups | List of comma-separated port group names. Any port group that is specified here must be present on all the arrays that the driver manages. | For iSCSI Only | "PortGroup1, PortGroup2, PortGroup3" | -| storageResourcePool | This parameter must mention one of the SRPs on the PowerMax array that the symmetrixID specifies. This value is used to create the default storage class. | Yes| "SRP_1" | -| serviceLevel | This parameter must mention one of the Service Levels on the PowerMax array. This value is used to create the default storage class. | Yes| "Bronze" | | skipCertificateValidation | Skip client-side TLS verification of Unisphere certificates | No | "True" | | transportProtocol | Set the preferred transport protocol for the Kubernetes cluster which helps the driver choose between FC and iSCSI when a node has both FC and iSCSI connectivity to a PowerMax array.| No | Empty| | nodeNameTemplate | Used to specify a template that will be used by the driver to create Host/IG names on the PowerMax array. To use the default naming convention, leave this value empty. | No | Empty| +| modifyHostName | Change any existing host names. When nodenametemplate is set, it changes the name to the specified format else it uses driver default host name format. | No | false | +| powerMaxDebug | Enables low level and http traffic logging between the CSI driver and Unisphere. Don't enable this unless asked to do so by the support team. | No | false | +| enableCHAP | Determine if the driver is going to configure SCSI node databases on the nodes with the CHAP credentials. If enabled, the CHAP secret must be provided in the credentials secret and set to the key "chapsecret" | No | false | +| fsGroupPolicy | Defines which FS Group policy mode to be used, Supported modes `None, File and ReadWriteOnceWithFSType` | No | "ReadWriteOnceWithFSType" | +| 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 | | **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" | @@ -202,25 +226,10 @@ CRDs should be configured during replication prepare stage with repctl as descri | tolerations | Add tolerations as per requirement | No | - | | nodeSelector | Add node selectors as per requirement | No | - | | healthMonitor.enabled | Allows to enable/disable volume health monitor | No | false | -| **global**| This section refers to configuration options for both CSI PowerMax Driver and Reverse Proxy | - | - | -|defaultCredentialsSecret| This secret name refers to:
1. The Unisphere credentials if the driver is installed without proxy or with proxy in Linked mode.
2. The proxy credentials if the driver is installed with proxy in StandAlone mode.
3. The default Unisphere credentials if credentialsSecret is not specified for a management server.| Yes | powermax-creds | -| storageArrays| This section refers to the list of arrays managed by the driver and Reverse Proxy in StandAlone mode.| - | - | -| storageArrayId | This refers to PowerMax Symmetrix ID.| Yes | 000000000001| -| endpoint | This refers to the URL of the Unisphere server managing _storageArrayId_. If authorization is enabled, endpoint should be the HTTPS localhost endpoint that the authorization sidecar will listen on| Yes if Reverse Proxy mode is _StandAlone_ | https://primary-1.unisphe.re:8443 | -| backupEndpoint | This refers to the URL of the backup Unisphere server managing _storageArrayId_, if Reverse Proxy is installed in _StandAlone_ mode. If authorization is enabled, backupEndpoint should be the HTTPS localhost endpoint that the authorization sidecar will listen on| No | https://backup-1.unisphe.re:8443 | -| managementServers | This section refers to the list of configurations for Unisphere servers managing powermax arrays.| - | - | -| endpoint | This refers to the URL of the Unisphere server. If authorization is enabled, endpoint should be the HTTPS localhost endpoint that the authorization sidecar will listen on | Yes | https://primary-1.unisphe.re:8443 | -| credentialsSecret| This refers to the user credentials for _endpoint_ | No| primary-1-secret| -| skipCertificateValidation | This parameter should be set to false if you want to do client-side TLS verification of Unisphere for PowerMax SSL certificates.| No | "True" | -| certSecret | The name of the secret in the same namespace containing the CA certificates of the Unisphere server | Yes, if skipCertificateValidation is set to false | Empty| -| limits | This refers to various limits for Reverse Proxy | No | - | -| maxActiveRead | This refers to the maximum concurrent READ request handled by the reverse proxy.| No | 5 | -| maxActiveWrite | This refers to the maximum concurrent WRITE request handled by the reverse proxy.| No | 4 | -| maxOutStandingRead | This refers to maximum queued READ request when reverse proxy receives more than _maxActiveRead_ requests. | No | 50 | -| maxOutStandingWrite| This refers to maximum queued WRITE request when reverse proxy receives more than _maxActiveWrite_ requests.| No | 50 | +| topologyControl.enabled | Allows to enable/disable topology control to filter topology keys | No | false | | **csireverseproxy**| This section refers to the configuration options for CSI PowerMax Reverse Proxy | - | - | | enabled | Boolean parameter which indicates if CSI PowerMax Reverse Proxy is going to be configured and installed.
**NOTE:** If not enabled, then there is no requirement to configure any of the following values. | No | "False" | -| image | This refers to the image of the CSI Powermax Reverse Proxy container. | Yes | dellemc/csipowermax-reverseproxy:v1.4.0 | +| image | This refers to the image of the CSI Powermax Reverse Proxy container. | Yes | dellemc/csipowermax-reverseproxy:v2.1.0 | | tlsSecret | This refers to the TLS secret of the Reverse Proxy Server.| Yes | csirevproxy-tls-secret | | deployAsSidecar | If set to _true_, the Reverse Proxy is installed as a sidecar to the driver's controller pod otherwise it is installed as a separate deployment.| Yes | "True" | | port | Specify the port number that is used by the NodePort service created by the CSI PowerMax Reverse Proxy installation| Yes | 2222 | @@ -230,14 +239,29 @@ CRDs should be configured during replication prepare stage with repctl as descri | sidecarProxyImage | Image for csm-authorization-sidecar. | No | " " | | proxyHost | Hostname of the csm-authorization server. | No | Empty | | skipCertificateValidation | A boolean that enables/disables certificate validation of the csm-authorization server. | No | true | +| **migration** | [Migration](../../../../replication/migrating-volumes) is an optional feature to enable migration between storage classes | - | - | +| enabled | A boolean that enables/disables migration feature. | No | false | +| image | Image for dell-csi-migrator sidecar. | No | " " | +| migrationPrefix | enables migration sidecar to read required information from the storage class fields | No | migration.storage.dell.com | +| **replication** | [Replication](../../../../replication/deployment) is an optional feature to enable replication & disaster recovery capabilities of PowerMax to Kubernetes clusters.| - | - | +| enabled | A boolean that enables/disables replication feature. | No | false | +| image | Image for dell-csi-replicator sidecar. | No | " " | +| replicationContextPrefix | enables side cars to read required information from the volume context | No | powermax | +| replicationPrefix | Determine if replication is enabled | No | replication.storage.dell.com | 8. Install the driver using `csi-install.sh` bash script by running `cd ../dell-csi-helm-installer && ./csi-install.sh --namespace powermax --values ../helm/my-powermax-settings.yaml` +9. Or you can also install the driver using standalone helm chart using the command `helm install --values my-powermax-settings.yaml --namespace powermax powermax ./csi-powermax` *Note:* - For detailed instructions on how to run the install scripts, see the readme document in the dell-csi-helm-installer folder. - There are a set of samples provided [here](#sample-values-file) to help you configure the driver with reverse proxy - 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.22.3-mirantis-1”, use below kubeVersion check in [helm Chart](https://github.com/dell/csi-powermax/blob/main/helm/csi-powermax/Chart.yaml) file. kubeVersion: “>= 1.22.0-0 < 1.25.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. ## Storage Classes @@ -251,15 +275,15 @@ Upgrading from an older version of the driver: The storage classes will be delet ## Volume Snapshot Class -Starting with CSI PowerMax v1.7, `dell-csi-helm-installer` will not create any Volume Snapshot Class during the driver installation. There is a sample Volume Snapshot Class manifest present in the _samples/volumesnapshotclass_ folder. Please use this sample to create a new Volume Snapshot Class to create Volume Snapshots. +Starting with CSI PowerMax v1.7.0, `dell-csi-helm-installer` will not create any Volume Snapshot Class during the driver installation. There is a sample Volume Snapshot Class manifest present in the _samples/volumesnapshotclass_ folder. Please use this sample to create a new Volume Snapshot Class to create Volume Snapshots. ### What happens to my existing Volume Snapshot Classes? -*Upgrading from CSI PowerMax v2.1 driver*: +*Upgrading from CSI PowerMax v2.1.0 driver*: The existing volume snapshot class will be retained. *Upgrading from an older version of the driver*: -It is strongly recommended to upgrade the earlier versions of CSI PowerMax to 1.7 or higher, before upgrading to 2.2. +It is strongly recommended to upgrade the earlier versions of CSI PowerMax to 1.7.0 or higher, before upgrading to 2.3.0. ## Sample values file The following sections have useful snippets from `values.yaml` file which provides more information on how to configure the CSI PowerMax driver along with CSI PowerMax ReverseProxy in various modes diff --git a/content/v1/csidriver/installation/helm/powerstore.md b/content/v1/csidriver/installation/helm/powerstore.md index 7b009d83a4..858b0385db 100644 --- a/content/v1/csidriver/installation/helm/powerstore.md +++ b/content/v1/csidriver/installation/helm/powerstore.md @@ -62,18 +62,25 @@ To do this, run the `systemctl enable --now iscsid` command. For information about configuring iSCSI, see _Dell PowerStore documentation_ on Dell Support. -### Set up the NVMe/TCP Initiator +### Set up the NVMe Initiator -If you want to use the protocol, set up the NVMe/TCP initiators as follows: +If you want to use the protocol, set up the NVMe initiators as follows: - The driver requires NVMe management command-line interface (nvme-cli) to use configure, edit, view or start the NVMe client and target. The nvme-cli utility provides a command-line and interactive shell option. The NVMe CLI tool is installed in the host using the below command. `sudo apt install nvme-cli` +**Requirements for NVMeTCP** - Modules including the nvme, nvme_core, nvme_fabrics, and nvme_tcp are required for using NVMe over Fabrics using TCP. Load the NVMe and NVMe-OF Modules using the below commands: ```bash modprobe nvme modprobe nvme_tcp ``` +**Requirements for NVMeFC** +- NVMeFC Zoning of the Host Bus Adapters (HBAs) to the Fibre Channel port must be done. + +*NOTE:* +- Do not load the nvme_tcp module for NVMeFC + ### Linux multipathing requirements Dell PowerStore supports Linux multipathing. Configure Linux multipathing before installing the CSI Driver for Dell PowerStore. @@ -110,7 +117,21 @@ Use [v5.0.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/ - [quay.io/k8scsi/csi-snapshotter:v4.0.x](https://quay.io/repository/k8scsi/csi-snapshotter?tag=v4.0.0&tab=tags) - The CSI external-snapshotter sidecar is still installed along with the driver and does not involve any extra configuration. -## Volume Health Monitoring +#### Installation example + +You can install CRDs and default snapshot controller by running these commands: +```bash +git clone https://github.com/kubernetes-csi/external-snapshotter/ +cd ./external-snapshotter +git checkout release- +kubectl kustomize client/config/crd | kubectl create -f - +kubectl -n kube-system kustomize deploy/kubernetes/snapshot-controller | kubectl create -f - +``` + +*NOTE:* +- It is recommended to use 5.0.x version of snapshotter/snapshot-controller. + +### Volume Health Monitoring Volume Health Monitoring feature is optional and by default this feature is disabled for drivers when installed via helm. To enable this feature, add the below block to the driver manifest before installing the driver. This ensures to install external @@ -142,21 +163,6 @@ node: enabled: false ``` -#### Installation example - -You can install CRDs and default snapshot controller by running following commands: -```bash -git clone https://github.com/kubernetes-csi/external-snapshotter/ -cd ./external-snapshotter -git checkout release- -kubectl kustomize client/config/crd | kubectl create -f - -kubectl -n kube-system kustomize deploy/kubernetes/snapshot-controller | kubectl create -f - -``` - -*NOTE:* -- It is recommended to use 5.0.x version of snapshotter/snapshot-controller. -- The CSI external-snapshotter sidecar is installed along with the driver and does not involve any extra configuration. - ### (Optional) Replication feature Requirements Applicable only if you decided to enable the Replication feature in `values.yaml` @@ -174,7 +180,7 @@ CRDs should be configured during replication prepare stage with repctl as descri ## Install the Driver **Steps** -1. Run `git clone -b v2.2.0 https://github.com/dell/csi-powerstore.git` to clone the git repository. +1. Run `git clone -b v2.3.0 https://github.com/dell/csi-powerstore.git` to clone the git repository. 2. Ensure that you have created namespace where you want to install the driver. You can run `kubectl create namespace csi-powerstore` to create a new one. "csi-powerstore" is just an example. You can choose any name for the namespace. But make sure to align to the same namespace during the whole installation. 3. Check `helm/csi-powerstore/driver-image.yaml` and confirm the driver image points to new image. @@ -184,16 +190,16 @@ CRDs should be configured during replication prepare stage with repctl as descri - *username*, *password*: defines credentials for connecting to array. - *skipCertificateValidation*: defines if we should use insecure connection or not. - *isDefault*: defines if we should treat the current array as a default. - - *blockProtocol*: defines what transport protocol we should use (FC, ISCSI, NVMeTCP, None, or auto). + - *blockProtocol*: defines what transport protocol we should use (FC, ISCSI, NVMeTCP, NVMeFC, None, or auto). - *nasName*: defines what NAS should be used for NFS volumes. - *nfsAcls* (Optional): defines permissions - POSIX mode bits or NFSv4 ACLs, to be set on NFS target mount directory. NFSv4 ACls are supported for NFSv4 shares on NFSv4 enabled NAS servers only. POSIX ACLs are not supported and only POSIX mode bits are supported for NFSv3 shares. Add more blocks similar to above for each PowerStore array if necessary. -5. Create storage classes using ones from `samples/storageclass` folder as an example and apply them to the Kubernetes cluster by running `kubectl create -f ` - +5. Create the secret by running ```kubectl create secret generic powerstore-config -n csi-powerstore --from-file=config=secret.yaml``` +6. Create storage classes using ones from `samples/storageclass` folder as an example and apply them to the Kubernetes cluster by running `kubectl create -f ` + > If you do not specify `arrayID` parameter in the storage class then the array that was specified as the default would be used for provisioning volumes. -6. Create the secret by running ```kubectl create secret generic powerstore-config -n csi-powerstore --from-file=config=secret.yaml``` 7. Copy the default values.yaml file `cd dell-csi-helm-installer && cp ../helm/csi-powerstore/values.yaml ./my-powerstore-settings.yaml` 8. Edit the newly created values file and provide values for the following parameters `vi my-powerstore-settings.yaml`: @@ -221,6 +227,7 @@ CRDs should be configured during replication prepare stage with repctl as descri | node.nodeSelector | Defines what nodes would be selected for pods of node daemonset | Yes | " " | | node.tolerations | Defines tolerations that would be applied to node daemonset | Yes | " " | | fsGroupPolicy | Defines which FS Group policy mode to be used, Supported modes `None, File and ReadWriteOnceWithFSType` | No | "ReadWriteOnceWithFSType" | +| controller.vgsnapshot.enabled | To enable or disable the volume group snapshot feature | No | "true" | 8. Install the driver using `csi-install.sh` bash script by running `./csi-install.sh --namespace csi-powerstore --values ./my-powerstore-settings.yaml` - After that the driver should be installed, you can check the condition of driver pods by running `kubectl get all -n csi-powerstore` @@ -257,7 +264,7 @@ There are samples storage class yaml files available under `samples/storageclass allowedTopologies: - matchLabelExpressions: - key: csi-powerstore.dellemc.com/12.34.56.78-iscsi -# replace "-iscsi" with "-fc", "-nvme" or "-nfs" at the end to use FC, NVMe or NFS enabled hosts +# replace "-iscsi" with "-fc", "-nvmetcp" or "-nvmefc" or "-nfs" at the end to use FC, NVMeTCP, NVMeFC or NFS enabled hosts # replace "12.34.56.78" with PowerStore endpoint IP values: - "true" @@ -272,15 +279,15 @@ kubectl create -f ## Volume Snapshot Class -Starting CSI PowerStore v1.4, `dell-csi-helm-installer` will not create any Volume Snapshot Class during the driver installation. There is a sample Volume Snapshot Class manifest present in the _samples/volumesnapshotclass_ folder. Please use this sample to create a new Volume Snapshot Class to create Volume Snapshots. +Starting CSI PowerStore v1.4.0, `dell-csi-helm-installer` will not create any Volume Snapshot Class during the driver installation. There is a sample Volume Snapshot Class manifest present in the _samples/volumesnapshotclass_ folder. Please use this sample to create a new Volume Snapshot Class to create Volume Snapshots. ### What happens to my existing Volume Snapshot Classes? -*Upgrading from CSI PowerStore v2.1 driver*: +*Upgrading from CSI PowerStore v2.1.0 driver*: The existing volume snapshot class will be retained. *Upgrading from an older version of the driver*: -It is strongly recommended to upgrade the earlier versions of CSI PowerStore to 1.4 or higher, before upgrading to 2.2. +It is strongly recommended to upgrade the earlier versions of CSI PowerStore to 1.4.0 or higher, before upgrading to 2.3.0. ## Dynamically update the powerstore secrets diff --git a/content/v1/csidriver/installation/helm/unity.md b/content/v1/csidriver/installation/helm/unity.md index 0db49246f5..38000db82b 100644 --- a/content/v1/csidriver/installation/helm/unity.md +++ b/content/v1/csidriver/installation/helm/unity.md @@ -1,14 +1,14 @@ --- -title: Unity +title: Unity XT description: > - Installing CSI Driver for Unity via Helm + Installing CSI Driver for Unity XT via Helm --- -The CSI Driver for Dell Unity can be deployed by using the provided Helm v3 charts and installation scripts on both Kubernetes and OpenShift platforms. For more detailed information on the installation scripts, review the script [documentation](https://github.com/dell/csi-unity/tree/master/dell-csi-helm-installer). +The CSI Driver for Dell Unity XT can be deployed by using the provided Helm v3 charts and installation scripts on both Kubernetes and OpenShift platforms. For more detailed information on the installation scripts, review the script [documentation](https://github.com/dell/csi-unity/tree/master/dell-csi-helm-installer). The controller section of the Helm chart installs the following components in a _Deployment_: -- CSI Driver for Unity +- CSI Driver for Unity XT - Kubernetes External Provisioner, which provisions the volumes - Kubernetes External Attacher, which attaches the volumes to the containers - Kubernetes External Snapshotter, which provides snapshot support @@ -17,29 +17,78 @@ The controller section of the Helm chart installs the following components in a The node section of the Helm chart installs the following component in a _DaemonSet_: -- CSI Driver for Unity +- CSI Driver for Unity XT - Kubernetes Node Registrar, which handles the driver registration ## Prerequisites -Before you install CSI Driver for Unity, verify the requirements that are mentioned in this topic are installed and configured. +Before you install CSI Driver for Unity XT, verify the requirements that are mentioned in this topic are installed and configured. ### Requirements * Install Kubernetes or OpenShift (see [supported versions](../../../../csidriver/#features-and-capabilities)) * Install Helm v3 -* To use FC protocol, the host must be zoned with Unity array and Multipath needs to be configured +* To use FC protocol, the host must be zoned with Unity XT array and Multipath needs to be configured * To use iSCSI protocol, iSCSI initiator utils packages needs to be installed and Multipath needs to be configured * To use NFS protocol, NFS utility packages needs to be installed * Mount propagation is enabled on container runtime that is being used +### Install Helm 3.0 + +Install Helm 3.0 on the master node before you install the CSI Driver for Dell Unity XT. + +**Steps** + +Run the `curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash` command to install Helm 3.0. + + +### Fibre Channel requirements + +Dell Unity XT supports Fibre Channel communication. If you use the Fibre Channel protocol, ensure that the +following requirement is met before you install the CSI Driver for Dell Unity XT: +- Zoning of the Host Bus Adapters (HBAs) to the Fibre Channel port must be done. + + +### Set up the iSCSI Initiator +The CSI Driver for Dell Unity XT supports iSCSI connectivity. + +If you use the iSCSI protocol, set up the iSCSI initiators as follows: +- Ensure that the iSCSI initiators are available on both Controller and Worker nodes. +- Kubernetes nodes must have access (network connectivity) to an iSCSI port on the Dell Unity XT array that + has IP interfaces. Manually create IP routes for each node that connects to the Dell Unity XT. +- All Kubernetes nodes must have the _iscsi-initiator-utils_ package for CentOS/RHEL or _open-iscsi_ package for Ubuntu installed, and the _iscsid_ service must be enabled and running. + To do this, run the `systemctl enable --now iscsid` command. +- Ensure that the unique initiator name is set in _/etc/iscsi/initiatorname.iscsi_. + +For more information about configuring iSCSI, see [Dell Host Connectivity guide](https://www.delltechnologies.com/asset/zh-tw/products/storage/technical-support/docu5128.pdf). + +### Linux multipathing requirements +Dell Unity XT supports Linux multipathing. Configure Linux multipathing before installing the CSI Driver for Dell +Unity XT. + +Set up Linux multipathing as follows: +- Ensure that all nodes have the _Device Mapper Multipathing_ package installed. +> You can install it by running `yum install device-mapper-multipath` on CentOS or `apt install multipath-tools` on Ubuntu. This package should create a multipath configuration file located in `/etc/multipath.conf`. +- Enable multipathing using the `mpathconf --enable --with_multipathd y` command. +- Enable `user_friendly_names` and `find_multipaths` in the `multipath.conf` file. +- Ensure that the multipath command for `multipath.conf` is available on all Kubernetes nodes. + +As a best practice, use the following options to help the operating system and the mulitpathing software detect path changes efficiently: +```text +path_grouping_policy multibus +path_checker tur +features "1 queue_if_no_path" +path_selector "round-robin 0" +no_path_retry 10 +``` + ## Install CSI Driver -Install CSI Driver for Unity using this procedure. +Install CSI Driver for Unity XT using this procedure. *Before you begin* - * You must have the downloaded files, including the Helm chart from the source [git repository](https://github.com/dell/csi-unity) with the command ```git clone -b v2.2.0 https://github.com/dell/csi-unity.git```, as a pre-requisite for running this procedure. + * You must have the downloaded files, including the Helm chart from the source [git repository](https://github.com/dell/csi-unity) with the command ```git clone -b v2.3.0 https://github.com/dell/csi-unity.git```, as a pre-requisite for running this procedure. * In the top-level dell-csi-helm-installer directory, there should be two scripts, `csi-install.sh` and `csi-uninstall.sh`. * Ensure _unity_ namespace exists in Kubernetes cluster. Use the `kubectl create namespace unity` command to create the namespace if the namespace is not present. @@ -47,19 +96,19 @@ Install CSI Driver for Unity using this procedure. Procedure -1. Collect information from the Unity Systems like Unique ArrayId, IP address, username, and password. Make a note of the value for these parameters as they must be entered in the `secret.yaml` and `myvalues.yaml` file. +1. Collect information from the Unity XT Systems like Unique ArrayId, IP address, username, and password. Make a note of the value for these parameters as they must be entered in the `secret.yaml` and `myvalues.yaml` file. **Note**: - * ArrayId corresponds to the serial number of Unity array. - * Unity Array username must have role as Storage Administrator to be able to perform CRUD operations. + * ArrayId corresponds to the serial number of Unity XT array. + * Unity XT Array username must have role as Storage Administrator to be able to perform CRUD operations. * If the user is using complex K8s version like "v1.21.3-mirantis-1", use below kubeVersion check in helm/csi-unity/Chart.yaml file. - kubeVersion: ">= 1.21.0-0 < 1.24.0-0" + kubeVersion: ">= 1.21.0-0 < 1.25.0-0" 2. Copy the `helm/csi-unity/values.yaml` into a file named `myvalues.yaml` in the same directory of `csi-install.sh`, to customize settings for installation. 3. Edit `myvalues.yaml` to set the following parameters for your installation: - The following table lists the primary configurable parameters of the Unity driver chart and their default values. More detailed information can be found in the [`values.yaml`](https://github.com/dell/csi-unity/blob/master/helm/csi-unity/values.yaml) file in this repository. + The following table lists the primary configurable parameters of the Unity XT driver chart and their default values. More detailed information can be found in the [`values.yaml`](https://github.com/dell/csi-unity/blob/master/helm/csi-unity/values.yaml) file in this repository. | Parameter | Description | Required | Default | | --------- | ----------- | -------- |-------- | @@ -127,12 +176,12 @@ Procedure 5. Prepare the `secret.yaml` for driver configuration. The following table lists driver configuration parameters for multiple storage arrays. - | Parameter | Description | Required | Default | - | ------------------------- | ----------------------------------- | -------- |-------- | - | storageArrayList.username | Username for accessing Unity system | true | - | - | storageArrayList.password | Password for accessing Unity system | true | - | - | storageArrayList.endpoint | REST API gateway HTTPS endpoint Unity system| true | - | - | storageArrayList.arrayId | ArrayID for Unity system | true | - | + | Parameter | Description | Required | Default | + | ------------------------- | ---------------------------------------------- | -------- |-------- | + | storageArrayList.username | Username for accessing Unity XT system | true | - | + | storageArrayList.password | Password for accessing Unity XT system | true | - | + | storageArrayList.endpoint | REST API gateway HTTPS endpoint Unity XT system| true | - | + | storageArrayList.arrayId | ArrayID for Unity XT system | true | - | | storageArrayList.skipCertificateValidation | "skipCertificateValidation " determines if the driver is going to validate unisphere certs while connecting to the Unisphere REST API interface. If it is set to false, then a secret unity-certs has to be created with an X.509 certificate of CA which signed the Unisphere certificate. | true | true | | storageArrayList.isDefault| An array having isDefault=true or isDefaultArray=true will be considered as the default array when arrayId is not specified in the storage class. This parameter should occur only once in the list. | true | - | @@ -227,7 +276,7 @@ Procedure -7. Run the `./csi-install.sh --namespace unity --values ./myvalues.yaml` command to proceed with the installation. +7. Run the `./csi-install.sh --namespace unity --values ./myvalues.yaml` command to proceed with the installation using bash script. A successful installation must display messages that look similar to the following samples: ``` @@ -294,13 +343,27 @@ Procedure At the end of the script unity-controller Deployment and DaemonSet unity-node will be ready, execute command `kubectl get pods -n unity` to get the status of the pods and you will see the following: - * One or more Unity Controller (based on controllerCount) with 5/5 containers ready, and status displayed as Running. - * Agent pods with 2/2 containers and the status displayed as Running. - + * One or more Unity XT Controllers (based on controllerCount) with 5/5 containers ready, and status displayed as Running. + * Agent pods with 2/2 containers and the status displayed as Running. + + **Note**: + To install nightly or latest csi driver build using bash script use this command: + `/csi-install.sh --namespace unity --values ./myvalues.yaml --version nightly/latest` + +8. You can also install the driver using standalone helm chart by running helm install command, first using the --dry-run flag to + confirm various parameters are as desired. Once the parameters are validated, run the command without the --dry-run flag. + Note: This example assumes that the user is at repo root helm folder i.e csi-unity/helm. + + **Syntax**:`helm install --dry-run --values --namespace `
+ `` - namespace of the driver installation.
+ `` - unity in case of unity-creds and unity-certs-0 secrets.
+ `` - Path of the helm directory.
+ e.g: helm install --dry-run --values ./csi-unity/myvalues.yaml --namespace unity unity ./csi-unity + ## Certificate validation for Unisphere REST API calls -This topic provides details about setting up the certificate validation for the CSI Driver for Dell Unity. +This topic provides details about setting up the Dell Unity XT certificate validation for the CSI Driver. *Before you begin* @@ -334,15 +397,15 @@ If the Unisphere certificate is self-signed or if you are using an embedded Unis ## Volume Snapshot Class -For CSI Driver for Unity version 1.6 and later, `dell-csi-helm-installer` does not create any Volume Snapshot classes as part of the driver installation. A wide set of annotated storage class manifests have been provided in the `csi-unity/samples/volumesnapshotclass/` folder. Use these samples to create new Volume Snapshot to provision storage. +A wide set of annotated storage class manifests have been provided in the [csi-unity/samples/volumesnapshotclass/](https://github.com/dell/csi-unity/tree/main/samples/volumesnapshotclass) folder. Use these samples to create new Volume Snapshot to provision storage. ### What happens to my existing Volume Snapshot Classes? -*Upgrading from CSI Unity v2.1 driver*: +*Upgrading from CSI Unity XT v2.1.0 driver*: The existing volume snapshot class will be retained. *Upgrading from an older version of the driver*: -It is strongly recommended to upgrade the earlier versions of CSI Unity to 1.6 or higher, before upgrading to 2.2. +It is strongly recommended to upgrade the earlier versions of CSI Unity XT to v1.6.0 or higher, before upgrading to v2.3.0. ## Storage Classes @@ -350,7 +413,7 @@ Storage Classes are an essential Kubernetes construct for Storage provisioning. A wide set of annotated storage class manifests have been provided in the [samples/storageclass](https://github.com/dell/csi-unity/tree/master/samples/storageclass) folder. Use these samples to create new storage classes to provision storage. -For CSI Driver for Unity, a wide set of annotated storage class manifests have been provided in the `csi-unity/samples/storageclass` folder. Use these samples to create new storage classes to provision storage. +For the Unity XT CSI Driver, a wide set of annotated storage class manifests have been provided in the `csi-unity/samples/storageclass` folder. Use these samples to create new storage classes to provision storage. ### What happens to my existing storage classes? @@ -393,9 +456,7 @@ User can update secret using the following command: ``` **Note**: Updating unity-certs-x secrets is a manual process, unlike unity-creds. Users have to re-install the driver in case of updating/adding the SSL certificates or changing the certSecretCount parameter. -## Dynamic Logging Configuration - -This feature is introduced in CSI Driver for unity version 2.0.0. +## Dynamic Logging Configuration ### Helm based installation As part of driver installation, a ConfigMap with the name `unity-config-params` is created, which contains an attribute `CSI_LOG_LEVEL` which specifies the current log level of CSI driver. diff --git a/content/v1/csidriver/installation/offline/_index.md b/content/v1/csidriver/installation/offline/_index.md index 07b0000bdb..127d35c937 100644 --- a/content/v1/csidriver/installation/offline/_index.md +++ b/content/v1/csidriver/installation/offline/_index.md @@ -12,7 +12,7 @@ This includes the following drivers: * [PowerMax](https://github.com/dell/csi-powermax) * [PowerScale](https://github.com/dell/csi-powerscale) * [PowerStore](https://github.com/dell/csi-powerstore) -* [Unity](https://github.com/dell/csi-unity) +* [Unity XT](https://github.com/dell/csi-unity) As well as the Dell CSI Operator * [Dell CSI Operator](https://github.com/dell/dell-csi-operator) @@ -65,7 +65,7 @@ The resulting offline bundle file can be copied to another machine, if necessary For example, here is the output of a request to build an offline bundle for the Dell CSI Operator: ``` -git clone -b v1.7.0 https://github.com/dell/dell-csi-operator.git +git clone -b v1.8.0 https://github.com/dell/dell-csi-operator.git ``` ``` cd dell-csi-operator/scripts diff --git a/content/v1/csidriver/installation/operator/_index.md b/content/v1/csidriver/installation/operator/_index.md index be62fc2dec..68113a0e90 100644 --- a/content/v1/csidriver/installation/operator/_index.md +++ b/content/v1/csidriver/installation/operator/_index.md @@ -50,21 +50,21 @@ If you have installed an old version of the `dell-csi-operator` which was availa #### Full list of CSI Drivers and versions supported by the Dell CSI Operator | CSI Driver | Version | ConfigVersion | Kubernetes Version | OpenShift Version | | ------------------ | --------- | -------------- | -------------------- | --------------------- | -| CSI PowerMax | 2.0.0 | v2.0.0 | 1.20, 1.21, 1.22 | 4.6 EUS, 4.7, 4.8 | | CSI PowerMax | 2.1.0 | v2.1.0 | 1.20, 1.21, 1.22 | 4.8, 4.8 EUS, 4.9 | | CSI PowerMax | 2.2.0 | v2.2.0 | 1.21, 1.22, 1.23 | 4.8, 4.8 EUS, 4.9 | -| CSI PowerFlex | 2.0.0 | v2.0.0 | 1.20, 1.21, 1.22 | 4.6 EUS, 4.7, 4.8 | +| CSI PowerMax | 2.3.0 | v2.3.0 | 1.22, 1.23, 1.24 | 4.9, 4.10, 4.10 EUS | | CSI PowerFlex | 2.1.0 | v2.1.0 | 1.20, 1.21, 1.22 | 4.8, 4.8 EUS, 4.9 | | CSI PowerFlex | 2.2.0 | v2.2.0 | 1.21, 1.22, 1.23 | 4.8, 4.8 EUS, 4.9 | -| CSI PowerScale | 2.0.0 | v2.0.0 | 1.20, 1.21, 1.22 | 4.6 EUS, 4.7, 4.8 | +| CSI PowerFlex | 2.3.0 | v2.3.0 | 1.22, 1.23, 1.24 | 4.9, 4.10, 4.10 EUS | | CSI PowerScale | 2.1.0 | v2.1.0 | 1.20, 1.21, 1.22 | 4.8, 4.8 EUS, 4.9 | | CSI PowerScale | 2.2.0 | v2.2.0 | 1.21, 1.22, 1.23 | 4.8, 4.8 EUS, 4.9 | -| CSI Unity | 2.0.0 | v2.0.0 | 1.20, 1.21, 1.22 | 4.6 EUS, 4.7, 4.8 | -| CSI Unity | 2.1.0 | v2.1.0 | 1.20, 1.21, 1.22 | 4.8, 4.8 EUS, 4.9 | -| CSI Unity | 2.2.0 | v2.2.0 | 1.21, 1.22, 1.23 | 4.8, 4.8 EUS, 4.9 | -| CSI PowerStore | 2.0.0 | v2.0.0 | 1.20, 1.21, 1.22 | 4.6 EUS, 4.7, 4.8 | +| CSI PowerScale | 2.3.0 | v2.3.0 | 1.22, 1.23, 1.24 | 4.9, 4.10, 4.10 EUS | +| CSI Unity XT | 2.1.0 | v2.1.0 | 1.20, 1.21, 1.22 | 4.8, 4.8 EUS, 4.9 | +| CSI Unity XT | 2.2.0 | v2.2.0 | 1.21, 1.22, 1.23 | 4.8, 4.8 EUS, 4.9 | +| CSI Unity XT | 2.3.0 | v2.3.0 | 1.22, 1.23, 1.24 | 4.9, 4.10, 4.10 EUS | | CSI PowerStore | 2.1.0 | v2.1.0 | 1.20, 1.21, 1.22 | 4.8, 4.8 EUS, 4.9 | | CSI PowerStore | 2.2.0 | v2.2.0 | 1.21, 1.22, 1.23 | 4.8, 4.8 EUS, 4.9 | +| CSI PowerStore | 2.3.0 | v2.3.0 | 1.22, 1.23, 1.24 | 4.9, 4.10, 4.10 EUS |
@@ -97,7 +97,7 @@ $ kubectl create configmap dell-csi-operator-config --from-file config.tar.gz -n #### Steps >**Skip step 1 for "offline bundle installation" and continue using the workspace created by untar of dell-csi-operator-bundle.tar.gz.** -1. Clone and checkout the required dell-csi-operator version using `git clone -b v1.7.0 https://github.com/dell/dell-csi-operator.git`. +1. Clone and checkout the required dell-csi-operator version using `git clone -b v1.8.0 https://github.com/dell/dell-csi-operator.git`. 2. cd dell-csi-operator 3. Run `bash scripts/install.sh` to install the operator. >NOTE: Dell CSI Operator version 1.4.0 and higher would install to the 'dell-csi-operator' namespace by default. @@ -126,7 +126,7 @@ For installation of the supported drivers, a `CustomResource` has to be created ### Pre-requisites for upstream Kubernetes Clusters On upstream Kubernetes clusters, make sure to install * VolumeSnapshot CRDs - * On clusters running v1.21,v1.22 & v1.23, make sure to install v1 VolumeSnapshot CRDs + * On clusters running v1.22,v1.23 & v1.24, make sure to install v1 VolumeSnapshot CRDs * External Volume Snapshot Controller with the correct version ### Pre-requisites for Red Hat OpenShift Clusters @@ -144,7 +144,7 @@ metadata: spec: config: ignition: - version: 2.2.0 + version: 3.2.0 systemd: units: - name: "iscsid.service" @@ -187,7 +187,7 @@ metadata: spec: config: ignition: - version: 2.2.0 + version: 3.2.0 storage: files: - contents: @@ -257,9 +257,9 @@ If you are installing the latest versions of the CSI drivers, the driver control The CSI Drivers installed by the Dell CSI Operator can be updated like any Kubernetes resource. This can be achieved in various ways which include – * Modifying the installation directly via `kubectl edit` - For e.g. - If the name of the installed unity driver is unity, then run + For example - If the name of the installed Unity XT driver is unity, then run ``` - # Replace driver-namespace with the namespace where the Unity driver is installed + # Replace driver-namespace with the namespace where the Unity XT driver is installed $ kubectl edit csiunity/unity -n ``` and modify the installation. The usual fields to edit are the version of drivers and sidecars and the env variables. @@ -274,7 +274,7 @@ The below notes explain some of the general items to take care of. 1. If you are trying to upgrade the CSI driver from an older version, make sure to modify the _configVersion_ field if required. ```yaml driver: - configVersion: v2.2.0 + configVersion: v2.3.0 ``` 2. Volume Health Monitoring feature is optional and by default this feature is disabled for drivers when installed via operator. To enable this feature, we will have to modify the below block while upgrading the driver.To get the volume health state add @@ -308,13 +308,13 @@ The below notes explain some of the general items to take care of. name: snapshotter - args: - --monitor-interval=60s - image: gcr.io/k8s-staging-sig-storage/csi-external-health-monitor-controller:v0.4.0 + image: gcr.io/k8s-staging-sig-storage/csi-external-health-monitor-controller:v0.5.0 imagePullPolicy: IfNotPresent name: external-health-monitor - image: k8s.gcr.io/sig-storage/csi-attacher:v3.4.0 imagePullPolicy: IfNotPresent name: attacher - - image: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.5.0 + - image: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.5.1 imagePullPolicy: IfNotPresent name: registrar - image: k8s.gcr.io/sig-storage/csi-resizer:v1.4.0 @@ -348,7 +348,7 @@ data: * Adding (supported) environment variables * Updating the image of the driver ## Limitations -* The Dell CSI Operator can't manage any existing driver installed using Helm charts. If you already have installed one of the DellEMC CSI driver in your cluster and want to use the operator based deployment, uninstall the driver and then redeploy the driver following the installation procedure described above +* The Dell CSI Operator can't manage any existing driver installed using Helm charts. If you already have installed one of the Dell CSI drivers in your cluster and want to use the operator based deployment, uninstall the driver and then redeploy the driver following the installation procedure described. * The Dell CSI Operator is not fully compliant with the OperatorHub React UI elements and some of the Custom Resource fields may show up as invalid or unsupported in the OperatorHub GUI. To get around this problem, use kubectl/oc commands to get details about the Custom Resource(CR). This issue will be fixed in the upcoming releases of the Dell CSI Operator diff --git a/content/v1/csidriver/installation/operator/isilon.md b/content/v1/csidriver/installation/operator/isilon.md index 00e4c69924..6b5fcef159 100644 --- a/content/v1/csidriver/installation/operator/isilon.md +++ b/content/v1/csidriver/installation/operator/isilon.md @@ -116,6 +116,7 @@ User can query for CSI-PowerScale driver using the following command: | --------- | ----------- | -------- |-------- | | dnsPolicy | Determines the DNS Policy of the Node service | Yes | ClusterFirstWithHostNet | | fsGroupPolicy | Defines which FS Group policy mode to be used, Supported modes `None, File and ReadWriteOnceWithFSType` | No | "ReadWriteOnceWithFSType" | + | X_CSI_MAX_PATH_LIMIT | Defines the maximum length of path for a volume | No | 192 | | ***Common parameters for node and controller*** | | CSI_ENDPOINT | The UNIX socket address for handling gRPC calls | No | /var/run/csi/csi.sock | | X_CSI_ISI_SKIP_CERTIFICATE_VALIDATION | Specifies whether SSL security needs to be enabled for communication between PowerScale and CSI Driver | No | true | @@ -150,7 +151,7 @@ User can query for CSI-PowerScale driver using the following command: 3. Also, snapshotter and resizer sidecars are not optional to choose, it comes default with Driver installation. ## Volume Health Monitoring -This feature is introduced in CSI Driver for unity version 2.1.0. +This feature is introduced in CSI Driver for PowerScale version 2.1.0. ### Operator based installation diff --git a/content/v1/csidriver/installation/operator/powerflex.md b/content/v1/csidriver/installation/operator/powerflex.md index ea959f4639..73350f7aa5 100644 --- a/content/v1/csidriver/installation/operator/powerflex.md +++ b/content/v1/csidriver/installation/operator/powerflex.md @@ -14,6 +14,7 @@ There are sample manifests provided which can be edited to do an easy installati Kubernetes Operators make it easy to deploy and manage the entire lifecycle of complex Kubernetes applications. Operators use Custom Resource Definitions (CRD) which represents the application and use custom controllers to manage them. ### Prerequisites: +- If multipath is configured, ensure CSI-PowerFlex volumes are blacklisted by multipathd. See [troubleshooting section](../../../troubleshooting/powerflex.md) for details #### SDC Deployment for Operator - This feature deploys the sdc kernel modules on all nodes with the help of an init container. - For non-supported versions of the OS also do the manual SDC deployment steps given below. Refer to https://hub.docker.com/r/dellemc/sdc for supported versions. @@ -144,6 +145,7 @@ For detailed PowerFlex installation procedure, see the _Dell PowerFlex Deploymen | Parameter | Description | Required | Default | | --------- | ----------- | -------- |-------- | | replicas | Controls the number of controller pods you deploy. If the number of controller pods is greater than the number of available nodes, excess pods will become stay in a pending state. Defaults are 2 which allows for Controller high availability. | Yes | 2 | + | fsGroupPolicy | Defines which FS Group policy mode to be used, Supported modes `None, File and ReadWriteOnceWithFSType` | No | "ReadWriteOnceWithFSType" | | ***Common parameters for node and controller*** | | X_CSI_VXFLEXOS_ENABLELISTVOLUMESNAPSHOT | Enable list volume operation to include snapshots (since creating a volume from a snap actually results in a new snap) | No | false | | X_CSI_VXFLEXOS_ENABLESNAPSHOTCGDELETE | Enable this to automatically delete all snapshots in a consistency group when a snap in the group is deleted | No | false | @@ -151,20 +153,21 @@ For detailed PowerFlex installation procedure, see the _Dell PowerFlex Deploymen | X_CSI_ALLOW_RWO_MULTI_POD_ACCESS | 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. | No | false | 5. Execute the `kubectl create -f ` command to create PowerFlex custom resource. This command will deploy the CSI-PowerFlex driver. - Example CR for PowerFlex Driver - ```yaml - apiVersion: storage.dell.com/v1 +```yaml +apiVersion: storage.dell.com/v1 kind: CSIVXFlexOS metadata: name: test-vxflexos namespace: test-vxflexos spec: driver: - configVersion: v2.2.0 + configVersion: v2.3.0 replicas: 1 dnsPolicy: ClusterFirstWithHostNet forceUpdate: false + fsGroupPolicy: File common: - image: "dellemc/csi-vxflexos:v2.2.0" + image: "dellemc/csi-vxflexos:v2.3.0" imagePullPolicy: IfNotPresent envs: - name: X_CSI_VXFLEXOS_ENABLELISTVOLUMESNAPSHOT diff --git a/content/v1/csidriver/installation/operator/powermax.md b/content/v1/csidriver/installation/operator/powermax.md index 781eb18fe7..7c1e13c246 100644 --- a/content/v1/csidriver/installation/operator/powermax.md +++ b/content/v1/csidriver/installation/operator/powermax.md @@ -16,6 +16,27 @@ Kubernetes Operators make it easy to deploy and manage the entire lifecycle of c ### Prerequisite +#### Fibre Channel Requirements + +CSI Driver for Dell PowerMax supports Fibre Channel communication. Ensure that the following requirements are met before you install CSI Driver: +- Zoning of the Host Bus Adapters (HBAs) to the Fibre Channel port director must be completed. +- Ensure that the HBA WWNs (initiators) appear on the list of initiators that are logged into the array. +- If the number of volumes that will be published to nodes is high, then configure the maximum number of LUNs for your HBAs on each node. See the appropriate HBA document to configure the maximum number of LUNs. + +#### iSCSI Requirements + +The CSI Driver for Dell PowerMax supports iSCSI connectivity. These requirements are applicable for the nodes that use iSCSI initiator to connect to the PowerMax arrays. + +Set up the iSCSI initiators as follows: +- All Kubernetes nodes must have the _iscsi-initiator-utils_ package installed. +- Ensure that the iSCSI initiators are available on all the nodes where the driver node plugin will be installed. +- Kubernetes nodes should have access (network connectivity) to an iSCSI director on the Dell PowerMax array that has IP interfaces. Manually create IP routes for each node that connects to the Dell PowerMax if required. +- Ensure that the iSCSI initiators on the nodes are not a part of any existing Host (Initiator Group) on the Dell PowerMax array. +- The CSI Driver needs the port group names containing the required iSCSI director ports. These port groups must be set up on each Dell PowerMax array. All the port group names supplied to the driver must exist on each Dell PowerMax with the same name. + +For more information about configuring iSCSI, see [Dell Host Connectivity guide](https://www.delltechnologies.com/asset/zh-tw/products/storage/technical-support/docu5128.pdf). + + #### Create secret for client-side TLS verification (Optional) Create a secret named powermax-certs in the namespace where the CSI PowerMax driver will be installed. This is an optional step and is only required if you are setting the env variable X_CSI_POWERMAX_SKIP_CERTIFICATE_VALIDATION to false. See the detailed documentation on how to create this secret [here](../../helm/powermax#certificate-validation-for-unisphere-rest-api-calls). @@ -57,6 +78,7 @@ Create a secret named powermax-certs in the namespace where the CSI PowerMax dri | Parameter | Description | Required | Default | | --------- | ----------- | -------- |-------- | | replicas | Controls the number of controller Pods you deploy. If controller Pods are greater than the number of available nodes, excess Pods will become stuck in pending. The default is 2 which allows for Controller high availability. | Yes | 2 | + | fsGroupPolicy | Defines which FS Group policy mode to be used, Supported modes `None, File and ReadWriteOnceWithFSType` | No | "ReadWriteOnceWithFSType" | | ***Common parameters for node and controller*** | | X_CSI_K8S_CLUSTER_PREFIX | Define a prefix that is appended to all resources created in the array; unique per K8s/CSI deployment; max length - 3 characters | Yes | XYZ | | X_CSI_POWERMAX_ENDPOINT | IP address of the Unisphere for PowerMax | Yes | https://0.0.0.0:8443 | @@ -65,12 +87,56 @@ Create a secret named powermax-certs in the namespace where the CSI PowerMax dri | X_CSI_MANAGED_ARRAYS | List of comma-separated array ID(s) which will be managed by the driver | Yes | - | | X_CSI_POWERMAX_PROXY_SERVICE_NAME | Name of CSI PowerMax ReverseProxy service. Leave blank if not using reverse proxy | No | - | | X_CSI_GRPC_MAX_THREADS | Number of concurrent grpc requests allowed per client | No | 4 | + | X_CSI_IG_MODIFY_HOSTNAME | Change any existing host names. When nodenametemplate is set, it changes the name to the specified format else it uses driver default host name format. | No | false | + | X_CSI_IG_NODENAME_TEMPLATE | Provide a template for the CSI driver to use while creating the Host/IG on the array for the nodes in the cluster. It is of the format a-b-c-%foo%-xyz where foo will be replaced by host name of each node in the cluster. | No | - | | X_CSI_POWERMAX_DRIVER_NAME | Set custom CSI driver name. For more details on this feature see the related [documentation](../../../features/powermax/#custom-driver-name) | No | - | | X_CSI_HEALTH_MONITOR_ENABLED | Enable/Disable health monitor of CSI volumes from Controller and Node plugin. Provides details of volume status, usage and volume condition. As a prerequisite, external-health-monitor sidecar section should be uncommented in samples which would install the sidecar | No | false | | ***Node parameters***| | X_CSI_POWERMAX_ISCSI_ENABLE_CHAP | Enable ISCSI CHAP authentication. For more details on this feature see the related [documentation](../../../features/powermax/#iscsi-chap) | No | false | + | X_CSI_TOPOLOGY_CONTROL_ENABLED | Enable/Disabe topology control. It filters out arrays, associated transport protocol available to each node and creates topology keys based on any such user input. | No | false | 5. Execute the following command to create the PowerMax custom resource:`kubectl create -f `. The above command will deploy the CSI-PowerMax driver. +**Note** - If CSI driver is getting installed using OCP UI , create these two configmaps manually using the command `oc create -f ` +1. Configmap name powermax-config-params + ```yaml + apiVersion: v1 + kind: ConfigMap + metadata: + name: powermax-config-params + namespace: test-powermax + data: + driver-config-params.yaml: | + CSI_LOG_LEVEL: "debug" + CSI_LOG_FORMAT: "JSON" + ``` + 2. Configmap name node-topology-config + ```yaml + kind: ConfigMap + metadata: + name: node-topology-config + namespace: test-powermax + data: + topologyConfig.yaml: | + allowedConnections: + - nodeName: "node1" + rules: + - "000000000001:FC" + - "000000000002:FC" + - nodeName: "*" + rules: + - "000000000002:FC" + deniedConnections: + - nodeName: "node2" + rules: + - "000000000002:*" + - nodeName: "node3" + rules: + - "*:*" + + ``` + + + ### CSI PowerMax ReverseProxy CSI PowerMax ReverseProxy is an optional component that can be installed with the CSI PowerMax driver. For more details on this feature see the related [documentation](../../../features/powermax#csi-powermax-reverse-proxy). @@ -113,7 +179,7 @@ metadata: namespace: test-powermax # <- Set the namespace to where you will install the CSI PowerMax driver spec: # Image for CSI PowerMax ReverseProxy - image: dellemc/csipowermax-reverseproxy:v1.4.0 # <- CSI PowerMax Reverse Proxy image + image: dellemc/csipowermax-reverseproxy:v2.1.0 # <- CSI PowerMax Reverse Proxy image imagePullPolicy: Always # TLS secret which contains SSL certificate and private key for the Reverse Proxy server tlsSecret: csirevproxy-tls-secret @@ -199,8 +265,8 @@ metadata: namespace: test-powermax spec: driver: - # Config version for CSI PowerMax v2.2.0 driver - configVersion: v2.2.0 + # Config version for CSI PowerMax v2.3.0 driver + configVersion: v2.3.0 # replica: Define the number of PowerMax controller nodes # to deploy to the Kubernetes release # Allowed values: n, where n > 0 @@ -209,8 +275,8 @@ spec: dnsPolicy: ClusterFirstWithHostNet forceUpdate: false common: - # Image for CSI PowerMax driver v2.2.0 - image: dellemc/csi-powermax:v2.2.0 + # Image for CSI PowerMax driver v2.3.0 + image: dellemc/csi-powermax:v2.3.0 # imagePullPolicy: Policy to determine if the image should be pulled prior to starting the container. # Allowed values: # Always: Always pull the image. @@ -304,6 +370,14 @@ spec: # Default value: false - name: X_CSI_HEALTH_MONITOR_ENABLED value: "false" + # X_CSI_TOPOLOGY_CONTROL_ENABLED provides a way to filter topology keys on a node based on array and transport protocol + # if enabled, user can create custom topology keys by editing node-topology-config configmap. + # Allowed values: + # true: enable the filtration based on config map + # false: disable the filtration based on config map + # Default value: false + - name: X_CSI_TOPOLOGY_CONTROL_ENABLED + value: "false" --- apiVersion: v1 kind: ConfigMap @@ -314,13 +388,57 @@ data: driver-config-params.yaml: | CSI_LOG_LEVEL: "debug" CSI_LOG_FORMAT: "JSON" - +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: node-topology-config + namespace: test-powermax +data: + topologyConfig.yaml: | + # allowedConnections contains a list of (node, array and protocol) info for user allowed configuration + # For any given storage array ID and protocol on a Node, topology keys will be created for just those pair and + # every other configuration is ignored + # Please refer to the doc website about a detailed explanation of each configuration parameter + # and the various possible inputs + allowedConnections: + # nodeName: Name of the node on which user wants to apply given rules + # Allowed values: + # nodeName - name of a specific node + # * - all the nodes + # Examples: "node1", "*" + - nodeName: "node1" + # rules is a list of 'StorageArrayID:TransportProtocol' pair. ':' is required between both value + # Allowed values: + # StorageArrayID: + # - SymmetrixID : for specific storage array + # - "*" :- for all the arrays connected to the node + # TransportProtocol: + # - FC : Fibre Channel protocol + # - ISCSI : iSCSI protocol + # - "*" - for all the possible Transport Protocol + # Examples: "000000000001:FC", "000000000002:*", "*:FC", "*:*" + rules: + - "000000000001:FC" + - "000000000002:FC" + - nodeName: "*" + rules: + - "000000000002:FC" + # deniedConnections contains a list of (node, array and protocol) info for denied configurations by user + # For any given storage array ID and protocol on a Node, topology keys will be created for every other configuration but + # not these input pairs + deniedConnections: + - nodeName: "node2" + rules: + - "000000000002:*" + - nodeName: "node3" + rules: + - "*:*" ``` Note: - - `dell-csi-operator` does not support the installation of CSI PowerMax ReverseProxy as a sidecar to the controller Pod. This facility is - only present with `dell-csi-helm-installer`. + - `dell-csi-operator` does not support the installation of CSI PowerMax ReverseProxy as a sidecar to the controller Pod. This facility is only present with `dell-csi-helm-installer`. - `Kubelet config dir path` is not yet configurable in case of Operator based driver installation. - Also, snapshotter and resizer sidecars are not optional to choose, it comes default with Driver installation. @@ -332,7 +450,7 @@ Volume Health Monitoring feature is optional and by default this feature is disa To enable this feature, set `X_CSI_HEALTH_MONITOR_ENABLED` to `true` in the driver manifest under controller and node section. Also, install the `external-health-monitor` from `sideCars` section for controller plugin. To get the volume health state `value` under controller should be set to true as seen below. To get the volume stats `value` under node should be set to true. - +``` # Install the 'external-health-monitor' sidecar accordingly. # Allowed values: # true: enable checking of health condition of CSI volumes @@ -351,4 +469,40 @@ To get the volume health state `value` under controller should be set to true as # Default value: false - name: X_CSI_HEALTH_MONITOR_ENABLED value: "true" -``` \ No newline at end of file +``` + +## Support for custom topology keys + +This feature is introduced in CSI Driver for PowerMax version 2.3.0. + +### Operator based installation + +Support for custom topology keys is optional and by default this feature is disabled for drivers when installed via operator. + +X_CSI_TOPOLOGY_CONTROL_ENABLED provides a way to filter topology keys on a node based on array and transport protocol. If enabled, user can create custom topology keys by editing node-topology-config configmap. + +1. To enable this feature, set `X_CSI_TOPOLOGY_CONTROL_ENABLED` to `true` in the driver manifest under node section. + +``` + # X_CSI_TOPOLOGY_CONTROL_ENABLED provides a way to filter topology keys on a node based on array and transport protocol + # if enabled, user can create custom topology keys by editing node-topology-config configmap. + # Allowed values: + # true: enable the filtration based on config map + # false: disable the filtration based on config map + # Default value: false + - name: X_CSI_TOPOLOGY_CONTROL_ENABLED + value: "false" +``` +2. Edit the sample config map "node-topology-config" present in [sample CRD](#sample--crd-file-for--powermax) with appropriate values: + + | Parameter | Description | + |-----------|--------------| + | allowedConnections | List of node, array and protocol info for user allowed configuration | + | allowedConnections.nodeName | Name of the node on which user wants to apply given rules | + | allowedConnections.rules | List of StorageArrayID:TransportProtocol pair | + | deniedConnections | List of node, array and protocol info for user denied configuration | + | deniedConnections.nodeName | Name of the node on which user wants to apply given rules | + | deniedConnections.rules | List of StorageArrayID:TransportProtocol pair | +
+ + >Note: Name of the configmap should always be `node-topology-config`. diff --git a/content/v1/csidriver/installation/operator/powerstore.md b/content/v1/csidriver/installation/operator/powerstore.md index ae60025943..d2b74a2896 100644 --- a/content/v1/csidriver/installation/operator/powerstore.md +++ b/content/v1/csidriver/installation/operator/powerstore.md @@ -30,7 +30,7 @@ Kubernetes Operators make it easy to deploy and manage the entire lifecycle of c password: "password" # password for connecting to API skipCertificateValidation: true # indicates if client side validation of (management)server's certificate can be skipped isDefault: true # treat current array as a default (would be used by storage classes without arrayID parameter) - blockProtocol: "auto" # what SCSI transport protocol use on node side (FC, ISCSI, NVMeTCP, None, or auto) + blockProtocol: "auto" # what SCSI transport protocol use on node side (FC, ISCSI, NVMeTCP, NVMeFC, None, or auto) nasName: "nas-server" # what NAS should be used for NFS volumes nfsAcls: "0777" # (Optional) defines permissions - POSIX mode bits or NFSv4 ACLs, to be set on NFS target mount directory. # NFSv4 ACls are supported for NFSv4 shares on NFSv4 enabled NAS servers only. POSIX ACLs are not supported and only POSIX mode bits are supported for NFSv3 shares. @@ -69,13 +69,13 @@ metadata: namespace: test-powerstore spec: driver: - configVersion: v2.2.0 + configVersion: v2.3.0 replicas: 2 dnsPolicy: ClusterFirstWithHostNet forceUpdate: false fsGroupPolicy: ReadWriteOnceWithFSType common: - image: "dellemc/csi-powerstore:v2.2.0" + image: "dellemc/csi-powerstore:v2.3.0" imagePullPolicy: IfNotPresent envs: - name: X_CSI_POWERSTORE_NODE_NAME_PREFIX @@ -139,6 +139,7 @@ data: | X_CSI_NFS_ACLS | Defines permissions - POSIX mode bits or NFSv4 ACLs, to be set on NFS target mount directory. | No | "0777" | | ***Node parameters*** | | X_CSI_POWERSTORE_ENABLE_CHAP | Set to true if you want to enable iSCSI CHAP feature | No | false | + 6. Execute the following command to create PowerStore custom resource:`kubectl create -f `. The above command will deploy the CSI-PowerStore driver. - After that the driver should be installed, you can check the condition of driver pods by running `kubectl get all -n ` @@ -177,7 +178,7 @@ volume stats value under node should be set to true. ## Dynamic Logging Configuration -This feature is introduced in CSI Driver for unity version 2.0.0. +This feature is introduced in CSI Driver for PowerStore version 2.0.0. ### Operator based installation As part of driver installation, a ConfigMap with the name `powerstore-config-params` is created using the manifest located in the sample file. This ConfigMap contains attributes `CSI_LOG_LEVEL` which specifies the current log level of the CSI driver and `CSI_LOG_FORMAT` which specifies the current log format of the CSI driver. To set the default/initial log level user can set this field during driver installation. diff --git a/content/v1/csidriver/installation/operator/unity.md b/content/v1/csidriver/installation/operator/unity.md index 93c0bb0f2f..89e8b9a699 100644 --- a/content/v1/csidriver/installation/operator/unity.md +++ b/content/v1/csidriver/installation/operator/unity.md @@ -1,24 +1,24 @@ --- -title: Unity +title: Unity XT description: > - Installing CSI Driver for Unity via Operator + Installing CSI Driver for Unity XT via Operator --- -## CSI Driver for Unity +## CSI Driver for Unity XT ### Pre-requisites -#### Create secret to store Unity credentials +#### Create secret to store Unity XT credentials Create a namespace called unity (it can be any user-defined name; But commands in this section assumes that the namespace is unity) Prepare the secret.yaml for driver configuration. The following table lists driver configuration parameters for multiple storage arrays. | Parameter | Description | Required | Default | | --------- | ----------- | -------- |-------- | -| username | Username for accessing Unity system | true | - | -| password | Password for accessing Unity system | true | - | -| restGateway | REST API gateway HTTPS endpoint Unity system| true | - | -| arrayId | ArrayID for Unity system | true | - | +| username | Username for accessing Unity XT system | true | - | +| password | Password for accessing Unity XT system | true | - | +| restGateway | REST API gateway HTTPS endpoint Unity XT system| true | - | +| arrayId | ArrayID for Unity XT system | true | - | | isDefaultArray | An array having isDefaultArray=true is for backward compatibility. This parameter should occur once in the list. | true | - | Ex: secret.yaml @@ -73,21 +73,21 @@ Execute command: ```kubectl create -f empty-secret.yaml``` Users should configure the parameters in CR. The following table lists the primary configurable parameters of the Unity driver and their default values: - | Parameter | Description | Required | Default | - | ----------------------------------------------- | ------------------------------------------------------------ | -------- | --------------------- | - | ***Common parameters for node and controller*** | | | | - | CSI_ENDPOINT | Specifies the HTTP endpoint for Unity. | No | /var/run/csi/csi.sock | - | X_CSI_UNITY_ALLOW_MULTI_POD_ACCESS | Flag to enable multiple pods use the same pvc on the same node with RWO access mode | No | false | - | ***Controller parameters*** | | | | - | X_CSI_MODE | Driver starting mode | No | controller | - | X_CSI_UNITY_AUTOPROBE | To enable auto probing for driver | No | true | - | X_CSI_HEALTH_MONITOR_ENABLED | Enable/Disable health monitor of CSI volumes from Controller plugin | No | | - | ***Node parameters*** | | | | - | X_CSI_MODE | Driver starting mode | No | node | - | X_CSI_ISCSI_CHROOT | Path to which the driver will chroot before running any iscsi commands. | No | /noderoot | - | X_CSI_HEALTH_MONITOR_ENABLED | Enable/Disable health monitor of CSI volumes from Node plugin | No | | | - -### Example CR for Unity + | Parameter | Description | Required | Default | + | ----------------------------------------------- | --------------------------------------------------------------------------- | -------- | --------------------- | + | ***Common parameters for node and controller*** | | | | + | CSI_ENDPOINT | Specifies the HTTP endpoint for Unity XT. | No | /var/run/csi/csi.sock | + | X_CSI_UNITY_ALLOW_MULTI_POD_ACCESS | Flag to enable multiple pods use same pvc on same node with RWO access mode | No | false | + | ***Controller parameters*** | | | | + | X_CSI_MODE | Driver starting mode | No | controller | + | X_CSI_UNITY_AUTOPROBE | To enable auto probing for driver | No | true | + | X_CSI_HEALTH_MONITOR_ENABLED | Enable/Disable health monitor of CSI volumes from Controller plugin | No | | + | ***Node parameters*** | | | | + | X_CSI_MODE | Driver starting mode | No | node | + | X_CSI_ISCSI_CHROOT | Path to which the driver will chroot before running any iscsi commands | No | /noderoot | + | X_CSI_HEALTH_MONITOR_ENABLED | Enable/Disable health monitor of CSI volumes from Node plugin | No | | + +### Example CR for Unity XT Refer samples from [here](https://github.com/dell/dell-csi-operator/tree/master/samples). Below is an example CR: ```yaml apiVersion: storage.dell.com/v1 @@ -97,12 +97,12 @@ metadata: namespace: test-unity spec: driver: - configVersion: v2.2.0 + configVersion: v2.3.0 replicas: 2 dnsPolicy: ClusterFirstWithHostNet forceUpdate: false common: - image: "dellemc/csi-unity:v2.2.0" + image: "dellemc/csi-unity:v2.3.0" imagePullPolicy: IfNotPresent sideCars: - name: provisioner @@ -115,8 +115,8 @@ spec: controller: envs: - # X_CSI_ENABLE_VOL_HEALTH_MONITOR: Enable/Disable health monitor of CSI volumes from Controller plugin. Provides details of volume status and volume condition. - # As a prerequisite, external-health-monitor sidecar section should be uncommented in samples which would install the sidecar + # X_CSI_HEALTH_MONITOR_ENABLED: Enable/Disable health monitor of CSI volumes from Controller plugin - volume condition. + # Install the 'external-health-monitor' sidecar accordingly. # Allowed values: # true: enable checking of health condition of CSI volumes # false: disable checking of health condition of CSI volumes @@ -130,16 +130,16 @@ spec: # Leave as blank to consider all nodes # Allowed values: map of key-value pairs # Default value: None - # Examples: - # node-role.kubernetes.io/master: "" nodeSelector: - # node-role.kubernetes.io/master: "" + # Uncomment if nodes you wish to use have the node-role.kubernetes. io/control-plane taint + # node-role.kubernetes.io/control-plane: "" # tolerations: Define tolerations for the controllers, if required. # Leave as blank to install controller on worker nodes # Default value: None tolerations: - # - key: "node-role.kubernetes.io/master" + # Uncomment if nodes you wish to use have the node-role.kubernetes.io/control-plane taint + # - key: "node-role.kubernetes.io/control-plane" # operator: "Exists" # effect: "NoSchedule" @@ -158,18 +158,26 @@ spec: # Leave as blank to consider all nodes # Allowed values: map of key-value pairs # Default value: None - # Examples: - # node-role.kubernetes.io/master: "" nodeSelector: - # node-role.kubernetes.io/master: "" + # Uncomment if nodes you wish to use have the node-role.kubernetes.io/control-plane taint + # node-role.kubernetes.io/control-plane: "" - # tolerations: Define tolerations for the controllers, if required. - # Leave as blank to install controller on worker nodes + # tolerations: Define tolerations for the node daemonset, if required. # Default value: None tolerations: - # - key: "node-role.kubernetes.io/master" + # Uncomment if nodes you wish to use have the node-role.kubernetes.io/control-plane taint + # - key: "node-role.kubernetes.io/control-plane" # operator: "Exists" # effect: "NoSchedule" + # - key: "node.kubernetes.io/memory-pressure" + # operator: "Exists" + # effect: "NoExecute" + # - key: "node.kubernetes.io/disk-pressure" + # operator: "Exists" + # effect: "NoExecute" + # - key: "node.kubernetes.io/network-unavailable" + # operator: "Exists" + # effect: "NoExecute" --- apiVersion: v1 @@ -188,8 +196,6 @@ data: ## Dynamic Logging Configuration -This feature is introduced in CSI Driver for unity version 2.0.0. - ### Operator based installation As part of driver installation, a ConfigMap with the name `unity-config-params` is created using the manifest located in the sample file. This ConfigMap contains an attribute `CSI_LOG_LEVEL` which specifies the current log level of the CSI driver. To set the default/initial log level user can set this field during driver installation. @@ -199,12 +205,12 @@ kubectl edit configmap -n unity unity-config-params ``` **Note** : - 1. Prior to CSI Driver for unity version 2.0.0, the log level was allowed to be updated dynamically through `logLevel` attribute in the secret object. + 1. The log level is not allowed to be updated dynamically through `logLevel` attribute in the secret object. 2. "Kubelet config dir path" is not yet configurable in case of Operator based driver installation. 3. Also, snapshotter and resizer sidecars are not optional to choose, it comes default with Driver installation. ## Volume Health Monitoring -This feature is introduced in CSI Driver for unity version 2.1.0. +This feature is introduced in CSI Driver for Unity XT version v2.1.0. ### Operator based installation diff --git a/content/v1/csidriver/installation/test/unity.md b/content/v1/csidriver/installation/test/unity.md index 95998ad511..db32d53c98 100644 --- a/content/v1/csidriver/installation/test/unity.md +++ b/content/v1/csidriver/installation/test/unity.md @@ -1,10 +1,10 @@ --- -title: Test Unity CSI Driver -linktitle: Unity -description: Tests to validate Unity CSI Driver installation +title: Test Unity XT CSI Driver +linktitle: Unity XT +description: Tests to validate Unity XT CSI Driver installation --- -## Test deploying a simple Pod and Pvc with Unity storage +## Test deploying a simple Pod and Pvc with Unity XT storage In the repository, a simple test manifest exists that creates three different PersistentVolumeClaims using default NFS and iSCSI and FC storage classes and automatically mounts them to the pod. **Steps** @@ -30,7 +30,7 @@ You can find all the created resources in `test-unity` namespace. ## Support for SLES 15 SP2 -The CSI Driver for Dell Unity requires the following set of packages installed on all worker nodes that run on SLES 15 SP2. +The CSI Driver for Dell Unity XT requires the following set of packages installed on all worker nodes that run on SLES 15 SP2. - open-iscsi **open-iscsi is required in order to make use of iSCSI protocol for provisioning** - nfs-utils **nfs-utils is required in order to make use of NFS protocol for provisioning** diff --git a/content/v1/csidriver/partners/operator.md b/content/v1/csidriver/partners/operator.md index d60c9e6459..1b4a5fffd2 100644 --- a/content/v1/csidriver/partners/operator.md +++ b/content/v1/csidriver/partners/operator.md @@ -12,7 +12,7 @@ Users can install the Dell CSI Operator via [Operatorhub.io](https://operatorhub ![](../ophub1.png) -2. Click DellEMC Operator. +2. Click Dell Operator. ![](../ophub2.png) diff --git a/content/v1/csidriver/partners/tanzu.md b/content/v1/csidriver/partners/tanzu.md index 393f5b398f..33c7aafeaa 100644 --- a/content/v1/csidriver/partners/tanzu.md +++ b/content/v1/csidriver/partners/tanzu.md @@ -3,7 +3,7 @@ title: "VMware Tanzu" Description: "About VMware Tanzu basic" --- -The CSI Driver for Dell Unity and PowerScale supports VMware Tanzu and deployment of these Tanzu clusters is done using the VMware Tanzu supervisor cluster and supervisor namespace. +The CSI Driver for Dell Unity XT, PowerScale and PowerStore supports VMware Tanzu. The deployment of these Tanzu clusters is done using the VMware Tanzu supervisor cluster and the supervisor namespace. Currently, VMware Tanzu with normal configuration(without NAT) supports Kubernetes 1.20 and higher. The CSI driver can be installed on this cluster using Helm. Installation of CSI drivers in Tanzu via Operator has not been qualified. diff --git a/content/v1/csidriver/release/operator.md b/content/v1/csidriver/release/operator.md index 4451adff9d..9696d83067 100644 --- a/content/v1/csidriver/release/operator.md +++ b/content/v1/csidriver/release/operator.md @@ -3,13 +3,14 @@ title: Operator description: Release notes for Dell CSI Operator --- -## Release Notes - Dell CSI Operator 1.7.0 +## Release Notes - Dell CSI Operator 1.8.0 ->**Note:** There will be a delay in certification of Dell CSI Operator 1.7.0 and it will not be available for download from the Red Hat OpenShift certified catalog right away. The operator will still be available for download from the Red Hat OpenShift Community Catalog soon after the 1.7.0 release. +>**Note:** There will be a delay in certification of Dell CSI Operator 1.8.0 and it will not be available for download from the Red Hat OpenShift certified catalog right away. The operator will still be available for download from the Red Hat OpenShift Community Catalog soon after the 1.8.0 release. ### New Features/Changes -- Added support for Kubernetes 1.23. +- Added support for Kubernetes 1.24. +- Added support for OpenShift 4.10. ### Fixed Issues There are no fixed issues in this release. diff --git a/content/v1/csidriver/release/powerflex.md b/content/v1/csidriver/release/powerflex.md index eabc638190..b77837c82e 100644 --- a/content/v1/csidriver/release/powerflex.md +++ b/content/v1/csidriver/release/powerflex.md @@ -3,21 +3,23 @@ title: PowerFlex description: Release notes for PowerFlex CSI driver --- -## Release Notes - CSI PowerFlex v2.2.0 +## Release Notes - CSI PowerFlex v2.4.0 ### New Features/Changes -- Added support for Kubernetes 1.23. -- Added support for Amazon Elastic Kubernetes Service Anywhere. +- Added InstallationID annotation for volume attributes. +- Added optional parameter protectionDomain to storageclass. +- RHEL 8.6 support added ### Fixed Issues -There are no fixed issues in this release. +- Enhancements to volume group snapshotter. ### Known Issues | Issue | Workaround | |-------|------------| | Delete namespace that has PVCs and pods created with the driver. The External health monitor sidecar crashes as a result of this operation.| Deleting the namespace deletes the PVCs first and then removes the pods in the namespace. This brings a condition where pods exist without their PVCs and causes the external-health-monitor sidecar to crash. This is a known issue and has been reported at https://github.com/kubernetes-csi/external-health-monitor/issues/100| +| When a node goes down, the block volumes attached to the node cannot be attached to another node | This is a known issue and has been reported at https://github.com/kubernetes-csi/external-attacher/issues/215. Workaround:
1. Force delete the pod running on the node that went down
2. Delete the volumeattachment to the node that went down.
Now the volume can be attached to the new node. | ### Note: diff --git a/content/v1/csidriver/release/powermax.md b/content/v1/csidriver/release/powermax.md index 5739dd04ee..20163037c0 100644 --- a/content/v1/csidriver/release/powermax.md +++ b/content/v1/csidriver/release/powermax.md @@ -3,12 +3,19 @@ title: PowerMax description: Release notes for PowerMax CSI driver --- -## Release Notes - CSI PowerMax v2.2.0 +## Release Notes - CSI PowerMax v2.3.0 ### New Features/Changes -- Added support for new access modes in CSI Spec 1.5. -- Added support for Volume Health Monitoring. -- Added support for Kubernetes 1.23. +- Updated deprecated StorageClass parameter fsType with csi.storage.k8s.io/fstype. +- Added support for Standalone Helm Charts. +- Removed beta volumesnapshotclass sample files. +- Added mapping of PV/PVC to namespace. +- Added support to configure fsGroupPolicy. +- Added support to filter topology keys based on user inputs. +- Added support for SRDF Metro group sharing multiple namespaces. +- Added support for Kubernetes 1.24. +- Added support for OpenShift 4.10. +- Added support to convert replicated volume to non-replicated volume and vice versa for Sync and Async modes. ### Fixed Issues There are no fixed issues in this release. @@ -21,8 +28,9 @@ There are no fixed issues in this release. | Getting initiators list fails with context deadline error | The following error can occur during the driver installation if a large number of initiators are present on the array. There is no workaround for this but it can be avoided by deleting stale initiators on the array| | Unable to update Host: A problem occurred modifying the host resource | This issue occurs when the nodes do not have unique hostnames or when an IP address/FQDN with same sub-domains are used as hostnames. The workaround is to use unique hostnames or FQDN with unique sub-domains| | GetSnapVolumeList fails with context deadline error | The following error can occur if a large number of snapshots are present on the array. There is no workaround for this but it can be avoided by deleting unused snapshots on the array| +| When a node goes down, the block volumes attached to the node cannot be attached to another node | This is a known issue and has been reported at https://github.com/kubernetes-csi/external-attacher/issues/215. Workaround:
1. Force delete the pod running on the node that went down
2. Delete the volumeattachment to the node that went down.
Now the volume can be attached to the new node | +| After expanding file system volume , new size is not getting reflected inside the container | This is a known issue and has been reported at https://github.com/dell/csm/issues/378 . Workaround : Remount the volumes
1. Edit the replica count as 0 in application StatefulSet
2. Change the replica count as 1 for same StatefulSet. | ### Note: -- Support for Kubernetes alpha features like Volume Health Monitoring and RWOP (ReadWriteOncePod) access mode introduced in the release will not be available in Openshift environment as Openshift doesn't support enabling of alpha features for Production Grade clusters. -- Expansion of volumes and cloning of volumes are not supported for replicated volumes. +- Support for Kubernetes alpha features like Volume Health Monitoring and RWOP (ReadWriteOncePod) access mode will not be available in Openshift environment as Openshift doesn't support enabling of alpha features for Production Grade clusters. diff --git a/content/v1/csidriver/release/powerscale.md b/content/v1/csidriver/release/powerscale.md index ff2a38a5eb..1a14c62bb6 100644 --- a/content/v1/csidriver/release/powerscale.md +++ b/content/v1/csidriver/release/powerscale.md @@ -3,18 +3,19 @@ title: PowerScale description: Release notes for PowerScale CSI driver --- -## Release Notes - CSI Driver for PowerScale v2.2.0 +## Release Notes - CSI Driver for PowerScale v2.3.0 ### New Features/Changes -- Added support for Replication. -- Added support for Kubernetes 1.23. -- Added support to configure fsGroupPolicy. -- Added support for session based authentication along with basic authentication for PowerScale. +- Removed beta volumesnapshotclass sample files. +- Added support for Kubernetes 1.24. +- Added support to increase volume path limit. +- Added support for OpenShift 4.10. +- Added support for CSM Resiliency sidecar via Helm. ### Fixed Issues -- CSI Driver installation fails with the error message "error getting FQDN". +There are no fixed issues in this release. ### Known Issues | Issue | Resolution or workaround, if known | diff --git a/content/v1/csidriver/release/powerstore.md b/content/v1/csidriver/release/powerstore.md index c624c9c509..f0bbb59e8a 100644 --- a/content/v1/csidriver/release/powerstore.md +++ b/content/v1/csidriver/release/powerstore.md @@ -3,14 +3,16 @@ title: PowerStore description: Release notes for PowerStore CSI driver --- -## Release Notes - CSI PowerStore v2.2.0 +## Release Notes - CSI PowerStore v2.3.0 ### New Features/Changes -- Added support for NVMe/TCP protocol. -- Added support for Kubernetes 1.23. -- Added support to configure fsGroupPolicy. -- Added support for configuring permissions using POSIX mode bits and NFSv4 ACLs on NFS mount directory. +- Support Volume Group Snapshots. +- Removed beta volumesnapshotclass sample files. +- Support Configurable Volume Attributes. +- Added support for Kubernetes 1.24. +- Added support for OpenShift 4.10. +- Added support for NVMe/FC protocol. ### Fixed Issues @@ -22,6 +24,8 @@ There are no fixed issues in this release. |--------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Delete namespace that has PVCs and pods created with the driver. The External health monitor sidecar crashes as a result of this operation | Deleting the namespace deletes the PVCs first and then removes the pods in the namespace. This brings a condition where pods exist without their PVCs and causes the external-health-monitor sidecar to crash. This is a known issue and has been reported at https://github.com/kubernetes-csi/external-health-monitor/issues/100
| | fsGroupPolicy may not work as expected without root privileges for NFS only
https://github.com/kubernetes/examples/issues/260 | To get the desired behavior set "allowRoot: "true" in the storage class parameter | +| If the NVMeFC pod is not getting created and the host looses the ssh connection, causing the driver pods to go to error state | remove the nvme_tcp module from the host incase of NVMeFC connection | +| When a node goes down, the block volumes attached to the node cannot be attached to another node | This is a known issue and has been reported at https://github.com/kubernetes-csi/external-attacher/issues/215. Workaround:
1. Force delete the pod running on the node that went down
2. Delete the volumeattachment to the node that went down.
Now the volume can be attached to the new node. | ### Note: diff --git a/content/v1/csidriver/release/unity.md b/content/v1/csidriver/release/unity.md index 87517e3703..701d0778d4 100644 --- a/content/v1/csidriver/release/unity.md +++ b/content/v1/csidriver/release/unity.md @@ -1,25 +1,27 @@ --- -title: Unity -description: Release notes for Unity CSI driver +title: Unity XT +description: Release notes for Unity XT CSI driver --- -## Release Notes - CSI Unity v2.2.0 +## Release Notes - CSI Unity XT v2.3.0 ### New Features/Changes -- Added support for Kubernetes 1.23. -- Added support for Standalone Helm Charts. +- Removed beta volumesnapshotclass sample files. +- Added support for Kubernetes 1.24. +- Added support for OpenShift 4.10. ### Fixed Issues - +CSM Resiliency: Occasional failure unmounting Unity volume for raw block devices via iSCSI. ### Known Issues | Issue | Workaround | |-------|------------| | Topology-related node labels are not removed automatically. | Currently, when the driver is uninstalled, topology-related node labels are not getting removed automatically. There is an open issue in the Kubernetes to fix this. Until the fix is released, remove the labels manually after the driver un-installation using command **kubectl label node - - ...** Example: **kubectl label node csi-unity.dellemc.com/array123-iscsi-** Note: there must be - at the end of each label to remove it.| -| NFS Clone - Resize of the snapshot is not supported by Unity Platform.| Currently, when the driver takes a clone of NFS volume, it succeeds. But when the user tries to resize the NFS volumesnapshot, the driver will throw an error. The user should never try to resize the cloned NFS volume.| +| NFS Clone - Resize of the snapshot is not supported by Unity XT Platform, however the user should never try to resize the cloned NFS volume.| Currently, when the driver takes a clone of NFS volume, it succeeds but if the user tries to resize the NFS volumesnapshot, the driver will throw an error.| | Delete namespace that has PVCs and pods created with the driver. The External health monitor sidecar crashes as a result of this operation.| Deleting the namespace deletes the PVCs first and then removes the pods in the namespace. This brings a condition where pods exist without their PVCs and causes the external-health-monitor sidecar to crash. This is a known issue and has been reported at https://github.com/kubernetes-csi/external-health-monitor/issues/100| +| When a node goes down, the block volumes attached to the node cannot be attached to another node | This is a known issue and has been reported at https://github.com/kubernetes-csi/external-attacher/issues/215. Workaround:
1. Force delete the pod running on the node that went down
2. Delete the VolumeAttachment to the node that went down.
Now the volume can be attached to the new node. | ### Note: diff --git a/content/v1/csidriver/troubleshooting/powerflex.md b/content/v1/csidriver/troubleshooting/powerflex.md index 5699c2ec98..373605cc8e 100644 --- a/content/v1/csidriver/troubleshooting/powerflex.md +++ b/content/v1/csidriver/troubleshooting/powerflex.md @@ -20,6 +20,8 @@ description: Troubleshooting PowerFlex Driver | The controller pod is stuck and producing errors such as" `Failed to watch *v1.VolumeSnapshotContent: failed to list *v1.VolumeSnapshotContent: the server could not find the requested resource (get volumesnapshotcontents.snapshot.storage.k8s.io)` | Make sure that v1 snapshotter CRDs and v1 snapclass are installed, and not v1beta1, which is no longer supported. | | Driver install or upgrade fails because of an incompatible Kubernetes version, even though the version seems to be within the range of compatibility. For example: `Error: UPGRADE FAILED: chart requires kubeVersion: >= 1.21.0 <= 1.23.0 which is incompatible with Kubernetes V1.21.11-mirantis-1` | If you are using an extended Kubernetes version, please see the helm Chart at `helm/csi-vxflexos/Chart.yaml` and use the alternate `kubeVersion` check that is provided in the comments. *Please note* that this is not meant to be used to enable the use of pre-release alpha and beta versions, which is not supported. | | Volume metrics are missing | Enable [Volume Health Monitoring](../../features/powerflex#volume-health-monitoring) | +| When a node goes down, the block volumes attached to the node cannot be attached to another node | This is a known issue and has been reported at https://github.com/kubernetes-csi/external-attacher/issues/215. Workaround:
1. Force delete the pod running on the node that went down
2. Delete the volumeattachment to the node that went down.
Now the volume can be attached to the new node. | +| CSI-PowerFlex volumes cannot mount; are being recognized as multipath devices | CSI-PowerFlex does not support multipath; to fix:
1. Remove any multipath mapping involving a powerflex volume with `multipath -f `
2. Blacklist CSI-PowerFlex volumes in multipath config file | >*Note*: `vxflexos-controller-*` is the controller pod that acquires leader lease diff --git a/content/v1/csidriver/troubleshooting/powermax.md b/content/v1/csidriver/troubleshooting/powermax.md index e1e7587300..76cc3d4b23 100644 --- a/content/v1/csidriver/troubleshooting/powermax.md +++ b/content/v1/csidriver/troubleshooting/powermax.md @@ -9,3 +9,5 @@ description: Troubleshooting PowerMax Driver | `kubectl describe pod powermax-controller- –n ` indicates that the driver image could not be loaded | You may need to put an insecure-registries entry in `/etc/docker/daemon.json` or log in to the docker registry | | `kubectl logs powermax-controller- –n driver` logs show that the driver cannot authenticate | Check your secret’s username and password | | `kubectl logs powermax-controller- –n driver` logs show that the driver failed to connect to the U4P because it could not verify the certificates | Check the powermax-certs secret and ensure it is not empty or it has the valid certificates| +|Driver install or upgrade fails because of an incompatible Kubernetes version, even though the version seems to be within the range of compatibility. For example: Error: UPGRADE FAILED: chart requires kubeVersion: >= 1.22.0 < 1.25.0 which is incompatible with Kubernetes V1.22.11-mirantis-1 | If you are using an extended Kubernetes version, please see the [helm Chart](https://github.com/dell/csi-powermax/blob/main/helm/csi-powermax/Chart.yaml) and use the alternate kubeVersion check that is provided in the comments. Please note that this is not meant to be used to enable the use of pre-release alpha and beta versions, which is not supported.| +| When a node goes down, the block volumes attached to the node cannot be attached to another node | 1. Force delete the pod running on the node that went down
2. Delete the volumeattachment to the node that went down.
Now the volume can be attached to the new node. | diff --git a/content/v1/csidriver/troubleshooting/powerstore.md b/content/v1/csidriver/troubleshooting/powerstore.md index 2de1b8de02..62c1622262 100644 --- a/content/v1/csidriver/troubleshooting/powerstore.md +++ b/content/v1/csidriver/troubleshooting/powerstore.md @@ -9,3 +9,6 @@ description: Troubleshooting PowerStore Driver | The `kubectl logs -n csi-powerstore powerstore-node-` driver logs show that the driver can't connect to PowerStore API. | Check if you've created a secret with correct credentials | |Installation of the driver on Kubernetes supported versions fails with the following error:
```Error: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind "VolumeSnapshotClass" in version "snapshot.storage.k8s.io/v1"```|Kubernetes v1.21/v1.22/v1.23 requires v1 version of snapshot CRDs to be created in cluster, see the [Volume Snapshot Requirements](../../installation/helm/powerstore/#optional-volume-snapshot-requirements)| | If PVC is not getting created and getting the following error in PVC description:
```failed to provision volume with StorageClass "powerstore-iscsi": rpc error: code = Internal desc = : Unknown error:```| Check if you've created a secret with correct credentials | +| If the NVMeFC pod is not getting created and the host looses the ssh connection, causing the driver pods to go to error state | remove the nvme_tcp module from the host incase of NVMeFC connection | +| When a node goes down, the block volumes attached to the node cannot be attached to another node | 1. Force delete the pod running on the node that went down
2. Delete the volumeattachment to the node that went down.
Now the volume can be attached to the new node. | +| If the pod creation for NVMe takes time when the connections between the host and the array are more than 2 and considerable volumes are mounted on the host | Reduce the number of connections between the host and the array to 2. | \ No newline at end of file diff --git a/content/v1/csidriver/troubleshooting/unity.md b/content/v1/csidriver/troubleshooting/unity.md index 447b218737..9905215390 100644 --- a/content/v1/csidriver/troubleshooting/unity.md +++ b/content/v1/csidriver/troubleshooting/unity.md @@ -1,16 +1,16 @@ --- -title: Unity -description: Troubleshooting Unity Driver +title: Unity XT +description: Troubleshooting Unity XT Driver --- --- | Symptoms | Prevention, Resolution or Workaround | | --- | --- | | When you run the command `kubectl describe pods unity-controller- –n unity`, the system indicates that the driver image could not be loaded. | You may need to put an insecure-registries entry in `/etc/docker/daemon.json` or login to the docker registry | -| The `kubectl logs -n unity unity-node-` driver logs show that the driver can't connect to Unity - Authentication failure. | Check if you have created a secret with correct credentials | +| The `kubectl logs -n unity unity-node-` driver logs show that the driver can't connect to Unity XT - Authentication failure. | Check if you have created a secret with correct credentials | | `fsGroup` specified in pod spec is not reflected in files or directories at mounted path of volume. | fsType of PVC must be set for fsGroup to work. fsType can be specified while creating a storage class. For NFS protocol, fsType can be specified as `nfs`. fsGroup doesn't work for ephemeral inline volumes. | | Dynamic array detection will not work in Topology based environment | Whenever a new array is added or removed, then the driver controller and node pod should be restarted with command **kubectl get pods -n unity --no-headers=true \| awk '/unity-/{print $1}'\| xargs kubectl delete -n unity pod** when **topology-based storage classes are used**. For dynamic array addition without topology, the driver will detect the newly added or removed arrays automatically| | If source PVC is deleted when cloned PVC exists, then source PVC will be deleted in the cluster but on array, it will still be present and marked for deletion. | All the cloned PVC should be deleted in order to delete the source PVC from the array. | | PVC creation fails on a fresh cluster with **iSCSI** and **NFS** protocols alone enabled with error **failed to provision volume with StorageClass "unity-iscsi": error generating accessibility requirements: no available topology found**. | This is because iSCSI initiator login takes longer than the node pod startup time. This can be overcome by bouncing the node pods in the cluster using the below command the driver pods with **kubectl get pods -n unity --no-headers=true \| awk '/unity-/{print $1}'\| xargs kubectl delete -n unity pod** | -| Driver install or upgrade fails because of an incompatible Kubernetes version, even though the version seems to be within the range of compatibility. For example: `Error: UPGRADE FAILED: chart requires kubeVersion: >= 1.21.0 <= 1.23.0 which is incompatible with Kubernetes V1.21.11-mirantis-1` | If you are using an extended Kubernetes version, please see the helm Chart at `helm/csi-unity/Chart.yaml` and use the alternate `kubeVersion` check that is provided in the comments. *Please note* that this is not meant to be used to enable the use of pre-release alpha and beta versions, which is not supported. | - +| Driver install or upgrade fails because of an incompatible Kubernetes version, even though the version seems to be within the range of compatibility. For example: `Error: UPGRADE FAILED: chart requires kubeVersion: >= 1.21.0 < 1.25.0 which is incompatible with Kubernetes V1.21.11-mirantis-1` | If you are using an extended Kubernetes version, please see the helm Chart at `helm/csi-unity/Chart.yaml` and use the alternate `kubeVersion` check that is provided in the comments. *Please note* that this is not meant to be used to enable the use of pre-release alpha and beta versions, which is not supported. | +| When a node goes down, the block volumes attached to the node cannot be attached to another node | 1. Force delete the pod running on the node that went down
2. Delete the VolumeAttachment to the node that went down.
Now the volume can be attached to the new node. | diff --git a/content/v1/csidriver/upgradation/drivers/isilon.md b/content/v1/csidriver/upgradation/drivers/isilon.md index e473a299e4..75fca2acda 100644 --- a/content/v1/csidriver/upgradation/drivers/isilon.md +++ b/content/v1/csidriver/upgradation/drivers/isilon.md @@ -8,12 +8,12 @@ Description: Upgrade PowerScale CSI driver --- You can upgrade the CSI Driver for Dell PowerScale using Helm or Dell CSI Operator. -## Upgrade Driver from version 2.1.0 to 2.2.0 using Helm +## Upgrade Driver from version 2.2.0 to 2.3.0 using Helm **Note:** While upgrading the driver via helm, controllerCount variable in myvalues.yaml can be at most one less than the number of worker nodes. **Steps** -1. Clone the repository using `git clone -b v2.2.0 https://github.com/dell/csi-powerscale.git`, copy the helm/csi-isilon/values.yaml into a new location with a custom name say _my-isilon-settings.yaml_, to customize settings for installation. Edit _my-isilon-settings.yaml_ as per the requirements. +1. Clone the repository using `git clone -b v2.3.0 https://github.com/dell/csi-powerscale.git`, copy the helm/csi-isilon/values.yaml into a new location with a custom name say _my-isilon-settings.yaml_, to customize settings for installation. Edit _my-isilon-settings.yaml_ as per the requirements. 2. Change to directory dell-csi-helm-installer to install the Dell PowerScale `cd dell-csi-helm-installer` 3. Upgrade the CSI Driver for Dell PowerScale using following command: diff --git a/content/v1/csidriver/upgradation/drivers/operator.md b/content/v1/csidriver/upgradation/drivers/operator.md index d3f9b22a5b..eab8bedd28 100644 --- a/content/v1/csidriver/upgradation/drivers/operator.md +++ b/content/v1/csidriver/upgradation/drivers/operator.md @@ -13,7 +13,7 @@ Dell CSI Operator can be upgraded based on the supported platforms in one of the ### Using Installation Script -1. Clone and checkout the required dell-csi-operator version using `git clone -b v1.7.0 https://github.com/dell/dell-csi-operator.git`. +1. Clone and checkout the required dell-csi-operator version using `git clone -b v1.8.0 https://github.com/dell/dell-csi-operator.git`. 2. cd dell-csi-operator 3. Execute `bash scripts/install.sh --upgrade` . This command will install the latest version of the operator. >Note: Dell CSI Operator version 1.4.0 and higher would install to the 'dell-csi-operator' namespace by default. diff --git a/content/v1/csidriver/upgradation/drivers/powerflex.md b/content/v1/csidriver/upgradation/drivers/powerflex.md index 0611b63233..5c181f183e 100644 --- a/content/v1/csidriver/upgradation/drivers/powerflex.md +++ b/content/v1/csidriver/upgradation/drivers/powerflex.md @@ -10,12 +10,11 @@ Description: Upgrade PowerFlex CSI driver You can upgrade the CSI Driver for Dell PowerFlex using Helm or Dell CSI Operator. -## Update Driver from v2.1 to v2.2 using Helm +## Update Driver from v2.2 to v2.3 using Helm **Steps** -1. Run `git clone -b v2.2.0 https://github.com/dell/csi-powerflex.git` to clone the git repository and get the v2.2.0 driver. +1. Run `git clone -b v2.3.0 https://github.com/dell/csi-powerflex.git` to clone the git repository and get the v2.3.0 driver. 2. You need to create config.yaml with the configuration of your system. Check this section in installation documentation: [Install the Driver](../../../installation/helm/powerflex#install-the-driver) - You must set the only system managed in v1.5/v2.0/v2.1 driver as default in config.json in v2.2 so that the driver knows the existing volumes belong to that system. 3. Update values file as needed. 4. Run the `csi-install` script with the option _\-\-upgrade_ by running: `cd ../dell-csi-helm-installer && ./csi-install.sh --namespace vxflexos --values ./myvalues.yaml --upgrade`. diff --git a/content/v1/csidriver/upgradation/drivers/powermax.md b/content/v1/csidriver/upgradation/drivers/powermax.md index 1f2ba76421..98e1fd3059 100644 --- a/content/v1/csidriver/upgradation/drivers/powermax.md +++ b/content/v1/csidriver/upgradation/drivers/powermax.md @@ -10,10 +10,10 @@ Description: Upgrade PowerMax CSI driver You can upgrade CSI Driver for Dell PowerMax using Helm or Dell CSI Operator. -## Update Driver from v2.1 to v2.2 using Helm +## Update Driver from v2.2 to v2.3 using Helm **Steps** -1. Run `git clone -b v2.2.0 https://github.com/dell/csi-powermax.git` to clone the git repository and get the v2.2 driver. +1. Run `git clone -b v2.3.0 https://github.com/dell/csi-powermax.git` to clone the git repository and get the v2.3 driver. 2. Update the values file as needed. 2. Run the `csi-install` script with the option _\-\-upgrade_ by running: `cd ../dell-csi-helm-installer && ./csi-install.sh --namespace powermax --values ./my-powermax-settings.yaml --upgrade`. diff --git a/content/v1/csidriver/upgradation/drivers/powerstore.md b/content/v1/csidriver/upgradation/drivers/powerstore.md index 7f5152bd3f..089fa38c68 100644 --- a/content/v1/csidriver/upgradation/drivers/powerstore.md +++ b/content/v1/csidriver/upgradation/drivers/powerstore.md @@ -9,12 +9,12 @@ Description: Upgrade PowerStore CSI driver You can upgrade the CSI Driver for Dell PowerStore using Helm or Dell CSI Operator. -## Update Driver from v2.1 to v2.2 using Helm +## Update Driver from v2.2 to v2.3 using Helm Note: While upgrading the driver via helm, controllerCount variable in myvalues.yaml can be at most one less than the number of worker nodes. **Steps** -1. Run `git clone -b v2.2.0 https://github.com/dell/csi-powerstore.git` to clone the git repository and get the driver. +1. Run `git clone -b v2.3.0 https://github.com/dell/csi-powerstore.git` to clone the git repository and get the driver. 2. Edit `helm/config.yaml` file and configure connection information for your PowerStore arrays changing the following parameters: - *endpoint*: defines the full URL path to the PowerStore API. - *globalID*: specifies what storage cluster the driver should use diff --git a/content/v1/csidriver/upgradation/drivers/unity.md b/content/v1/csidriver/upgradation/drivers/unity.md index 23ee1340e1..26b4e4d47d 100644 --- a/content/v1/csidriver/upgradation/drivers/unity.md +++ b/content/v1/csidriver/upgradation/drivers/unity.md @@ -1,13 +1,13 @@ --- -title: "Unity" +title: "Unity XT" tags: - upgrade - csi-driver weight: 1 -Description: Upgrade Unity CSI driver +Description: Upgrade Unity XT CSI driver --- -You can upgrade the CSI Driver for Dell Unity using Helm or Dell CSI Operator. +You can upgrade the CSI Driver for Dell Unity XT using Helm or Dell CSI Operator. **Note:** 1. User has to re-create existing custom-storage classes (if any) according to the latest format. @@ -20,13 +20,12 @@ You can upgrade the CSI Driver for Dell Unity using Helm or Dell CSI Operator. Preparing myvalues.yaml is the same as explained in the install section. -To upgrade the driver from csi-unity v2.1 to csi-unity 2.2 +To upgrade the driver from csi-unity v2.2.0 to csi-unity v2.3.0 -1. Get the latest csi-unity 2.2 code from Github using using `git clone -b v2.2.0 https://github.com/dell/csi-unity.git`. -2. Create myvalues.yaml. -3. Copy the helm/csi-unity/values.yaml to the new location csi-unity/dell-csi-helm-installer with name say myvalues.yaml, to customize settings for installation edit myvalues.yaml as per the requirements. -4. Navigate to common-helm-installer folder and execute the following command: - `./csi-install.sh --namespace unity --values ./myvalues.yaml --upgrade` +1. Get the latest csi-unity v2.3.0 code from Github using using `git clone -b v2.3.0 https://github.com/dell/csi-unity.git`. +2. Copy the helm/csi-unity/values.yaml to the new location csi-unity/dell-csi-helm-installer and rename it to myvalues.yaml. Customize settings for installation by editing myvalues.yaml as needed. +3. Navigate to csi-unity/dell-csi-hem-installer folder and execute this command: + `./csi-install.sh --namespace unity --values ./myvalues.yaml --upgrade` ### Using Operator diff --git a/content/v1/deployment/csmapi.md b/content/v1/deployment/csmapi.md deleted file mode 100644 index 812f36b835..0000000000 --- a/content/v1/deployment/csmapi.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "CSM REST API" -type: swagger -weight: 1 -description: Reference for the CSM REST API ---- - -{{< swaggerui src="../swagger.yaml" >}} \ No newline at end of file diff --git a/content/v1/deployment/csmcli.md b/content/v1/deployment/csmcli.md deleted file mode 100644 index 25ef2d7e43..0000000000 --- a/content/v1/deployment/csmcli.md +++ /dev/null @@ -1,269 +0,0 @@ ---- -title : CSM CLI -linktitle: CSM CLI -weight: 3 -description: > - Dell EMC Container Storage Modules (CSM) Command Line Interface(CLI) Deployment and Management ---- -`csm` is a command-line client for installation of Dell EMC Container Storage Modules and CSI Drivers for Kubernetes clusters. - -## Pre-requisites - -1. [Deploy the Container Storage Modules Installer](../../deployment) -2. Download/Install the `csm` binary from Github: https://github.com/dell/csm. Alternatively, you can build the binary by: - - cloning the `csm` repository - - changing into `csm/cmd/csm` directory - - running `make build` -3. create a `cli_env.sh` file that contains the correct values for the below variables. And export the variables by running `source ./cli_env.sh` - -```console -# Change this to CSM API Server IP -export API_SERVER_IP="127.0.0.1" - -# Change this to CSM API Server Port -export API_SERVER_PORT="31313" - -# CSM API Server protocol - allowed values are https & http -export SCHEME="https" - -# Path to store JWT -export AUTH_CONFIG_PATH="/home/user/installer-token/" -``` - -## Usage - -```console -~$ ./csm -h -csm is command line tool for csm application - -Usage: - csm [flags] - csm [command] - -Available Commands: - add add cluster, configuration or storage - approve-task approve task for application - authenticate authenticate user - change change - subcommand is password - create create application - delete delete storage, cluster, configuration or application - get get storage, cluster, application, configuration, supported driver, module, storage type - help Help about any command - reject-task reject task for an application - update update storage, configuration or cluster - -Flags: - -h, --help help for csm-cli - -Use "csm [command] --help" for more information about a command. -``` - -### Authenticate the User - -To begin with, you need to authenticate the user who will be managing the CSM Installer and its components. - -```console -./csm authenticate --username= --password= -``` -Or more securely, run the above command without `--password` to be prompted for one - -```console -./csm authenticate --username= -Enter user's password: - -``` - -### Change Password - -To change password follow below command - -```console -./csm change password --username= -``` - -### View Supported Platforms - -You can now view the supported Dell emcCSI Drivers - -```console -./csm get supported-drivers -``` - -You can also view the supported Modules - -```console -./csm get supported-modules -``` - -And also view the supported Storage Array Types - -```console -./csm get supported-storage-arrays -``` - -### Add a Cluster - -You can now add a cluster by providing cluster detail name and Kubeconfig path - -```console -./csm add cluster --clustername --configfilepath -``` - -### Upload Configuration Files - -You can now add a configuration file that can be used for creating application by providing filename and path - -```console -./csm add configuration --filename --filepath -``` - -### Add a Storage System - -You can now add storage endpoints, array type and its unique id - -```console -./csm add storage --endpoint --storage-type --unique-id --username -``` - -The optional `--meta-data` flag can be used to provide additional meta-data for the storage system that is used when creating Secrets for the CSI Driver. These fields include: - - isDefault: Set to true if this storage system is used as default for multi-array configuration - - skipCertificateValidation: Set to true to skip certificate validation - - mdmId: Comma separated list of MDM IPs for PowerFlex - - nasName: NAS Name for PowerStore - - blockProtocol: Block Protocol for PowerStore - - port: Port for PowerScale - - portGroups: Comma separated list of port group names for PowerMax - -### Create an Application - -You may now create an application depending on the specific use case. Below are the common use cases: - -
- CSI Driver - -```console -./csm create application --clustername \ - --driver-type powerflex: --name \ - --storage-arrays -``` -
- -
- CSI Driver with CSM Authorization - -CSM Authorization requires a `token.yaml` issued by storage Admin from the CSM Authorization Server, a certificate file, and the of the authorization server. The `token.yaml` and `cert` should be added by following the steps in [adding configuration file](#upload-configuration-files). CSM Authorization does not yet support all CSI Drivers/platforms(See [supported platforms documentation](../../authorization/#supported-platforms) or [supported platforms via CLI](#view-supported-platforms))). -Finally, run the command below: - -```console -./csm create application --clustername \ - --driver-type powerflex: --name \ - --storage-arrays \ - --module-type authorization: \ - --module-configuration "karaviAuthorizationProxy.proxyAuthzToken.filename=,karaviAuthorizationProxy.rootCertificate.filename=,karaviAuthorizationProxy.proxyHost=" - -``` -
- -
- CSM Observability(Standalone) - -CSM Observability depends on driver config secret(s) corresponding to the metric(s) you want to enable. Please see [CSM Observability](../../observability/metrics) for all Supported Metrics. For the sake of demonstration, assuming we want to enable [CSM Metrics for PowerFlex](../../observability/metrics/powerflex), the PowerFlex secret yaml should be added by following the steps in [adding configuration file](#upload-configuration-files). -Once this is done, run the command below: - -```console -./csm create application --clustername \ - --name \ - --module-type observability: \ - --module-configuration "karaviMetricsPowerflex.driverConfig.filename=,karaviMetricsPowerflex.enabled=true" -``` -
- -
- CSM Observability(Standalone) with CSM Authorization - -See the individual steps for configuaration file pre-requisites for CSM Observability (Standalone) with CSM Authorization - -```console -./csm create application --clustername \ - --name \ - --module-type "observability:,authorization:" \ - --module-configuration "karaviMetricsPowerflex.driverConfig.filename=,karaviMetricsPowerflex.enabled=true,karaviAuthorizationProxy.proxyAuthzToken.filename=,karaviAuthorizationProxy.rootCertificate.filename=,karaviAuthorizationProxy.proxyHost=" -``` -
- -
- CSI Driver for Dell EMC PowerMax with reverse proxy module - - To deploy CSI Driver for Dell EMC PowerMax with reverse proxy module, first upload reverse proxy tls crt and tls key via [adding configuration file](#upload-configuration-files). Then, use the below command to create application: - -```console -./csm create application --clustername \ - --driver-type powermax: --name \ - --storage-arrays \ - --module-type reverse-proxy: \ - --module-configuration reverseProxy.tlsSecretKeyFile=,reverseProxy.tlsSecretCertFile= -``` -
- -
- CSI Driver with replication module - - To deploy CSI driver with replication module, first add a target cluster through [adding cluster](#add-a-cluster). Then, use the below command(this command is an example to deploy CSI Driver for Dell EMC PowerStore with replication module) to create application:: - -```console -./csm create application --clustername \ - --driver-type powerstore: --name \ - --storage-arrays \ - --module-configuration target_cluster= \ - --module-type replication: -``` -
- - -
- CSI Driver with other module(s) not covered above - - Assuming you want to deploy a driver with `module A` and `module B`. If they have specific configurations of `A.image="docker:v1"`,`A.filename=hello`, and `B.namespace=world`. - -```console -./csm create application --clustername \ - --driver-type powerflex: --name \ - --storage-arrays \ - --module-type "module A:,module B:" \ - --module-configuration "A.image=docker:v1,A.filename=hello,B.namespace=world" -``` -
-
- -> __Note__: - - `--driver-type` and `--module-type` flags in create application command MUST match the values from the [supported CSM platforms](#view-supported-platforms) - - Replication module supports only using a pair of clusters at a time (source and a target/or single cluster) from CSM installer, However `repctl` can be used if needed to add multiple pairs of target clusters. Using replication module with other modules during application creation is not yet supported. - -### Approve application/task - -You may now approve the task so that you can continue to work with the application - -```console -./csm approve-task --applicationname -``` - -### Reject application/task - -You may want to reject a task or application to discontinue the ongoing process - -```console -./csm reject-task --applicationname -``` - -### Delete application/task - -If you want to delete an application - -```console -./csm delete application --name -``` - -> __Note__: When deleting an application, the namespace and Secrets are not deleted. These resources need to be deleted manually. See more in [Troubleshooting](../troubleshooting#after-deleting-an-application-why-cant-i-re-create-the-same-application). - -> __Note__: All commands and associated syntax can be displayed with -h or --help - diff --git a/content/v1/deployment/csminstaller/_index.md b/content/v1/deployment/csminstaller/_index.md index 95ae36a236..4527ddfd9f 100644 --- a/content/v1/deployment/csminstaller/_index.md +++ b/content/v1/deployment/csminstaller/_index.md @@ -22,7 +22,7 @@ The CSM (Container Storage Modules) Installer simplifies the deployment and mana | Replication | 1.0 | | Resiliency | 1.0 | | CSI Driver for PowerScale | v2.0 | -| CSI Driver for Unity | v2.0 | +| CSI Driver for Unity XT | v2.0 | | CSI Driver for PowerStore | v2.0 | | CSI Driver for PowerFlex | v2.0 | | CSI Driver for PowerMax | v2.0 | diff --git a/content/v1/deployment/csmoperator/_index.md b/content/v1/deployment/csmoperator/_index.md index 702fab7871..c89d7e9d74 100644 --- a/content/v1/deployment/csmoperator/_index.md +++ b/content/v1/deployment/csmoperator/_index.md @@ -16,19 +16,19 @@ Dell CSM Operator has been tested and qualified on Upstream Kubernetes and OpenS | Kubernetes Version | OpenShift Version | | -------------------- | ------------------- | -| 1.21, 1.22, 1.23 | 4.8, 4.9 | +| 1.22, 1.23, 1.24 | 4.9, 4.10, 4.10 EUS | ## Supported CSI Drivers | CSI Driver | Version | ConfigVersion | | ------------------ | --------- | -------------- | -| CSI PowerScale | 2.2.0 | v2.2.0 | +| CSI PowerScale | 2.2.0 + | v2.2.0 + | ## Supported CSM Modules | CSM Modules | Version | ConfigVersion | | ------------------ | --------- | -------------- | -| CSM Authorization | 1.2.0 | v1.2.0 | +| CSM Authorization | 1.2.0 + | v1.2.0 + | ## Installation Dell CSM Operator can be installed manually or via Operator Hub. @@ -82,6 +82,30 @@ To uninstall a CSM operator installed with OLM run `bash scripts/uninstall_olm.s {{< imgproc uninstall_olm.jpg Resize "2500x" >}}{{< /imgproc >}} +### To upgrade Dell CSM Operator, perform the following steps. +Dell CSM Operator can be upgraded in 2 ways: + +1.Using script (for non-OLM based installation) + +2.Using Operator Lifecycle Manager (OLM) + +#### Using Installation Script +1. Clone the [Dell CSM Operator repository](https://github.com/dell/csm-operator). +2. `cd csm-operator` +3. git checkout -b 'csm-operator-version' +4. Execute `bash scripts/install.sh --upgrade` . This command will install the latest version of the operator. + +>Note: Dell CSM Operator would install to the 'dell-csm-operator' namespace by default. + +#### Using OLM +The upgrade of the Dell CSM Operator is done via Operator Lifecycle Manager. + +The `Update approval` (**`InstallPlan`** in OLM terms) strategy plays a role while upgrading dell-csm-operator on OpenShift. This option can be set during installation of dell-csm-operator on OpenShift via the console and can be either set to `Manual` or `Automatic`. +- If the **`Update approval`** is set to `Automatic`, OpenShift automatically detects whenever the latest version of dell-csm-operator is available in the **`Operator hub`**, and upgrades it to the latest available version. +- If the upgrade policy is set to `Manual`, OpenShift notifies of an available upgrade. This notification can be viewed by the user in the **`Installed Operators`** section of the OpenShift console. Clicking on the hyperlink to `Approve` the installation would trigger the dell-csm-operator upgrade process. + +**NOTE**: The recommended version of OLM for Upstream Kubernetes is **`v0.18.3`**. + ### Custom Resource Definitions As part of the Dell CSM Operator installation, a CRD representing configuration for the CSI Driver and CSM Modules is also installed. `containerstoragemodule` CRD is installed in API Group `storage.dell.com`. @@ -124,86 +148,3 @@ The specification for the Custom Resource is the same for all the drivers.Below **nodeSelector** - Used to specify node selectors for the driver StatefulSet/Deployment and DaemonSet. >**Note:** The `image` field should point to the correct image tag for version of the driver you are installing. - -### Pre-requisites for installation of the CSI Drivers - -On Upstream Kubernetes clusters, make sure to install -* VolumeSnapshot CRDs - Install v1 VolumeSnapshot CRDs -* External Volume Snapshot Controller - -#### Volume Snapshot CRD's -The Kubernetes Volume Snapshot CRDs can be obtained and installed from the external-snapshotter project on Github. Manifests are available [here](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/client/config/crd) - -#### Volume Snapshot Controller -The CSI external-snapshotter sidecar is split into two controllers: -- A common snapshot controller -- A CSI external-snapshotter sidecar - -The common snapshot controller must be installed only once in the cluster irrespective of the number of CSI drivers installed in the cluster. On OpenShift clusters, the common snapshot-controller is pre-installed. In the clusters where it is not present, it can be installed using `kubectl` and the manifests are available [here](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/deploy/kubernetes/snapshot-controller) - -*NOTE:* -- The manifests available on GitHub install the snapshotter image: - - [quay.io/k8scsi/csi-snapshotter:v5.0.1](https://quay.io/repository/k8scsi/csi-snapshotter?tag=v5.0.1&tab=tags) -- The CSI external-snapshotter sidecar is still installed along with the driver and does not involve any extra configuration. - -#### Installation example - -You can install CRDs and the default snapshot controller by running the following commands: -```bash -git clone https://github.com/kubernetes-csi/external-snapshotter/ -cd ./external-snapshotter -git checkout release- -kubectl create -f client/config/crd -kubectl create -f deploy/kubernetes/snapshot-controller -``` -*NOTE:* -- It is recommended to use 5.0.x version of snapshotter/snapshot-controller. - -## Installing CSI Driver via Operator - -Refer [PowerScale Driver](drivers/powerscale) to install the driver via Operator - ->**Note**: If you are using an OLM based installation, example manifests are available in `OperatorHub` UI. -You can edit these manifests and install the driver using the `OperatorHub` UI. - -### Verifying the driver installation -Once the driver `Custom Resource (CR)` is created, you can verify the installation as mentioned below - -* Check if ContainerStorageModule CR is created successfully using the command below: - ``` - $ kubectl get csm/ -n -o yaml - ``` -* Check the status of the CR to verify if the driver installation is in the `Succeeded` state. If the status is not `Succeeded`, see the [Troubleshooting guide](./troubleshooting/#my-dell-csi-driver-install-failed-how-do-i-fix-it) for more information. - - -### Update CSI Drivers -The CSI Drivers and CSM Modules installed by the Dell CSM Operator can be updated like any Kubernetes resource. This can be achieved in various ways which include: - -* Modifying the installation directly via `kubectl edit` - For e.g. - If the name of the installed PowerScale driver is powerscale, then run - ``` - # Replace driver-namespace with the namespace where the PowerScale driver is installed - $ kubectl edit csm/powerscale -n - ``` - and modify the installation -* Modify the API object in-place via `kubectl patch` - -#### Supported modifications -* Changing environment variable values for driver -* Updating the image of the driver - -### Uninstall CSI Driver -The CSI Drivers and CSM Modules can be uninstalled by deleting the Custom Resource. - -For e.g. -``` -$ kubectl delete csm/powerscale -n -``` - -By default, the `forceRemoveDriver` option is set to `true` which will uninstall the CSI Driver and CSM Modules when the Custom Resource is deleted. Setting this option to `false` is not recommended. - -### SideCars -Although the sidecars field in the driver specification is optional, it is **strongly** recommended to not modify any details related to sidecars provided (if present) in the sample manifests. The only exception to this is modifications requested by the documentation, for example, filling in blank IPs or other such system-specific data. Any modifications not specifically requested by the documentation should be only done after consulting with Dell support. - -## Modules -The CSM Operator can optionally enable modules that are supported by the specific Dell CSI driver. By default, the modules are disabled but they can be enabled by setting the `enabled` flag to true and setting any other configuration options for the given module. diff --git a/content/v1/deployment/csmoperator/drivers/_index.md b/content/v1/deployment/csmoperator/drivers/_index.md index c850691c0d..18129d5071 100644 --- a/content/v1/deployment/csmoperator/drivers/_index.md +++ b/content/v1/deployment/csmoperator/drivers/_index.md @@ -4,3 +4,92 @@ linkTitle: "CSI Drivers" description: Installation of Dell CSI Drivers using Dell CSM Operator weight: 1 --- + +## Pre-requisites for installation of the CSI Drivers + +On Upstream Kubernetes clusters, ensure that to install +* VolumeSnapshot CRDs - Install v1 VolumeSnapshot CRDs +* External Volume Snapshot Controller + +### Volume Snapshot CRD's +The Kubernetes Volume Snapshot CRDs can be obtained and installed from the external-snapshotter project on Github. Manifests are available [here](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/client/config/crd) + +### Volume Snapshot Controller +The CSI external-snapshotter sidecar is split into two controllers: +- A common snapshot controller +- A CSI external-snapshotter sidecar + +The common snapshot controller must be installed only once in the cluster irrespective of the number of CSI drivers installed in the cluster. On OpenShift clusters, the common snapshot-controller is pre-installed. In the clusters where it is not present, it can be installed using `kubectl` and the manifests are available [here](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/deploy/kubernetes/snapshot-controller) + +*NOTE:* +- The manifests available on GitHub install the snapshotter image: + - [quay.io/k8scsi/csi-snapshotter:v5.0.1](https://quay.io/repository/k8scsi/csi-snapshotter?tag=v5.0.1&tab=tags) +- The CSI external-snapshotter sidecar is still installed along with the driver and does not involve any extra configuration. + +### Installation example + +You can install CRDs and the default snapshot controller by running the following commands: +```bash +git clone https://github.com/kubernetes-csi/external-snapshotter/ +cd ./external-snapshotter +git checkout release- +kubectl create -f client/config/crd +kubectl create -f deploy/kubernetes/snapshot-controller +``` +*NOTE:* +- It is recommended to use 5.0.x version of snapshotter/snapshot-controller. + +## Installing CSI Driver via Operator + +Refer [PowerScale Driver](../drivers/powerscale) to install the driver via Operator + +>**Note**: If you are using an OLM based installation, example manifests are available in `OperatorHub` UI. +You can edit these manifests and install the driver using the `OperatorHub` UI. + +### Verifying the driver installation +Once the driver `Custom Resource (CR)` is created, you can verify the installation as mentioned below + +* Check if ContainerStorageModule CR is created successfully using the command below: + ``` + $ kubectl get csm/ -n -o yaml + ``` +* Check the status of the CR to verify if the driver installation is in the `Succeeded` state. If the status is not `Succeeded`, see the [Troubleshooting guide](../troubleshooting/#my-dell-csi-driver-install-failed-how-do-i-fix-it) for more information. + + +### Update CSI Drivers +The CSI Drivers and CSM Modules installed by the Dell CSM Operator can be updated like any Kubernetes resource. This can be achieved in various ways which include: + +* Modifying the installation directly via `kubectl edit` + For example - If the name of the installed PowerScale driver is powerscale, then run + ``` + # Replace driver-namespace with the namespace where the PowerScale driver is installed + $ kubectl edit csm/powerscale -n + ``` + and modify the installation +* Modify the API object in-place via `kubectl patch` + +#### Supported modifications +* Changing environment variable values for driver +* Updating the image of the driver +* Upgrading the driver version + +**NOTES:** +1. If you are trying to upgrade the CSI driver from an older version, make sure to modify the _configVersion_ field if required. + ```yaml + driver: + configVersion: v2.3.0 + ``` +2. Do not try to update the operator by modifying the original `CustomResource` manifest file and running the `kubectl apply -f` command. As part of the driver installation, the Operator sets some annotations on the `CustomResource` object which are further utilized in some workflows (like detecting upgrade of drivers). If you run the `kubectl apply -f` command to update the driver, these annotations are overwritten and this may lead to failures. + +### Uninstall CSI Driver +The CSI Drivers and CSM Modules can be uninstalled by deleting the Custom Resource. + +For e.g. +``` +$ kubectl delete csm/powerscale -n +``` + +By default, the `forceRemoveDriver` option is set to `true` which will uninstall the CSI Driver and CSM Modules when the Custom Resource is deleted. Setting this option to `false` is not recommended. + +### SideCars +Although the sidecars field in the driver specification is optional, it is **strongly** recommended to not modify any details related to sidecars provided (if present) in the sample manifests. The only exception to this is modifications requested by the documentation, for example, filling in blank IPs or other such system-specific data. Any modifications not specifically requested by the documentation should be only done after consulting with Dell support. diff --git a/content/v1/deployment/csmoperator/drivers/powerscale.md b/content/v1/deployment/csmoperator/drivers/powerscale.md index 4471f1d1e6..261e0c1222 100644 --- a/content/v1/deployment/csmoperator/drivers/powerscale.md +++ b/content/v1/deployment/csmoperator/drivers/powerscale.md @@ -137,7 +137,7 @@ User can query for all Dell CSI drivers using the following command: ```kubectl create -f ``` . This command will deploy the CSI-PowerScale driver in the namespace specified in the input YAML file. -5. [Verify the CSI Driver installation](../../#verifying-the-driver-installation) +7. [Verify the CSI Driver installation](../drivers/_index.md#verifying-the-driver-installation) **Note** : 1. "Kubelet config dir path" is not yet configurable in case of Operator based driver installation. diff --git a/content/v1/deployment/csmoperator/modules/_index.md b/content/v1/deployment/csmoperator/modules/_index.md index 4a76e7d868..1ac79f9d15 100644 --- a/content/v1/deployment/csmoperator/modules/_index.md +++ b/content/v1/deployment/csmoperator/modules/_index.md @@ -10,4 +10,4 @@ The steps include: 1. Deploy the Dell CSM Operator (if it is not already deployed). Please follow the instructions available [here](../../#installation). 2. Configure any pre-requisite for the desired module(s). See the specific module below for more information -3. Follow the instructions available [here](../drivers/powerscale.md/#install-driver)) to install the Dell CSI Driver via the CSM Operator. The module section in the ContainerStorageModule CR should be updated to enable the desired module(s). There are [sample manifests](https://github.com/dell/csm-operator/tree/main/samples) provided which can be edited to do an easy installation of the driver along with the module. \ No newline at end of file +3. Follow the instructions available [here](../drivers/powerscale.md/#install-driver)) to install the Dell CSI Driver via the CSM Operator. The module section in the ContainerStorageModule CR should be updated to enable the desired module(s). There are [sample manifests](https://github.com/dell/csm-operator/tree/main/samples) provided which can be edited to do an easy installation of the driver along with the module. diff --git a/content/v1/deployment/swagger.yaml b/content/v1/deployment/swagger.yaml deleted file mode 100644 index 15a9b8b227..0000000000 --- a/content/v1/deployment/swagger.yaml +++ /dev/null @@ -1,1395 +0,0 @@ -basePath: /api/v1 -definitions: - ApplicationCreateRequest: - properties: - cluster_id: - type: string - driver_configuration: - items: - type: string - type: array - driver_type_id: - type: string - module_configuration: - items: - type: string - type: array - module_types: - items: - type: string - type: array - name: - type: string - storage_arrays: - items: - type: string - type: array - required: - - cluster_id - - driver_type_id - - name - type: object - ApplicationResponse: - properties: - application_output: - type: string - cluster_id: - type: string - driver_configuration: - items: - type: string - type: array - driver_type_id: - type: string - id: - type: string - module_configuration: - items: - type: string - type: array - module_types: - items: - type: string - type: array - name: - type: string - storage_arrays: - items: - type: string - type: array - type: object - ClusterResponse: - properties: - cluster_id: - type: string - cluster_name: - type: string - nodes: - description: The nodes - type: string - type: object - ConfigFileResponse: - properties: - id: - type: string - name: - type: string - type: object - DriverResponse: - properties: - id: - type: string - storage_array_type_id: - type: string - version: - type: string - type: object - ErrorMessage: - properties: - arguments: - items: - type: string - type: array - code: - description: HTTPStatusEnum Possible HTTP status values of completed or failed - jobs - enum: - - 200 - - 201 - - 202 - - 204 - - 400 - - 401 - - 403 - - 404 - - 422 - - 429 - - 500 - - 503 - type: integer - message: - description: Message string. - type: string - message_l10n: - description: Localized message - type: object - severity: - description: |- - SeverityEnum - The severity of the condition - * INFO - Information that may be of use in understanding the failure. It is not a problem to fix. - * WARNING - A condition that isn't a failure, but may be unexpected or a contributing factor. It may be necessary to fix the condition to successfully retry the request. - * ERROR - An actual failure condition through which the request could not continue. - * CRITICAL - A failure with significant impact to the system. Normally failed commands roll back and are just ERROR, but this is possible - enum: - - INFO - - WARNING - - ERROR - - CRITICAL - type: string - type: object - ErrorResponse: - properties: - http_status_code: - description: HTTPStatusEnum Possible HTTP status values of completed or failed - jobs - enum: - - 200 - - 201 - - 202 - - 204 - - 400 - - 401 - - 403 - - 404 - - 422 - - 429 - - 500 - - 503 - type: integer - messages: - description: |- - A list of messages describing the failure encountered by this request. At least one will - be of Error severity because Info and Warning conditions do not cause the request to fail - items: - $ref: '#/definitions/ErrorMessage' - type: array - type: object - ModuleResponse: - properties: - id: - type: string - name: - type: string - standalone: - type: boolean - version: - type: string - type: object - StorageArrayCreateRequest: - properties: - management_endpoint: - type: string - meta_data: - items: - type: string - type: array - password: - type: string - storage_array_type: - type: string - unique_id: - type: string - username: - type: string - required: - - management_endpoint - - password - - storage_array_type - - unique_id - - username - type: object - StorageArrayResponse: - properties: - id: - type: string - management_endpoint: - type: string - meta_data: - items: - type: string - type: array - storage_array_type_id: - type: string - unique_id: - type: string - username: - type: string - type: object - StorageArrayTypeResponse: - properties: - id: - type: string - name: - type: string - type: object - StorageArrayUpdateRequest: - properties: - management_endpoint: - type: string - meta_data: - items: - type: string - type: array - password: - type: string - storage_array_type: - type: string - unique_id: - type: string - username: - type: string - type: object - TaskResponse: - properties: - _links: - additionalProperties: - additionalProperties: - type: string - type: object - type: object - application_name: - type: string - id: - type: string - logs: - type: string - status: - type: string - type: object -info: - contact: {} - description: CSM Deployment API - title: CSM Deployment API - version: "1.0" -paths: - /applications: - get: - consumes: - - application/json - description: List all applications - operationId: list-applications - parameters: - - description: Application Name - in: query - name: name - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - items: - $ref: '#/definitions/ApplicationResponse' - type: array - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: List all applications - tags: - - application - post: - consumes: - - application/json - description: Create a new application - operationId: create-application - parameters: - - description: Application info for creation - in: body - name: application - required: true - schema: - $ref: '#/definitions/ApplicationCreateRequest' - produces: - - application/json - responses: - "202": - description: Accepted - schema: - type: string - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Create a new application - tags: - - application - /applications/{id}: - delete: - consumes: - - application/json - description: Delete an application - operationId: delete-application - parameters: - - description: Application ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "204": - description: "" - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Delete an application - tags: - - application - get: - consumes: - - application/json - description: Get an application - operationId: get-application - parameters: - - description: Application ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/ApplicationResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Get an application - tags: - - application - /clusters: - get: - consumes: - - application/json - description: List all clusters - operationId: list-clusters - parameters: - - description: Cluster Name - in: query - name: cluster_name - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - items: - $ref: '#/definitions/ClusterResponse' - type: array - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: List all clusters - tags: - - cluster - post: - consumes: - - application/json - description: Create a new cluster - operationId: create-cluster - parameters: - - description: Name of the cluster - in: formData - name: name - required: true - type: string - - description: kube config file - in: formData - name: file - required: true - type: file - produces: - - application/json - responses: - "201": - description: Created - schema: - $ref: '#/definitions/ClusterResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Create a new cluster - tags: - - cluster - /clusters/{id}: - delete: - consumes: - - application/json - description: Delete a cluster - operationId: delete-cluster - parameters: - - description: Cluster ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "204": - description: "" - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Delete a cluster - tags: - - cluster - get: - consumes: - - application/json - description: Get a cluster - operationId: get-cluster - parameters: - - description: Cluster ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/ClusterResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Get a cluster - tags: - - cluster - patch: - consumes: - - application/json - description: Update a cluster - operationId: update-cluster - parameters: - - description: Cluster ID - in: path - name: id - required: true - type: string - - description: Name of the cluster - in: formData - name: name - type: string - - description: kube config file - in: formData - name: file - type: file - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/ClusterResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Update a cluster - tags: - - cluster - /configuration-files: - get: - consumes: - - application/json - description: List all configuration files - operationId: list-config-file - parameters: - - description: Name of the configuration file - in: query - name: config_name - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - items: - $ref: '#/definitions/ConfigFileResponse' - type: array - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: List all configuration files - tags: - - configuration-file - post: - consumes: - - application/json - description: Create a new configuration file - operationId: create-config-file - parameters: - - description: Name of the configuration file - in: formData - name: name - required: true - type: string - - description: Configuration file - in: formData - name: file - required: true - type: file - produces: - - application/json - responses: - "201": - description: Created - schema: - $ref: '#/definitions/ConfigFileResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Create a new configuration file - tags: - - configuration-file - /configuration-files/{id}: - delete: - consumes: - - application/json - description: Delete a configuration file - operationId: delete-config-file - parameters: - - description: Configuration file ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "204": - description: "" - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Delete a configuration file - tags: - - configuration-file - get: - consumes: - - application/json - description: Get a configuration file - operationId: get-config-file - parameters: - - description: Configuration file ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/ConfigFileResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Get a configuration file - tags: - - configuration-file - patch: - consumes: - - application/json - description: Update a configuration file - operationId: update-config-file - parameters: - - description: Configuration file ID - in: path - name: id - required: true - type: string - - description: Name of the configuration file - in: formData - name: name - required: true - type: string - - description: Configuration file - in: formData - name: file - required: true - type: file - produces: - - application/json - responses: - "204": - description: No Content - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Update a configuration file - tags: - - configuration-file - /driver-types: - get: - consumes: - - application/json - description: List all driver types - operationId: list-driver-types - produces: - - application/json - responses: - "200": - description: OK - schema: - items: - $ref: '#/definitions/DriverResponse' - type: array - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: List all driver types - tags: - - driver-type - /driver-types/{id}: - get: - consumes: - - application/json - description: Get a driver type - operationId: get-driver-type - parameters: - - description: Driver Type ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/DriverResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Get a driver type - tags: - - driver-type - /module-types: - get: - consumes: - - application/json - description: List all module types - operationId: list-module-type - produces: - - application/json - responses: - "200": - description: OK - schema: - items: - $ref: '#/definitions/ModuleResponse' - type: array - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: List all module types - tags: - - module-type - /module-types/{id}: - get: - consumes: - - application/json - description: Get a module type - operationId: get-module-type - parameters: - - description: Module Type ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/ModuleResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Get a module type - tags: - - module-type - /storage-array-types: - get: - consumes: - - application/json - description: List all storage array types - operationId: list-storage-array-type - produces: - - application/json - responses: - "200": - description: OK - schema: - items: - $ref: '#/definitions/StorageArrayTypeResponse' - type: array - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: List all storage array types - tags: - - storage-array-type - /storage-array-types/{id}: - get: - consumes: - - application/json - description: Get a storage array type - operationId: get-storage-array-type - parameters: - - description: Storage Array Type ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/StorageArrayTypeResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Get a storage array type - tags: - - storage-array-type - /storage-arrays: - get: - consumes: - - application/json - description: List all storage arrays - operationId: list-storage-arrays - parameters: - - description: Unique ID - in: query - name: unique_id - type: string - - description: Storage Type - in: query - name: storage_type - type: string - produces: - - application/json - responses: - "202": - description: Accepted - schema: - items: - $ref: '#/definitions/StorageArrayResponse' - type: array - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: List all storage arrays - tags: - - storage-array - post: - consumes: - - application/json - description: Create a new storage array - operationId: create-storage-array - parameters: - - description: Storage Array info for creation - in: body - name: storageArray - required: true - schema: - $ref: '#/definitions/StorageArrayCreateRequest' - produces: - - application/json - responses: - "201": - description: Created - schema: - $ref: '#/definitions/StorageArrayResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Create a new storage array - tags: - - storage-array - /storage-arrays/{id}: - delete: - consumes: - - application/json - description: Delete storage array - operationId: delete-storage-array - parameters: - - description: Storage Array ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: Success - schema: - type: string - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Delete storage array - tags: - - storage-array - get: - consumes: - - application/json - description: Get storage array - operationId: get-storage-array - parameters: - - description: Storage Array ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/StorageArrayResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Get storage array - tags: - - storage-array - patch: - consumes: - - application/json - description: Update a storage array - operationId: update-storage-array - parameters: - - description: Storage Array ID - in: path - name: id - required: true - type: string - - description: Storage Array info for update - in: body - name: storageArray - required: true - schema: - $ref: '#/definitions/StorageArrayUpdateRequest' - produces: - - application/json - responses: - "204": - description: No Content - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Update a storage array - tags: - - storage-array - /tasks: - get: - consumes: - - application/json - description: List all tasks - operationId: list-tasks - parameters: - - description: Application Name - in: query - name: application_name - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - items: - $ref: '#/definitions/TaskResponse' - type: array - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: List all tasks - tags: - - task - /tasks/{id}: - get: - consumes: - - application/json - description: Get a task - operationId: get-task - parameters: - - description: Task ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/TaskResponse' - "303": - description: See Other - schema: - $ref: '#/definitions/TaskResponse' - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Get a task - tags: - - task - /tasks/{id}/approve: - post: - consumes: - - application/json - description: Approve state change for an application - operationId: approve-state-change-application - parameters: - - description: Task ID - in: path - name: id - required: true - type: string - - description: Task is associated with an Application update operation - in: query - name: updating - type: boolean - produces: - - application/json - responses: - "202": - description: Accepted - schema: - type: string - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Approve state change for an application - tags: - - task - /tasks/{id}/cancel: - post: - consumes: - - application/json - description: Cancel state change for an application - operationId: cancel-state-change-application - parameters: - - description: Task ID - in: path - name: id - required: true - type: string - - description: Task is associated with an Application update operation - in: query - name: updating - type: boolean - produces: - - application/json - responses: - "200": - description: Success - schema: - type: string - "400": - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - "404": - description: Not Found - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - ApiKeyAuth: [] - summary: Cancel state change for an application - tags: - - task - /users/change-password: - patch: - consumes: - - application/json - description: Change password for existing user - operationId: change-password - parameters: - - description: Enter New Password - format: password - in: query - name: password - required: true - type: string - produces: - - application/json - responses: - "204": - description: No Content - "401": - description: Unauthorized - schema: - $ref: '#/definitions/ErrorResponse' - "403": - description: Forbidden - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - BasicAuth: [] - summary: Change password for existing user - tags: - - user - /users/login: - post: - consumes: - - application/json - description: Login for existing user - operationId: login - produces: - - application/json - responses: - "200": - description: Bearer Token for Logged in User - schema: - type: string - "401": - description: Unauthorized - schema: - $ref: '#/definitions/ErrorResponse' - "403": - description: Forbidden - schema: - $ref: '#/definitions/ErrorResponse' - "500": - description: Internal Server Error - schema: - $ref: '#/definitions/ErrorResponse' - security: - - BasicAuth: [] - summary: Login for existing user - tags: - - user -securityDefinitions: - ApiKeyAuth: - in: header - name: Authorization - type: apiKey - BasicAuth: - type: basic -swagger: "2.0" diff --git a/content/v1/deployment/troubleshooting.md b/content/v1/deployment/troubleshooting.md deleted file mode 100644 index 60149d0e44..0000000000 --- a/content/v1/deployment/troubleshooting.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: "Troubleshooting" -linkTitle: "Troubleshooting" -weight: 4 -Description: > - Troubleshooting guide ---- - -## Frequently Asked Questions -1. [Why does the installation fail due to an invalid cipherKey value?](#why-does-the-installation-fail-due-to-an-invalid-cipherkey-value) -2. [Why does the cluster-init pod show the error "cluster has already been initialized"?](#why-does-the-cluster-init-pod-show-the-error-cluster-has-already-been-initialized) -3. [Why does the precheck fail when creating an application?](#why-does-the-precheck-fail-when-creating-an-application) -4. [How can I view detailed logs for the CSM Installer?](#how-can-i-view-detailed-logs-for-the-csm-installer) -5. [After deleting an application, why can't I re-create the same application?](#after-deleting-an-application-why-cant-i-re-create-the-same-application) - -### Why does the installation fail due to an invalid cipherKey value? -The `cipherKey` value used during deployment of the CSM Installer must be exactly 32 characters in length and contained within quotes. - -### Why does the cluster-init pod show the error "cluster has already been initialized"? -During the initial start-up of the CSM Installer, the database will be initialized by the cluster-init job. If the CSM Installer is uninstalled and then re-installed on the same cluster, this error may be shown due to the Persistent Volume for the database already containing an initialized database. The CSM Installer will function as normal and the cluster-init job can be ignored. - -If a clean installation of the CSM Installer is required, the `dbVolumeDirectory` (default location `/var/lib/cockroachdb`) must be deleted from the worker node which is hosting the Persistent Volume. After this directory is deleted, the CSM Installer can be re-installed. - -Caution: Deleting the `dbVolumeDirectory` location will remove any data persisted by the CSM Installer including clusters, storage systems, and installed applications. - -### Why does the precheck fail when creating an application? -Each CSI Driver and CSM Module has required software or CRDs that must be installed before the application can be deployed in the cluster. These prechecks are verified when the `csm create application` command is executed. If the error message "create application failed" is displayed, [review the CSM Installer logs](#how-can-i-view-detailed-logs-for-the-csm-installer) to view details about the failed prechecks. - -If the precheck fails due to required software (e.g. iSCSI, NFS, SDC) not installed on the cluster nodes, follow these steps to address the issue: -1. Delete the cluster from the CSM Installer using the `csm delete cluster` command. -2. Update the nodes in the cluster by installing required software. -3. Add the cluster to the CSM Installer using the `csm add cluster` command. - -### How can I view detailed logs for the CSM Installer? -Detailed logs of the CSM Installer can be displayed using the following command: -``` -kubectl logs -f -n deploy/dell-csm-installer -``` - -### After deleting an application, why can't I re-create the same application? -After deleting an application using the `csm delete application` command, the namespace and other non-application resources including Secrets are not deleted from the cluster. This is to prevent removing any resources that may not have been created by the CSM Installer. The namespace must be manually deleted before attempting to re-create the same application using the CSM Installer. diff --git a/content/v1/observability/_index.md b/content/v1/observability/_index.md index 6b3ff27be8..8f9f05fc63 100644 --- a/content/v1/observability/_index.md +++ b/content/v1/observability/_index.md @@ -29,7 +29,7 @@ CSM for Observability is composed of several services, each living in its own Gi CSM for Observability provides the following capabilities: {{}} -| Capability | PowerMax | PowerFlex | Unity | PowerScale | PowerStore | +| Capability | PowerMax | PowerFlex | Unity XT | PowerScale | PowerStore | | - | :-: | :-: | :-: | :-: | :-: | | Collect and expose Volume Metrics via the OpenTelemetry Collector | no | yes | no | no | yes | | Collect and expose File System Metrics via the OpenTelemetry Collector | no | no | no | no | yes | @@ -46,8 +46,8 @@ CSM for Observability provides the following capabilities: {{
}} | COP/OS | Supported Versions | |-|-| -| Kubernetes | 1.21, 1.22, 1.23 | -| Red Hat OpenShift | 4.8, 4.9 | +| Kubernetes | 1.22, 1.23, 1.24 | +| Red Hat OpenShift | 4.9, 4.10 | | Rancher Kubernetes Engine | yes | | RHEL | 7.x, 8.x | | CentOS | 7.8, 7.9 | @@ -67,8 +67,8 @@ CSM for Observability supports the following CSI drivers and versions. {{
}} | Storage Array | CSI Driver | Supported Versions | | ------------- | ---------- | ------------------ | -| CSI Driver for Dell PowerFlex | [csi-powerflex](https://github.com/dell/csi-powerflex) | v2.0, v2.1, v2.2 | -| CSI Driver for Dell PowerStore | [csi-powerstore](https://github.com/dell/csi-powerstore) | v2.0, v2.1, v2.2 | +| CSI Driver for Dell PowerFlex | [csi-powerflex](https://github.com/dell/csi-powerflex) | v2.0 + | +| CSI Driver for Dell PowerStore | [csi-powerstore](https://github.com/dell/csi-powerstore) | v2.0 + | {{
}} ## Topology Data @@ -79,7 +79,7 @@ CSM for Observability provides Kubernetes administrators with the topology data | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | Namespace | The namespace associated with the persistent volume claim | | Persistent Volume | The name of the persistent volume | -| Status | The status of the persistent volume. "Released" indicating the persistent volume has a claim. "Bound" indicating the persistent volume has a claim | +| Status | The status of the persistent volume. "Released" indicates the persistent volume does not have a claim. "Bound" indicates the persistent volume has a claim | | Persistent Volume Claim | The name of the persistent volume claim associated with the persistent volume | | CSI Driver | The name of the CSI driver that was responsible for provisioning the volume on the storage system | | Created | The date the persistent volume was created | diff --git a/content/v1/observability/deployment/_index.md b/content/v1/observability/deployment/_index.md index 9a5d6f2566..50efaa2c3f 100644 --- a/content/v1/observability/deployment/_index.md +++ b/content/v1/observability/deployment/_index.md @@ -30,7 +30,7 @@ The Prometheus service should be running on the same Kubernetes cluster as the C | Supported Version | Image | Helm Chart | | ----------------- | ----------------------- | ------------------------------------------------------------ | -| 2.23.0 | prom/prometheus:v2.23.0 | [Prometheus Helm chart](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus) | +| 2.34.0 | prom/prometheus:v2.34.0 | [Prometheus Helm chart](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus) | **Note**: It is the user's responsibility to provide persistent storage for Prometheus if they want to preserve historical data. @@ -57,7 +57,7 @@ Here is a sample minimal configuration for Prometheus. Please note that the conf enabled: true image: repository: quay.io/prometheus/prometheus - tag: v2.23.0 + tag: v2.34.0 pullPolicy: IfNotPresent persistentVolume: enabled: false @@ -119,7 +119,7 @@ The Grafana dashboards require Grafana to be deployed in the same Kubernetes clu | Supported Version | Helm Chart | | ----------------- | --------------------------------------------------------- | -| 7.3.0-7.3.2 | [Grafana Helm chart](https://github.com/grafana/helm-charts/tree/main/charts/grafana) | +| 8.5.0 | [Grafana Helm chart](https://github.com/grafana/helm-charts/tree/main/charts/grafana) | Grafana must be configured with the following data sources/plugins: @@ -191,7 +191,7 @@ Below are the steps to deploy a new Grafana instance into your Kubernetes cluste # grafana-values.yaml image: repository: grafana/grafana - tag: 7.3.0 + tag: 8.5.0 sha: "" pullPolicy: IfNotPresent service: @@ -242,11 +242,11 @@ Below are the steps to deploy a new Grafana instance into your Kubernetes cluste ## Additional grafana server CofigMap mounts ## Defines additional mounts with CofigMap. CofigMap must be manually created in the namespace. extraConfigmapMounts: [] # If you created a ConfigMap on the previous step, delete [] and uncomment the lines below - # - name: certs-configmap - # mountPath: /etc/ssl/certs/ca-certificates.crt - # subPath: ca-certificates.crt - # configMap: certs-configmap - # readOnly: true + # - name: certs-configmap + # mountPath: /etc/ssl/certs/ca-certificates.crt + # subPath: ca-certificates.crt + # configMap: certs-configmap + # readOnly: true ``` 3. Add the Grafana Helm chart repository. diff --git a/content/v1/observability/deployment/helm.md b/content/v1/observability/deployment/helm.md index 6d76f8216f..02feb6186f 100644 --- a/content/v1/observability/deployment/helm.md +++ b/content/v1/observability/deployment/helm.md @@ -28,7 +28,7 @@ The Container Storage Modules (CSM) for Observability Helm chart bootstraps an O `kubectl get secret vxflexos-config -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -` - If [CSM for Authorization is enabled](../../../authorization/deployment/#configuring-a-dell-emc-csi-driver-with-csm-for-authorization) for CSI PowerFlex, perform the following steps: + If [CSM for Authorization is enabled](../../../authorization/deployment/#configuring-a-dell-csi-driver-with-csm-for-authorization) for CSI PowerFlex, perform the following steps: 2. Copy the driver configuration parameters ConfigMap from the CSI PowerFlex namespace into the CSM for Observability namespace: diff --git a/content/v1/observability/deployment/offline.md b/content/v1/observability/deployment/offline.md index 076921deb0..b4c5ccd9d6 100644 --- a/content/v1/observability/deployment/offline.md +++ b/content/v1/observability/deployment/offline.md @@ -130,7 +130,7 @@ To perform an offline installation of a Helm chart, the following steps should b [user@anothersystem /home/user/offline-karavi-observability-bundle/helm]# kubectl get secret vxflexos-config -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f - ``` - If [CSM for Authorization is enabled](../../../authorization/deployment/#configuring-a-dell-emc-csi-driver-with-csm-for-authorization) for CSI PowerFlex, perform the following steps: + If [CSM for Authorization is enabled](../../../authorization/deployment/#configuring-a-dell-csi-driver-with-csm-for-authorization) for CSI PowerFlex, perform these steps: ``` [user@anothersystem /home/user/offline-karavi-observability-bundle/helm]# kubectl get configmap vxflexos-config-params -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f - diff --git a/content/v1/observability/release/_index.md b/content/v1/observability/release/_index.md new file mode 100644 index 0000000000..84a9c87ea2 --- /dev/null +++ b/content/v1/observability/release/_index.md @@ -0,0 +1,19 @@ +--- +title: "Release notes" +linkTitle: "Release notes" +weight: 5 +Description: > + Dell Container Storage Modules (CSM) release notes for observability +--- + +## Release Notes - CSM Observability 1.2.0 + +### New Features/Changes + +### Fixed Issues + +- [PowerStore Grafana dashboard does not populate correctly ](https://github.com/dell/csm/issues/279) +- [Grafana installation script - prometheus address is incorrect](https://github.com/dell/csm/issues/278) +- [prometheus-values.yaml error in json](https://github.com/dell/csm/issues/259) + +### Known Issues \ No newline at end of file diff --git a/content/v1/FAQ/_index.md b/content/v1/references/FAQ/_index.md similarity index 99% rename from content/v1/FAQ/_index.md rename to content/v1/references/FAQ/_index.md index 39ffd7d493..b1fc7aabe0 100644 --- a/content/v1/FAQ/_index.md +++ b/content/v1/references/FAQ/_index.md @@ -2,7 +2,7 @@ title: "CSM FAQ" linktitle: "FAQ" description: Frequently asked questions of Dell Technologies (Dell) Container Storage Modules -weight: 2 +weight: 1 --- - [What are Dell Container Storage Modules (CSM)? How different is it from a CSI driver?](#what-are-dell-container-storage-modules-csm-how-different-is-it-from-a-csi-driver) diff --git a/content/v1/references/_index.md b/content/v1/references/_index.md new file mode 100644 index 0000000000..28cae60329 --- /dev/null +++ b/content/v1/references/_index.md @@ -0,0 +1,7 @@ +--- +title: "References" +linkTitle: "References" +weight: 13 +Description: > + Dell Technologies (Dell) Container Storage Modules (CSM) References +--- diff --git a/content/v1/contributionguidelines/_index.md b/content/v1/references/contributionguidelines/_index.md similarity index 99% rename from content/v1/contributionguidelines/_index.md rename to content/v1/references/contributionguidelines/_index.md index e02b519065..427bd231af 100644 --- a/content/v1/contributionguidelines/_index.md +++ b/content/v1/references/contributionguidelines/_index.md @@ -1,7 +1,7 @@ --- title: "Contribution Guidelines" linkTitle: "Contribution Guidelines" -weight: 12 +weight: 3 Description: > Dell Technologies (Dell) Container Storage Modules (CSM) docs Contribution Guidelines --- diff --git a/content/v1/grasp/_index.md b/content/v1/references/learn/_index.md similarity index 88% rename from content/v1/grasp/_index.md rename to content/v1/references/learn/_index.md index f81a8d8e68..9facbd2d26 100644 --- a/content/v1/grasp/_index.md +++ b/content/v1/references/learn/_index.md @@ -1,5 +1,5 @@ --- title: Learn Description: Brief tutorials on Devops, Kubernetes and containers -weight: 10 +weight: 2 --- diff --git a/content/v1/grasp/start.md b/content/v1/references/learn/start.md similarity index 100% rename from content/v1/grasp/start.md rename to content/v1/references/learn/start.md diff --git a/content/v1/grasp/video.md b/content/v1/references/learn/video.md similarity index 100% rename from content/v1/grasp/video.md rename to content/v1/references/learn/video.md diff --git a/content/v1/references/policies/_index.md b/content/v1/references/policies/_index.md new file mode 100644 index 0000000000..a5e2875d16 --- /dev/null +++ b/content/v1/references/policies/_index.md @@ -0,0 +1,7 @@ +--- +title: "Policies" +linkTitle: "Policies" +weight: 4 +Description: > + Dell Technologies (Dell) Container Storage Modules (CSM) Policies +--- diff --git a/content/v1/policies/deprecationpolicy/_index.md b/content/v1/references/policies/deprecationpolicy/_index.md similarity index 100% rename from content/v1/policies/deprecationpolicy/_index.md rename to content/v1/references/policies/deprecationpolicy/_index.md diff --git a/content/v1/release/_index.md b/content/v1/release/_index.md new file mode 100644 index 0000000000..97a5c32dc9 --- /dev/null +++ b/content/v1/release/_index.md @@ -0,0 +1,19 @@ +--- +title: "Release notes" +linkTitle: "Release notes" +weight: 10 +Description: > + Dell Container Storage Modules (CSM) release notes +--- + +Release notes for Container Storage Modules: + +[CSI Drivers](../csidriver/release) + +[CSM for Authorization](../authorization/release) + +[CSM for Observability](../observability/release) + +[CSM for Replication](../replication/release) + +[CSM for Resiliency](../resiliency/release) \ No newline at end of file diff --git a/content/v1/replication/_index.md b/content/v1/replication/_index.md index cae6e7d45d..df4d1bb45c 100644 --- a/content/v1/replication/_index.md +++ b/content/v1/replication/_index.md @@ -30,8 +30,8 @@ CSM for Replication provides the following capabilities: {{}} | COP/OS | PowerMax | PowerStore | PowerScale | |---------------|------------------|------------------|------------| -| Kubernetes | 1.21, 1.22, 1.23 | 1.21, 1.22, 1.23 | 1.21, 1.22, 1.23 | -| Red Hat OpenShift | 4.8, 4.9 | 4.8, 4.9 | 4.8, 4.9 | +| Kubernetes | 1.22, 1.23, 1.24 | 1.22, 1.23, 1.24 | 1.22, 1.23, 1.24 | +| Red Hat OpenShift | 4.9, 4.10 | 4.9, 4.10 | 4.9, 4.10 | | RHEL | 7.x, 8.x | 7.x, 8.x | 7.x, 8.x | | CentOS | 7.8, 7.9 | 7.8, 7.9 | 7.8, 7.9 | | Ubuntu | 20.04 | 20.04 | 20.04 | @@ -50,11 +50,11 @@ CSM for Replication provides the following capabilities: CSM for Replication supports the following CSI drivers and versions. {{
}} -| Storage Array | CSI Driver | Supported Versions | -| ------------------------------ | -------------------------------------------------------- | ------------------ | -| CSI Driver for Dell PowerMax | [csi-powermax](https://github.com/dell/csi-powermax) | v2.0, v2.1, v2.2 | -| CSI Driver for Dell PowerStore | [csi-powerstore](https://github.com/dell/csi-powerstore) | v2.0, v2.1, v2.2 | -| CSI Driver for Dell PowerScale | [csi-powerscale](https://github.com/dell/csi-powerscale) | v2.2 | +| Storage Array | CSI Driver | Supported Versions | +| ------------- | ---------- | ------------------ | +| CSI Driver for Dell PowerMax | [csi-powermax](https://github.com/dell/csi-powermax) | v2.0 + | +| CSI Driver for Dell PowerStore | [csi-powerstore](https://github.com/dell/csi-powerstore) | v2.0 + | +| CSI Driver for Dell PowerScale | [csi-powerscale](https://github.com/dell/csi-powerscale) | v2.2 + | {{
}} ## Details @@ -74,6 +74,8 @@ the objects still exist in pairs. * Start applications after the migration. * Replicate `PersistentVolumeClaim` objects within/across clusters. * Replication with METRO mode does not need Replicator sidecar and common controller. +* Different namespaces cannot share the same RDF group for creating volumes with ASYNC mode for PowerMax. +* Same RDF group cannot be shared across different replication modes for PowerMax. ### CSM for Replication Module Capabilities @@ -94,9 +96,9 @@ The following matrix provides a list of all supported versions for each Dell Sto | Platforms | PowerMax | PowerStore | PowerScale | | ---------- | ----------------- | ---------------- | ---------------- | -| Kubernetes | 1.21, 1.22, 1.23 | 1.21, 1.22, 1.23 | 1.21, 1.22, 1.23 | -| RedHat Openshift |4.8, 4.9 | 4.8, 4.9 | 4.8, 4.9 | -| CSI Driver | 2.x | 2.x | 2.2+ | +| Kubernetes | 1.22, 1.23, 1.24 | 1.22, 1.23, 1.24 | 1.22, 1.23, 1.24 | +| RedHat Openshift |4.9, 4.10 | 4.9, 4.10 | 4.9, 4.10 | +| CSI Driver | 2.x(k8s),
2.2+(OpenShift)| 2.x | 2.2+ | For compatibility with storage arrays please refer to corresponding [CSI drivers](../csidriver/#features-and-capabilities) diff --git a/content/v1/replication/deployment/installation.md b/content/v1/replication/deployment/installation.md index 3a30e17f5e..005637fac7 100644 --- a/content/v1/replication/deployment/installation.md +++ b/content/v1/replication/deployment/installation.md @@ -47,12 +47,15 @@ kubectl create ns dell-replication-controller cp ../helm/csm-replication/values.yaml ./myvalues.yaml bash scripts/install.sh --values ./myvalues.yaml ``` ->Note: Current installation method allows you to specify custom `:` entry to be appended to controller's `/etc/hosts` file. It can be useful if controller is being deployed in private environment where DNS is not set up properly, but kubernetes clusters use FQDN as API server's address. +>Note: Current installation method allows you to specify custom `:` entries to be appended to controller's `/etc/hosts` file. It can be useful if controller is being deployed in private environment where DNS is not set up properly, but kubernetes clusters use FQDN as API server's address. > The feature can be enabled by modifying `values.yaml`. >``` hostAliases: -> enableHostAliases: true -> hostName: "foo.bar" -> ip: "10.10.10.10" +> - ip: "10.10.10.10" +> hostnames: +> - "foo.bar" +> - ip: "10.10.10.11" +> hostnames: +> - "foo.baz" This script will do the following: 1. Install `DellCSIReplicationGroup` CRD in your cluster diff --git a/content/v1/replication/high-availability.md b/content/v1/replication/high-availability.md index 447036e440..1f2d9b7fe2 100644 --- a/content/v1/replication/high-availability.md +++ b/content/v1/replication/high-availability.md @@ -46,6 +46,9 @@ reclaimPolicy: Delete volumeBindingMode: Immediate ``` +> Note: Different namespaces can share the same RDF group for creating volumes. + + ### Snapshots on SRDF Metro volumes A snapshot can be created on either of the volumes in the metro volume pair depending on the parameters in the `VolumeSnapshotClass`. The snapshots are by default created on the volumes on the R1 side of the SRDF metro pair, but if a Symmetrix id is specified in the `VolumeSnapshotClass` parameters, the driver creates the snapshot on the specified array; the specified array can either be the R1 or the R2 array. A `VolumeSnapshotClass` with symmetrix id specified in parameters may look as follows: @@ -59,4 +62,4 @@ driver: driver.dellemc.com deletionPolicy: Delete parameters: SYMID: '000000000001' -``` \ No newline at end of file +``` diff --git a/content/v1/replication/migrating-volumes.md b/content/v1/replication/migrating-volumes.md new file mode 100644 index 0000000000..da524dc314 --- /dev/null +++ b/content/v1/replication/migrating-volumes.md @@ -0,0 +1,145 @@ +--- +title: Migrating Volumes +linktitle: Migrating Volumes +weight: 6 +description: > + Migrating Volumes Between Storage Classes +--- + +You can migrate existing pre-provisioned volumes to another storage class by using volume migration feature. + +As of CSM 1.3 two versions of migration are supported: +- To replicated storage class from NON replicated one +- To NON replicated storage class from replicated one + +## Prerequisites +- Original volume is from the one of currently supported CSI drivers (see Support Matrix) +- Migrated sidecar is installed alongside with the driver, you can enable it in your `myvalues.yaml` file +```yaml +migration: + enabled: true +``` + +## Support Matrix +| Migration Type | PowerMax | PowerStore | PowerScale | PowerFlex | Unity | +| - | - | - | - | - | - | +| NON_REPL_TO_REPL | Yes | No | No | No | No | +| REPL_TO_NON_REPL | Yes | No | No | No | No | + + +## Basic Usage + +To trigger migration procedure, you need to patch existing PersistentVolume with migration annotation (by default `migration.storage.dell.com/migrate-to`) and in value of said annotation specify StorageClass name you want to migrate to. + +For example, if we have PV named `test-pv` already provisioned and we want to migrate it to replicated storage class named `powermax-replication` we can run: + +```shell +kubectl patch pv test-pv -p '{"metadata": {"annotations":{"migration.storage.dell.com/migrate-to":"powermax-replication"}}}' +``` + +Patching PV resource will trigger migration sidecar that will call `VolumeMigrate` call from the CSI driver. After migration is finished new PersistentVolume will be created in cluster with name of original PV plus `-to-` appended to it. + +In our example, we will see this when running `kubectl get pv`: +```shell +NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE +test-pv 1Gi RWO Retain Bound default/test-pvc powermax 5m +test-pv-to-powermax-replication 1Gi RWO Retain Available powermax-replication 10s + +``` + +When Volume Migration is finished source PV will be updated with EVENT that denotes that this has taken place. + +Newly created PV (`test-pv-to-powermax-replication` in our example) is available for consumption via static provisioning by any PVC that will request it. + + +## Namespace Considerations For Replication + +Replication Groups in CSM Replication can be made namespaced, meaning that one SC will generate one Replication Group per namespace. This is also important when migrating volumes from/to replcation storage class. + +When just setting one annotation `migration.storage.dell.com/migrate-to` migrated volume is assumed to be used in same namespace as original PV and it's PVC. In the case of being migrated to replication enabled storage class will be inserted in namespaced Replication Group inside PVC namespace. + +However, you can define in which namespace migrated volume must be used after migration by setting `migration.storage.dell.com/namespace`. You can use the same annotation in a scenario where you only have a statically provisioned PV, and you don't have it bound to any PVC, and you want to migrate it to another storage class. + + +## Non Disruptive Migration + +You can migrate your PVs without disrupting workflows if you use StatefulSet with multiple replicas to deploy application. + +Instruction (you can also use `repctl` for convenience): + +1. Find every PV for your StatefulSet and patch it with `migration.storage.dell.com/migrate-to` annotation that points to new storage class +```shell +kubectl patch pv -p '{"metadata": {"annotations":{"migration.storage.dell.com/migrate-to":"powermax-replication"}}}' +``` + +2. Ensure you have a copy of StatefulSet manifest somewhere ready, we will need it later. If you don't have it, you can get it from cluster +```shell +kubectl get sts -n -o yaml > sts-manifest.yaml +``` + +3. To not disrupt any workflows we will need to delete StatefulSet without deleting any pods, to do so you can use `--cascade` flag +```shell +kubectl delete sts -n --cascade=orphan +``` + +4. Change StorageClass in your manifest of StatefulSet to point to a new storage class, then apply it to the cluster +```shell +kubectl apply -f sts-manifest.yaml +``` + +5. Find a PVC and pod of one replica of StatefulSet delete PVCs first and Pod after it +```shell +kubectl delete pvc -n +``` +```shell +kubectl delete pod -n +``` + +Wait for new pod to be created by StatefulSet, it should create new PVC that will use migrated PV. + +6. Repeat step 5 until all replicas use new PVCs + + +## Using repctl + +You can use `repctl` CLI tool to help you simplify running migration specific commands. + +### Single PV + +In most its basic form repctl can do the same as kubectl, for example, migrating single PV from our example will look like: + +```shell +./repctl migrate pv test-pv --to-sc powermax-replication +``` + +`repctl` will go and patch the resource for you. You can also provide `--wait` flag for it to wait until migrated PV is created in cluster. +`repctl` also can set `migration.storage.dell.com/namespace` for you if you provide `--target-ns` flag. + + +Aside from just migrating single PVs repctl can migrate PVCs and StatefulSets. + +### PVC + +`repctl` can find PV for any given PVC for you and patch it. +This could be done with similar command to single PV migration: + +```shell +./repctl migrate pvc test-pvc --to-sc powermax-replication -n default +``` + +Notice that we provide original namespace (`default` in our example) for this command because PVCs are namespaced resource and we need namespace to be able to find it. + + +### StatefulSet + + +`repctl` can help you migrate entire StatefulSet by automating migration process. + +You can use this command to do so: +```shell +./repctl migrate sts test-sts --to-sc powermax-replication -n default +``` + +By default, it will find every Pod, PVC and PV for provided StatefulSet and patch every PV with annotation. + +You can also optionally provide `--ndu` flag, with this flag provided repctl will do steps provided in [Non Disruptive Migration](#non-disruptive-migration) section automatically. diff --git a/content/v1/replication/release/_index.md b/content/v1/replication/release/_index.md new file mode 100644 index 0000000000..9d19354c4f --- /dev/null +++ b/content/v1/replication/release/_index.md @@ -0,0 +1,26 @@ +--- +title: "Release notes" +linkTitle: "Release notes" +weight: 9 +Description: > + Dell Container Storage Modules (CSM) release notes for replication +--- + +## Release Notes - CSM Replication 1.3.0 + +### New Features/Changes +- Added support for Kubernetes 1.24 +- Added support for OpenShift 4.10 +- Added volume upgrade/downgrade functionality for replication volumes + + +### Fixed Issues +- Fixed panic occuring when encountering PVC with empty StorageClass +- PV and RG retention policy checks are no longer case sensitive +- RG will now display EMPTY link state when no PV found +- [`PowerScale`] Running `reprotect` action on source cluster after failover no longer puts RG into UNKNOWN state +- [`PowerScale`] Deleting RG will break replication link before trying to delete group on array + +### Known Issues + +There are no known issues in this release. diff --git a/content/v1/resiliency/_index.md b/content/v1/resiliency/_index.md index 7ccb890831..ab043bc23d 100644 --- a/content/v1/resiliency/_index.md +++ b/content/v1/resiliency/_index.md @@ -27,30 +27,30 @@ Accordingly, CSM for Resiliency is adapted to and qualified with each CSI driver CSM for Resiliency provides the following capabilities: {{}} -| Capability | PowerScale | Unity | PowerStore | PowerFlex | PowerMax | -| --------------------------------------- | :--------: | :---: | :--------: | :-------: | :------: | -| Detect pod failures when: Node failure, K8S Control Plane Network failure, K8S Control Plane failure, Array I/O Network failure | no | yes | no | yes | no | -| Cleanup pod artifacts from failed nodes | no | yes | no | yes | no | -| Revoke PV access from failed nodes | no | yes | no | yes | no | +| Capability | PowerScale | Unity XT | PowerStore | PowerFlex | PowerMax | +| --------------------------------------- | :--------: | :------: | :--------: | :-------: | :------: | +| Detect pod failures when: Node failure, K8S Control Plane Network failure, K8S Control Plane failure, Array I/O Network failure | yes | yes | no | yes | no | +| Cleanup pod artifacts from failed nodes | yes | yes | no | yes | no | +| Revoke PV access from failed nodes | yes | yes | no | yes | no | {{
}} ## Supported Operating Systems/Container Orchestrator Platforms {{}} -| COP/OS | Supported Versions | -| ---------- | :----------------: | -| Kubernetes | 1.21, 1.22, 1.23 | -| Red Hat OpenShift | 4.8, 4.9 | -| RHEL | 7.x, 8.x | -| CentOS | 7.8, 7.9 | +| COP/OS | Supported Versions | +| ----------------- | :----------------: | +| Kubernetes | 1.22, 1.23, 1.24 | +| Red Hat OpenShift | 4.9, 4.10 | +| RHEL | 7.x, 8.x | +| CentOS | 7.8, 7.9 | {{
}} ## Supported Storage Platforms {{}} -| | PowerFlex | Unity | -| ------------- | :----------: | :------------------------: | -| Storage Array | 3.5.x, 3.6.x | 5.0.5, 5.0.6, 5.0.7, 5.1.0, 5.1.2 | +| | PowerFlex | Unity XT | PowerScale | +| ------------- | :----------: | :-------------------------------: | :-------------------------------------: | +| Storage Array | 3.5.x, 3.6.x | 5.0.5, 5.0.6, 5.0.7, 5.1.0, 5.1.2 | OneFS 8.1, 8.2, 9.0, 9.1, 9.2, 9.3, 9.4 | {{
}} ## Supported CSI Drivers @@ -59,30 +59,39 @@ CSM for Resiliency supports the following CSI drivers and versions. {{}} | Storage Array | CSI Driver | Supported Versions | | --------------------------------- | :----------: | :----------------: | -| CSI Driver for Dell PowerFlex | [csi-powerflex](https://github.com/dell/csi-powerflex) | v2.0, v2.1, v2.2 | -| CSI Driver for Dell Unity | [csi-unity](https://github.com/dell/csi-unity) | v2.0, v2.1, v2.2 | +| CSI Driver for Dell PowerFlex | [csi-powerflex](https://github.com/dell/csi-powerflex) | v2.0.0 + | +| CSI Driver for Dell Unity XT | [csi-unity](https://github.com/dell/csi-unity) | v2.0.0 + | +| CSI Driver for Dell PowerScale | [csi-powerscale](https://github.com/dell/csi-powerscale) | v2.3.0 + | {{
}} ### PowerFlex Support -PowerFlex is a highly scalable array that is very well suited to Kubernetes deployments. The CSM for Resiliency support for PowerFlex leverages the following PowerFlex features: +PowerFlex is a highly scalable array that is very well suited to Kubernetes deployments. The CSM for Resiliency support for PowerFlex leverages these PowerFlex features: * Very quick detection of Array I/O Network Connectivity status changes (generally takes 1-2 seconds for the array to detect changes) * A robust mechanism if Nodes are doing I/O to volumes (sampled over a 5-second period). * Low latency REST API supports fast CSI provisioning and de-provisioning operations. * A proprietary network protocol provided by the SDC component that can run over the same IP interface as the K8S control plane or over a separate IP interface for Array I/O. -### Unity Support +### Unity XT Support -Dell Unity is targeted for midsized deployments, remote or branch offices, and cost-sensitive mixed workloads. Unity systems are designed for all-Flash, deliver the best value in the market, and are available in purpose-built (all Flash or hybrid Flash), converged deployment options (through VxBlock), and software-defined virtual edition. +Dell Unity XT is targeted for midsized deployments, remote or branch offices, and cost-sensitive mixed workloads. Unity XT systems are designed to deliver the best value in the market. They support all-Flash, and are available in purpose-built (all Flash or hybrid Flash), converged deployment options (through VxBlock), and software-defined virtual edition. -* Unity (purpose-built): A modern midrange storage solution, engineered from the groundup to meet market demands for Flash, affordability and incredible simplicity. The Unity Family is available in 12 All Flash models and 12 Hybrid models. -* VxBlock (converged): Unity storage options are also available in Dell VxBlock System 1000. -* UnityVSA (virtual): The Unity Virtual Storage Appliance (VSA) allows the advanced unified storage and data management features of the Unity family to be easily deployed on VMware ESXi servers, for a ‘software defined’ approach. UnityVSA is available in two editions: +* Unity XT (purpose-built): A modern midrange storage solution, engineered from the groundup to meet market demands for Flash, affordability and incredible simplicity. The Unity XT Family is available in 12 All Flash models and 12 Hybrid models. +* VxBlock (converged): Unity XT storage options are also available in Dell VxBlock System 1000. +* UnityVSA (virtual): The Unity XT Virtual Storage Appliance (VSA) allows the advanced unified storage and data management features of the Unity XT family to be easily deployed on VMware ESXi servers. This allows for a ‘software defined’ approach. UnityVSA is available in two editions: * Community Edition is a free downloadable 4 TB solution recommended for nonproduction use. * Professional Edition is a licensed subscription-based offering available at capacity levels of 10 TB, 25 TB, and 50 TB. The subscription includes access to online support resources, EMC Secure Remote Services (ESRS), and on-call software- and systems-related support. -All three deployment options, i.e. Unity, UnityVSA, and Unity-based VxBlock, enjoy one architecture, one interface with consistent features and rich data services. +All three deployment options, Unity XT, UnityVSA, and Unity-based VxBlock, enjoy one architecture, one interface with consistent features and rich data services. + +### PowerScale Support + +PowerScale is a highly scalable NFS array that is very well suited to Kubernetes deployments. The CSM for Resiliency support for PowerScale leverages the following PowerScale features: + +* Detection of Array I/O Network Connectivity status changes. +* A robust mechanism to detect if Nodes are actively doing I/O to volumes. +* Low latency REST API supports fast CSI provisioning and de-provisioning operations. ## Limitations and Exclusions @@ -97,11 +106,11 @@ The following provisioning types are supported and have been tested: * Use of the above volumes with Pods created by StatefulSets. * Up to 12 or so protected pods on a given node. * Failing up to 3 nodes at a time in 9 worker node clusters, or failing 1 node at a time in smaller clusters. Application recovery times are dependent on the number of pods that need to be moved as a result of the failure. See the section on "Testing and Performance" for some of the details. +* Multi-array are supported. In case of CSI Driver for PowerScale and CSI Driver for Unity, if any one of the array is not connected, the array connectivity will be false. CSI Driver for Powerflex connectivity will be determined by connection to default array. ### Not Tested But Assumed to Work * Deployments with the above volume types, provided two pods from the same deployment do not reside on the same node. At the current time anti-affinity rules should be used to guarantee no two pods accessing the same volumes are scheduled to the same node. -* Multi-array support ### Not Yet Tested or Supported diff --git a/content/v1/resiliency/deployment.md b/content/v1/resiliency/deployment.md index 6da570dfd5..8a4a20519f 100644 --- a/content/v1/resiliency/deployment.md +++ b/content/v1/resiliency/deployment.md @@ -10,7 +10,9 @@ CSM for Resiliency is installed as part of the Dell CSI driver installation. The For information on the PowerFlex CSI driver, see [PowerFlex CSI Driver](https://github.com/dell/csi-powerflex). -For information on the Unity CSI driver, see [Unity CSI Driver](https://github.com/dell/csi-unity). +For information on the Unity XT CSI driver, see [Unity XT CSI Driver](https://github.com/dell/csi-unity). + +For information on the PowerScale CSI driver, see [PowerScale CSI Driver](https://github.com/dell/csi-powerscale). Configure all the helm chart parameters described below before installing the drivers. @@ -23,7 +25,7 @@ The drivers that support Helm chart installation allow CSM for Resiliency to be # Enable this feature only after contact support for additional information podmon: enabled: true - image: dellemc/podmon:v1.1.0 + image: dellemc/podmon:v1.2.0 controller: args: - "--csisock=unix:/var/run/csi/csi.sock" @@ -31,6 +33,7 @@ podmon: - "--mode=controller" - "--skipArrayConnectionValidation=false" - "--driver-config-params=/vxflexos-config-params/driver-config-params.yaml" + - "--driverPodLabelValue=dell-storage" node: args: - "--csisock=unix:/var/lib/kubelet/plugins/vxflexos.emc.dell.com/csi_sock" @@ -38,6 +41,7 @@ podmon: - "--mode=node" - "--leaderelection=false" - "--driver-config-params=/vxflexos-config-params/driver-config-params.yaml" + - "--driverPodLabelValue=dell-storage" ``` @@ -58,8 +62,8 @@ To install CSM for Resiliency with the driver, the following changes are require | leaderelection | Required | Boolean value that should be set true for controller and false for node. The default value is true. | controller & node | | skipArrayConnectionValidation | Optional | Boolean value that if set to true will cause controllerPodCleanup to skip the validation that no I/O is ongoing before cleaning up the pod. If set to true will cause controllerPodCleanup on K8S Control Plane failure (kubelet service down). | controller | | labelKey | Optional | String value that sets the label key used to denote pods to be monitored by CSM for Resiliency. It will make life easier if this key is the same for all driver types, and drivers are differentiated by different labelValues (see below). If the label keys are the same across all drivers you can do `kubectl get pods -A -l labelKey` to find all the CSM for Resiliency protected pods. labelKey defaults to "podmon.dellemc.com/driver". | controller & node | -| labelValue | Required | String that sets the value that denotes pods to be monitored by CSM for Resiliency. This must be specific for each driver. Defaults to "csi-vxflexos" for CSI Driver for Dell PowerFlex and "csi-unity" for CSI Driver for Dell Unity | controller & node | -| arrayConnectivityPollRate | Optional | The minimum polling rate in seconds to determine if the array has connectivity to a node. Should not be set to less than 5 seconds. See the specific section for each array type for additional guidance. | controller | +| labelValue | Required | String that sets the value that denotes pods to be monitored by CSM for Resiliency. This must be specific for each driver. Defaults to "csi-vxflexos" for CSI Driver for Dell PowerFlex and "csi-unity" for CSI Driver for Dell Unity XT | controller & node | +| arrayConnectivityPollRate | Optional | The minimum polling rate in seconds to determine if the array has connectivity to a node. Should not be set to less than 5 seconds. See the specific section for each array type for additional guidance. | controller & node | | arrayConnectivityConnectionLossThreshold | Optional | Gives the number of failed connection polls that will be deemed to indicate array connectivity loss. Should not be set to less than 3. See the specific section for each array type for additional guidance. | controller | | driver-config-params | Required | String that set the path to a file containing configuration parameter(for instance, Log levels) for a driver. | controller & node | @@ -75,24 +79,26 @@ podmon: enabled: true controller: args: - - "-csisock=unix:/var/run/csi/csi.sock" - - "-labelvalue=csi-vxflexos" - - "-mode=controller" - - "-arrayConnectivityPollRate=5" - - "-arrayConnectivityConnectionLossThreshold=3" + - "--csisock=unix:/var/run/csi/csi.sock" + - "--labelvalue=csi-vxflexos" + - "--mode=controller" + - "--arrayConnectivityPollRate=5" + - "--arrayConnectivityConnectionLossThreshold=3" - "--skipArrayConnectionValidation=false" - "--driver-config-params=/vxflexos-config-params/driver-config-params.yaml" + - "--driverPodLabelValue=dell-storage" node: args: - - "-csisock=unix:/var/lib/kubelet/plugins/vxflexos.emc.dell.com/csi_sock" - - "-labelvalue=csi-vxflexos" - - "-mode=node" - - "-leaderelection=false" + - "--csisock=unix:/var/lib/kubelet/plugins/vxflexos.emc.dell.com/csi_sock" + - "--labelvalue=csi-vxflexos" + - "--mode=node" + - "--leaderelection=false" - "--driver-config-params=/vxflexos-config-params/driver-config-params.yaml" + - "--driverPodLabelValue=dell-storage" ``` -## Unity Specific Recommendations +## Unity XT Specific Recommendations Here is a typical installation used for testing: @@ -102,28 +108,60 @@ podmon: enabled: true controller: args: - - "-csisock=unix:/var/run/csi/csi.sock" - - "-labelvalue=csi-unity" - - "-driverPath=csi-unity.dellemc.com" - - "-mode=controller" + - "--csisock=unix:/var/run/csi/csi.sock" + - "--labelvalue=csi-unity" + - "--driverPath=csi-unity.dellemc.com" + - "--mode=controller" - "--skipArrayConnectionValidation=false" - "--driver-config-params=/unity-config/driver-config-params.yaml" + - "--driverPodLabelValue=dell-storage" node: args: - - "-csisock=unix:/var/lib/kubelet/plugins/unity.emc.dell.com/csi_sock" - - "-labelvalue=csi-unity" - - "-driverPath=csi-unity.dellemc.com" - - "-mode=node" - - "-leaderelection=false" + - "--csisock=unix:/var/lib/kubelet/plugins/unity.emc.dell.com/csi_sock" + - "--labelvalue=csi-unity" + - "--driverPath=csi-unity.dellemc.com" + - "--mode=node" + - "--leaderelection=false" - "--driver-config-params=/unity-config/driver-config-params.yaml" + - "--driverPodLabelValue=dell-storage" + +``` + +## PowerScale Specific Recommendations + +Here is a typical installation used for testing: +```yaml +podmon: + image: dellemc/podmon + enabled: true + controller: + args: + - "--csisock=unix:/var/run/csi/csi.sock" + - "--labelvalue=csi-isilon" + - "--arrayConnectivityPollRate=60" + - "--driverPath=csi-isilon.dellemc.com" + - "--mode=controller" + - "--skipArrayConnectionValidation=false" + - "--driver-config-params=/csi-isilon-config-params/driver-config-params.yaml" + - "--driverPodLabelValue=dell-storage" + node: + args: + - "--csisock=unix:/var/lib/kubelet/plugins/csi-isilon/csi_sock" + - "--labelvalue=csi-isilon" + - "--arrayConnectivityPollRate=60" + - "--driverPath=csi-isilon.dellemc.com" + - "--mode=node" + - "--leaderelection=false" + - "--driver-config-params=/csi-isilon-config-params/driver-config-params.yaml" + - "--driverPodLabelValue=dell-storage" ``` ## Dynamic parameters CSM for Resiliency has configuration parameters that can be updated dynamically, such as the logging level and format. This can be -done by editing the DellEMC CSI Driver's parameters ConfigMap. The ConfigMap can be queried using kubectl. -For example, the DellEMC Powerflex CSI Driver ConfigMaps can be found using the following command: `kubectl get -n vxflexos configmap`. +done by editing the Dell CSI Driver's parameters ConfigMap. The ConfigMap can be queried using kubectl. +For example, the Dell Powerflex CSI Driver ConfigMaps can be found using this command: `kubectl get -n vxflexos configmap`. The ConfigMap to edit will have this pattern: -config-params (e.g., `vxflexos-config-params`). To update or add parameters, you can use the `kubectl edit` command. For example, `kubectl edit -n vxflexos configmap vxflexos-config-params`. diff --git a/content/v1/resiliency/release/_index.md b/content/v1/resiliency/release/_index.md new file mode 100644 index 0000000000..3beec86748 --- /dev/null +++ b/content/v1/resiliency/release/_index.md @@ -0,0 +1,21 @@ +--- +title: "Release notes" +linkTitle: "Release notes" +weight: 1 +Description: > + Dell Container Storage Modules (CSM) release notes for resiliency +--- + +## Release Notes - CSM Resiliency 1.2.0 + +### New Features/Changes + +- Support for node taint when driver pod is unhealthy. +- Resiliency protection on driver node pods, see [CSI node failure protection](https://github.com/dell/csm/issues/145). +- Resiliency support for CSI Driver for PowerScale, see [CSI Driver for PowerScale](https://github.com/dell/csm/issues/262). + +### Fixed Issues + +- Occasional failure unmounting Unity volume for raw block devices via iSCSI, see [unmounting Unity volume](https://github.com/dell/csm/issues/237). + +### Known Issues \ No newline at end of file diff --git a/content/v1/resiliency/upgrade.md b/content/v1/resiliency/upgrade.md index 4466c77cc6..a8cc56a9c2 100644 --- a/content/v1/resiliency/upgrade.md +++ b/content/v1/resiliency/upgrade.md @@ -10,7 +10,9 @@ CSM for Resiliency can be upgraded as part of the Dell CSI driver upgrade proces For information on the PowerFlex CSI driver upgrade process, see [PowerFlex CSI Driver](../../csidriver/upgradation/drivers/powerflex). -For information on the Unity CSI driver upgrade process, see [Unity CSI Driver](../../csidriver/upgradation/drivers/unity). +For information on the Unity XT CSI driver upgrade process, see [Unity XT CSI Driver](../../csidriver/upgradation/drivers/unity). + +For information on the PowerScale CSI driver upgrade process, see [PowerScale CSI Driver](../../csidriver/upgradation/drivers/isilon). ## Helm Chart Upgrade diff --git a/content/v1/resiliency/usecases.md b/content/v1/resiliency/usecases.md index daac595325..22ce18aae0 100644 --- a/content/v1/resiliency/usecases.md +++ b/content/v1/resiliency/usecases.md @@ -38,3 +38,5 @@ CSM for Resiliency's design is focused on detecting the following types of hardw 3. Array I/O Network failure is detected by polling the array to determine if the array has a healthy connection to the node. The capabilities to do this vary greatly by array and communication protocol type (Fibre Channel, iSCSI, NFS, NVMe, or PowerFlex SDC IP protocol). By monitoring the Array I/O Network separately from the Control Plane Network, CSM for Resiliency has two different indicators of whether the node is healthy or not. 4. K8S Control Plane Failure. Control Plane Failure is defined as failure of kubelet in a given node. K8S Control Plane failures are generally discovered by receipt of a Node event with a NoSchedule or NoExecute taint, or detection of such a taint when retrieving the Node via the K8S API. + +5. CSI Driver node pods. CSM for Resiliency monitors CSI driver node pods.If for any reason the CSI Driver node pods fail and enter the Not Ready state, it will taint the node with NoSchedule value. This will disable kubernetes scheduler to schedule new workloads on the given node, hence avoid workloads that needed CSI Driver pods to be in Ready state. diff --git a/content/v1/snapshots/volume-group-snapshots/_index.md b/content/v1/snapshots/volume-group-snapshots/_index.md new file mode 100644 index 0000000000..c266498bef --- /dev/null +++ b/content/v1/snapshots/volume-group-snapshots/_index.md @@ -0,0 +1,51 @@ +--- +title: "Volume Group Snapshots" +linkTitle: "Volume Group Snapshots" +weight: 8 +Description: > + Volume Group Snapshot module of Dell CSI drivers +--- +## Volume Group Snapshot Feature + +In order to use Volume Group Snapshots, ensure the volume snapshot module is enabled. +- Kubernetes Volume Snapshot CRDs +- Volume Snapshot Controller +- Volume Snapshot Class + +### Creating Volume Group Snapshots +This is a sample manifest for creating a Volume Group Snapshot: +```yaml +apiVersion: volumegroup.storage.dell.com/v1 +kind: DellCsiVolumeGroupSnapshot +metadata: + name: "vgs-test" + namespace: "test" +spec: + # Add fields here + driverName: "csi-.dellemc.com" # Example: "csi-powerstore.dellemc.com" + # defines how to process VolumeSnapshot members when volume group snapshot is deleted + # "Retain" - keep VolumeSnapshot instances + # "Delete" - delete VolumeSnapshot instances + memberReclaimPolicy: "Retain" + volumesnapshotclass: "" + pvcLabel: "vgs-snap-label" + # pvcList: + # - "pvcName1" + # - "pvcName2" +``` + +The PVC labels field specifies a label that must be present in PVCs that are to be snapshotted. Here is a sample of that portion of a .yaml for a PVC: + +```yaml +metadata: + name: volume1 + namespace: test + labels: + volume-group: vgs-snap-label +``` + +More details about the installation and use of the VolumeGroup Snapshotter can be found here: [dell-csi-volumegroup-snapshotter](https://github.com/dell/csi-volumegroup-snapshotter). + +>Note: Volume group cannot be seen from the Kubernetes level as of now only volume group snapshots can be viewed as a CRD + +>Volume Group Snapshots feature is supported with Helm. diff --git a/content/v2/_index.md b/content/v2/_index.md index 68f876afee..181e677e61 100644 --- a/content/v2/_index.md +++ b/content/v2/_index.md @@ -17,23 +17,23 @@ CSM is made up of multiple components including modules (enterprise capabilities ## CSM Supported Modules and Dell CSI Drivers -| Modules/Drivers | CSM 1.2 | [CSM 1.1](../v1/) | [CSM 1.0.1](../v1/) | [CSM 1.0](../v2/) | +| Modules/Drivers | CSM 1.2.1 | [CSM 1.2](../v1/) | [CSM 1.1](../v1/) | [CSM 1.0.1](../v2/) | | - | :-: | :-: | :-: | :-: | -| [Authorization](https://hub.docker.com/r/dellemc/csm-authorization-sidecar) | 1.2 | 1.1 | 1.0 | 1.0 | -| [Observability](https://hub.docker.com/r/dellemc/csm-topology) | 1.1 | 1.0.1 | 1.0.1 | 1.0 | -| [Replication](https://hub.docker.com/r/dellemc/dell-csi-replicator) | 1.2 | 1.1 | 1.0 | 1.0 | -| [Resiliency](https://hub.docker.com/r/dellemc/podmon) | 1.1 | 1.0.1 | 1.0.1 | 1.0 | -| [CSI Driver for PowerScale](https://hub.docker.com/r/dellemc/csi-isilon/tags) | v2.2 | v2.1 | v2.0 | v2.0 | -| [CSI Driver for Unity](https://hub.docker.com/r/dellemc/csi-unity/tags) | v2.2 | v2.1 | v2.0 | v2.0 | -| [CSI Driver for PowerStore](https://hub.docker.com/r/dellemc/csi-powerstore/tags) | v2.2 | v2.1 | v2.0 | v2.0 | -| [CSI Driver for PowerFlex](https://hub.docker.com/r/dellemc/csi-vxflexos/tags) | v2.2 | v2.1 | v2.0 | v2.0 | -| [CSI Driver for PowerMax](https://hub.docker.com/r/dellemc/csi-powermax/tags) | v2.2 | v2.1 | v2.0 | v2.0 | +| [Authorization](https://hub.docker.com/r/dellemc/csm-authorization-sidecar) | 1.2 | 1.2 | 1.1 | 1.0 | +| [Observability](https://hub.docker.com/r/dellemc/csm-topology) | 1.1.1 | 1.1 | 1.0.1 | 1.0.1 | +| [Replication](https://hub.docker.com/r/dellemc/dell-csi-replicator) | 1.2 | 1.2 | 1.1 | 1.0 | +| [Resiliency](https://hub.docker.com/r/dellemc/podmon) | 1.1 | 1.1 | 1.0.1 | 1.0.1 | +| [CSI Driver for PowerScale](https://hub.docker.com/r/dellemc/csi-isilon/tags) | v2.2 | v2.2 | v2.1 | v2.0 | +| [CSI Driver for Unity](https://hub.docker.com/r/dellemc/csi-unity/tags) | v2.2 | v2.2 | v2.1 | v2.0 | +| [CSI Driver for PowerStore](https://hub.docker.com/r/dellemc/csi-powerstore/tags) | v2.2 | v2.2 | v2.1 | v2.0 | +| [CSI Driver for PowerFlex](https://hub.docker.com/r/dellemc/csi-vxflexos/tags) | v2.2 | v2.2 | v2.1 | v2.0 | +| [CSI Driver for PowerMax](https://hub.docker.com/r/dellemc/csi-powermax/tags) | v2.2 | v2.2 | v2.1 | v2.0 | ## CSM Modules Support Matrix for Dell CSI Drivers | CSM Module | CSI PowerFlex v2.2 | CSI PowerScale v2.2 | CSI PowerStore v2.2 | CSI PowerMax v2.2 | CSI Unity XT v2.2 | | ----------------- | -------------- | --------------- | --------------- | ------------- | --------------- | | Authorization v1.2| ✔️ | ✔️ | ❌ | ✔️ | ❌ | -| Observability v1.1| ✔️ | ❌ | ✔️ | ❌ | ❌ | +| Observability v1.1.1 | ✔️ | ❌ | ✔️ | ❌ | ❌ | | Replication v1.2| ❌ | ✔️ | ✔️ | ✔️ | ❌ | | Resilency v1.1| ✔️ | ❌ | ❌ | ❌ | ✔️ | \ No newline at end of file diff --git a/content/v2/csidriver/features/powermax.md b/content/v2/csidriver/features/powermax.md index 55a57131c9..a635b79ec6 100644 --- a/content/v2/csidriver/features/powermax.md +++ b/content/v2/csidriver/features/powermax.md @@ -78,6 +78,8 @@ spec: ### Creating PVCs with PVCs as source +This is not supported for replicated volumes. + This is a sample manifest for creating a PVC with another PVC as a source: ```yaml apiVersion: v1 @@ -158,6 +160,8 @@ To install multiple CSI drivers, follow these steps: Starting in v1.4, the CSI PowerMax driver supports the expansion of Persistent Volumes (PVs). This expansion is done online, which is when the PVC is attached to any node. +>Note: This feature is not supported for replicated volumes. + To use this feature, enable in `values.yaml` ```yaml diff --git a/content/v2/csidriver/installation/offline/_index.md b/content/v2/csidriver/installation/offline/_index.md index 59a7c082f3..07b0000bdb 100644 --- a/content/v2/csidriver/installation/offline/_index.md +++ b/content/v2/csidriver/installation/offline/_index.md @@ -65,10 +65,10 @@ The resulting offline bundle file can be copied to another machine, if necessary For example, here is the output of a request to build an offline bundle for the Dell CSI Operator: ``` -git clone https://github.com/dell/dell-csi-operator.git +git clone -b v1.7.0 https://github.com/dell/dell-csi-operator.git ``` ``` -cd dell-csi-operator +cd dell-csi-operator/scripts ``` ``` [root@user scripts]# ./csi-offline-bundle.sh -c diff --git a/content/v2/csidriver/installation/operator/_index.md b/content/v2/csidriver/installation/operator/_index.md index 71140cd643..be62fc2dec 100644 --- a/content/v2/csidriver/installation/operator/_index.md +++ b/content/v2/csidriver/installation/operator/_index.md @@ -97,10 +97,9 @@ $ kubectl create configmap dell-csi-operator-config --from-file config.tar.gz -n #### Steps >**Skip step 1 for "offline bundle installation" and continue using the workspace created by untar of dell-csi-operator-bundle.tar.gz.** -1. Clone the [Dell CSI Operator repository](https://github.com/dell/dell-csi-operator). +1. Clone and checkout the required dell-csi-operator version using `git clone -b v1.7.0 https://github.com/dell/dell-csi-operator.git`. 2. cd dell-csi-operator -3. git checkout dell-csi-operator-`your-version' -4. Run `bash scripts/install.sh` to install the operator. +3. Run `bash scripts/install.sh` to install the operator. >NOTE: Dell CSI Operator version 1.4.0 and higher would install to the 'dell-csi-operator' namespace by default. Any existing installations of Dell CSI Operator (v1.2.0 or later) installed using `install.sh` to the 'default' or 'dell-csi-operator' namespace can be upgraded to the new version by running `install.sh --upgrade`. diff --git a/content/v2/csidriver/installation/test/powermax.md b/content/v2/csidriver/installation/test/powermax.md index 01b87aca59..f1350305ce 100644 --- a/content/v2/csidriver/installation/test/powermax.md +++ b/content/v2/csidriver/installation/test/powermax.md @@ -40,6 +40,7 @@ This script does the following: - After that, it uses that PVC as the data source to create a new PVC and mounts it on the same container. It checks if the file that existed in the source PVC also exists in the new PVC, calculates its checksum, and compares it to the checksum previously calculated. - Finally, it cleans up all the resources that are created as part of the test. +> This is not supported for replicated volumes. #### Snapshot test @@ -71,6 +72,8 @@ Use this procedure to perform a volume expansion test. - After that, it calculates the checksum of the written data, expands the PVC, and then recalculates the checksum - Cleans up all the resources that were created as part of the test +>Note: This is not applicable for replicated volumes. + ### Setting Application Prefix Application prefix is the name of the application that can be used to group the PowerMax volumes. We can use it while naming storage group. To set the application prefix for PowerMax, please refer to the sample storage class https://github.com/dell/csi-powermax/blob/main/samples/storageclass/powermax.yaml. diff --git a/content/v2/csidriver/release/powermax.md b/content/v2/csidriver/release/powermax.md index 52c67cf950..5739dd04ee 100644 --- a/content/v2/csidriver/release/powermax.md +++ b/content/v2/csidriver/release/powermax.md @@ -25,3 +25,4 @@ There are no fixed issues in this release. ### Note: - Support for Kubernetes alpha features like Volume Health Monitoring and RWOP (ReadWriteOncePod) access mode introduced in the release will not be available in Openshift environment as Openshift doesn't support enabling of alpha features for Production Grade clusters. +- Expansion of volumes and cloning of volumes are not supported for replicated volumes. diff --git a/content/v2/csidriver/upgradation/drivers/operator.md b/content/v2/csidriver/upgradation/drivers/operator.md index 0cfbc9355e..d3f9b22a5b 100644 --- a/content/v2/csidriver/upgradation/drivers/operator.md +++ b/content/v2/csidriver/upgradation/drivers/operator.md @@ -13,10 +13,9 @@ Dell CSI Operator can be upgraded based on the supported platforms in one of the ### Using Installation Script -1. Clone the [Dell CSI Operator repository](https://github.com/dell/dell-csi-operator). +1. Clone and checkout the required dell-csi-operator version using `git clone -b v1.7.0 https://github.com/dell/dell-csi-operator.git`. 2. cd dell-csi-operator -3. git checkout dell-csi-operator-'your-version' -4. Execute `bash scripts/install.sh --upgrade` . This command will install the latest version of the operator. +3. Execute `bash scripts/install.sh --upgrade` . This command will install the latest version of the operator. >Note: Dell CSI Operator version 1.4.0 and higher would install to the 'dell-csi-operator' namespace by default. ### Using OLM diff --git a/content/v2/deployment/csmoperator/drivers/powerscale.md b/content/v2/deployment/csmoperator/drivers/powerscale.md index 951ece9dd0..4471f1d1e6 100644 --- a/content/v2/deployment/csmoperator/drivers/powerscale.md +++ b/content/v2/deployment/csmoperator/drivers/powerscale.md @@ -18,7 +18,8 @@ Note that the deployment of the driver using the operator does not use any Helm User can query for all Dell CSI drivers using the following command: `kubectl get csm --all-namespaces` -### Install Driver + +### Prerequisite 1. Create namespace. Execute `kubectl create namespace test-isilon` to create the test-isilon namespace (if not already present). Note that the namespace can be any user-defined name, in this example, we assume that the namespace is 'test-isilon'. @@ -104,10 +105,14 @@ User can query for all Dell CSI drivers using the following command: ``` Execute command: ```kubectl create -f empty-secret.yaml``` -4. Create a CR (Custom Resource) for PowerScale using the sample files provided +### Install Driver + +1. Follow all the [prerequisites](#prerequisite) above + +2. Create a CR (Custom Resource) for PowerScale using the sample files provided [here](https://github.com/dell/csm-operator/tree/master/samples). This file can be modified to use custom parameters if needed. -5. Users should configure the parameters in CR. The following table lists the primary configurable parameters of the PowerScale driver and their default values: +3. Users should configure the parameters in CR. The following table lists the primary configurable parameters of the PowerScale driver and their default values: | Parameter | Description | Required | Default | | --------- | ----------- | -------- |-------- | @@ -128,11 +133,11 @@ User can query for all Dell CSI drivers using the following command: | X_CSI_MAX_VOLUMES_PER_NODE | Specify the default value for the maximum number of volumes that the controller can publish to the node | Yes | 0 | | X_CSI_MODE | Driver starting mode | No | node | -6. Execute the following command to create PowerScale custom resource: +4. Execute the following command to create PowerScale custom resource: ```kubectl create -f ``` . This command will deploy the CSI-PowerScale driver in the namespace specified in the input YAML file. -7. [Verify the CSI Driver installation](../../#verifying-the-driver-installation) +5. [Verify the CSI Driver installation](../../#verifying-the-driver-installation) **Note** : 1. "Kubelet config dir path" is not yet configurable in case of Operator based driver installation. diff --git a/content/v2/deployment/csmoperator/modules/_index.md b/content/v2/deployment/csmoperator/modules/_index.md index 4b79544a51..4a76e7d868 100644 --- a/content/v2/deployment/csmoperator/modules/_index.md +++ b/content/v2/deployment/csmoperator/modules/_index.md @@ -3,4 +3,11 @@ title: "CSM Modules" linkTitle: "CSM Modules" description: Installation of Dell CSM Modules using Dell CSM Operator weight: 2 ---- \ No newline at end of file +--- + +The CSM Operator can optionally enable modules that are supported by the specific Dell CSI driver. By default, the modules are disabled but they can be enabled by setting any pre-requisite configuration options for the given module and setting the enabled flag to true in the custom resource. +The steps include: + +1. Deploy the Dell CSM Operator (if it is not already deployed). Please follow the instructions available [here](../../#installation). +2. Configure any pre-requisite for the desired module(s). See the specific module below for more information +3. Follow the instructions available [here](../drivers/powerscale.md/#install-driver)) to install the Dell CSI Driver via the CSM Operator. The module section in the ContainerStorageModule CR should be updated to enable the desired module(s). There are [sample manifests](https://github.com/dell/csm-operator/tree/main/samples) provided which can be edited to do an easy installation of the driver along with the module. \ No newline at end of file diff --git a/content/v2/deployment/csmoperator/modules/authorization.md b/content/v2/deployment/csmoperator/modules/authorization.md index 3e9307bab8..4d1e2ca19b 100644 --- a/content/v2/deployment/csmoperator/modules/authorization.md +++ b/content/v2/deployment/csmoperator/modules/authorization.md @@ -2,19 +2,11 @@ title: Authorization linkTitle: "Authorization" description: > - Installing Authorization via Dell CSM Operator + Pre-requisite for Installing Authorization via Dell CSM Operator --- -## Installing Authorization via Dell CSM Operator +The CSM Authorization module for supported Dell CSI Drivers can be installed via the Dell CSM Operator. Please note, Dell CSM operator currently ONLY supports deploying CSM Authorization sidecar/container. -The Authorization module for supported Dell CSI Drivers can be installed via the Dell CSM Operator. +## Pre-requisite -To deploy the Dell CSM Operator, follow the instructions available [here](../../#installation). - -There are [sample manifests](https://github.com/dell/csm-operator/blob/main/samples/storage_csm_powerscale.yaml) provided which can be edited to do an easy installation of the driver along with the module. - -### Install Authorization - -1. Create the required Secrets as documented in the [Helm chart procedure](../../../../authorization/deployment/#configuring-a-dell-csi-driver). - -2. Follow the instructions available [here](../../drivers/powerscale/#install-driver) to install the Dell CSI Driver via the CSM Operator. The module section in the ContainerStorageModule CR should be updated to enable Authorization. \ No newline at end of file +Follow the instructions available in CSM Authorization for [Configuring a Dell CSI Driver with CSM for Authorization](../../../authorization/deployment/_index.md/#configuring-a-dell-csi-driver). \ No newline at end of file diff --git a/content/v2/deployment/csmoperator/modules/replication.md b/content/v2/deployment/csmoperator/modules/replication.md new file mode 100644 index 0000000000..cba958854a --- /dev/null +++ b/content/v2/deployment/csmoperator/modules/replication.md @@ -0,0 +1,27 @@ +--- +title: Replication +linkTitle: "Replication" +description: > + Pre-requisite for Installing Replication via Dell CSM Operator +--- + +The CSM Replication module for supported Dell CSI Drivers can be installed via the Dell CSM Operator. Dell CSM Operator will deploy CSM Replication sidecar and the complemental CSM Replication controller manager. + +## Prerequisite + +To use Replication, you need at least two clusters: + +- a source cluster which is the main cluster +- one or more target clusters which will serve as diaster recovery clusters for the main cluster + +To configure all the clusters, follow the steps below: + +1. On your main cluster, follow the instructions available in CSM Replication for [Installation using repctl](../../../replication/deployment/install-repctl.md). NOTE: On step 4 of the link above, you MUST use the command below to automatically package all clusters' `.kube` config as a secret: + +```shell + ./repctl cluster inject +``` + +CSM Operator needs this admin configs instead of the service accounts’ configs to be able to properly manage the target clusters. The default service account that'll be used is the CSM Operator service account. + +2. On each of the target clusters, configure the prerequisites for deploying the driver via Dell CSM Operator. For example, PowerScale has the following [prerequisites for deploying PowerScale via Dell CSM Operator](../drivers/powerscale.md/#prerequisite) \ No newline at end of file diff --git a/content/v2/observability/deployment/_index.md b/content/v2/observability/deployment/_index.md index 582e8d90c0..9a5d6f2566 100644 --- a/content/v2/observability/deployment/_index.md +++ b/content/v2/observability/deployment/_index.md @@ -30,7 +30,7 @@ The Prometheus service should be running on the same Kubernetes cluster as the C | Supported Version | Image | Helm Chart | | ----------------- | ----------------------- | ------------------------------------------------------------ | -| 2.22.0 | prom/prometheus:v2.22.0 | [Prometheus Helm chart](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus) | +| 2.23.0 | prom/prometheus:v2.23.0 | [Prometheus Helm chart](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus) | **Note**: It is the user's responsibility to provide persistent storage for Prometheus if they want to preserve historical data. @@ -65,13 +65,13 @@ Here is a sample minimal configuration for Prometheus. Please note that the conf type: NodePort servicePort: 9090 extraScrapeConfigs: | - - job_name: 'karavi-metrics-powerflex' - scrape_interval: 5s - scheme: https - static_configs: - - targets: ['otel-collector:8443'] - tls_config: - insecure_skip_verify: true + - job_name: 'karavi-metrics-[CSI-DRIVER]' + scrape_interval: 5s + scheme: https + static_configs: + - targets: ['otel-collector:8443'] + tls_config: + insecure_skip_verify: true ``` 2. If using Rancher, create a ServiceMonitor. @@ -227,7 +227,7 @@ Below are the steps to deploy a new Grafana instance into your Kubernetes cluste - name: Prometheus type: prometheus access: proxy - url: 'http://prometheus:9090' + url: 'http://prometheus-server:9090' isDefault: null version: 1 editable: true diff --git a/content/v2/replication/_index.md b/content/v2/replication/_index.md index fe7de3d6dd..cae6e7d45d 100644 --- a/content/v2/replication/_index.md +++ b/content/v2/replication/_index.md @@ -16,32 +16,32 @@ applications in case of both planned and unplanned migration. CSM for Replication provides the following capabilities: {{}} -| Capability | PowerScale | Unity | PowerStore | PowerFlex | PowerMax | -| - | :-: | :-: | :-: | :-: | :-: | -| Replicate data using native storage array based replication | yes | no | yes | no | yes | -| Create `PersistentVolume` objects in the cluster representing the replicated volume | yes | no | yes | no | yes | -| Create `DellCSIReplicationGroup` objects in the cluster | yes | no | yes | no | yes | -| Failover & Reprotect applications using the replicated volumes | yes | no | yes | no | yes | -| Provides a command line utility - [repctl](tools) for configuring & managing replication related resources across multiple clusters | yes | no | yes | no | yes | +| Capability | PowerMax | PowerStore | PowerScale | PowerFlex | Unity | +| ----------------------------------------------------------------------------------- | :------: | :--------: | :--------: | :-------: | :---: | +| Replicate data using native storage array based replication | yes | yes | yes | no | no | +| Create `PersistentVolume` objects in the cluster representing the replicated volume | yes | yes | yes | no | no | +| Create `DellCSIReplicationGroup` objects in the cluster | yes | yes | yes | no | no | +| Failover & Reprotect applications using the replicated volumes | yes | yes | yes | no | no | +| Provides a command line utility - [repctl](tools) for configuring & managing replication related resources across multiple clusters | yes | yes | yes | no | no | {{
}} ## Supported Operating Systems/Container Orchestrator Platforms {{}} -| COP/OS | PowerMax | PowerStore | PowerScale | -|-|-|-|-| -| Kubernetes | 1.21, 1.22, 1.23 | 1.21, 1.22, 1.23 | 1.21, 1.22, 1.23| -| Red Hat OpenShift | 4.8, 4.9 | 4.8, 4.9 | 4.8, 4.9 | -| RHEL | 7.x, 8.x | 7.x, 8.x | 7.x, 8.x | -| CentOS | 7.8, 7.9 | 7.8, 7.9 | 7.8, 7.9 | -| Ubuntu | 20.04 | 20.04 | 20.04 | -| SLES | 15SP2 | 15SP2 | 15SP2 | +| COP/OS | PowerMax | PowerStore | PowerScale | +|---------------|------------------|------------------|------------| +| Kubernetes | 1.21, 1.22, 1.23 | 1.21, 1.22, 1.23 | 1.21, 1.22, 1.23 | +| Red Hat OpenShift | 4.8, 4.9 | 4.8, 4.9 | 4.8, 4.9 | +| RHEL | 7.x, 8.x | 7.x, 8.x | 7.x, 8.x | +| CentOS | 7.8, 7.9 | 7.8, 7.9 | 7.8, 7.9 | +| Ubuntu | 20.04 | 20.04 | 20.04 | +| SLES | 15SP2 | 15SP2 | 15SP2 | {{
}} ## Supported Storage Platforms {{}} -| | PowerMax | PowerStore | PowerScale | +| | PowerMax | PowerStore | PowerScale | |---------------|:-------------------:|:----------------:|:----------------:| | Storage Array | 5978.479.479, 5978.711.711, Unisphere 9.2 | 1.0.x, 2.0.x, 2.1.x | OneFS 8.1, 8.2, 9.0, 9.1, 9.2, 9.3 | {{
}} @@ -50,11 +50,11 @@ CSM for Replication provides the following capabilities: CSM for Replication supports the following CSI drivers and versions. {{}} -| Storage Array | CSI Driver | Supported Versions | -| ------------- | ---------- | ------------------ | -| CSI Driver for Dell PowerMax | [csi-powermax](https://github.com/dell/csi-powermax) | v2.0, v2.1, v2.2 | -| CSI Driver for Dell PowerStore | [csi-powerstore](https://github.com/dell/csi-powerstore) | v2.0, v2.1, v2.2 | -| CSI Driver for Dell PowerScale | [csi-powerscale](https://github.com/dell/csi-powerscale) | v2.2 | +| Storage Array | CSI Driver | Supported Versions | +| ------------------------------ | -------------------------------------------------------- | ------------------ | +| CSI Driver for Dell PowerMax | [csi-powermax](https://github.com/dell/csi-powermax) | v2.0, v2.1, v2.2 | +| CSI Driver for Dell PowerStore | [csi-powerstore](https://github.com/dell/csi-powerstore) | v2.0, v2.1, v2.2 | +| CSI Driver for Dell PowerScale | [csi-powerscale](https://github.com/dell/csi-powerscale) | v2.2 | {{
}} ## Details @@ -80,27 +80,23 @@ the objects still exist in pairs. CSM for Replication provides the following capabilities: {{}} -| Capability | PowerMax | PowerStore | PowerScale | PowerFlex | Unity | -| ---------| -------- | -------- | -------- | -------- | -------- | -| Asynchronous replication of PVs accross K8s clusters | yes | yes | yes | no | no | -| Synchronous replication of PVs accross K8s clusters | yes | no | no | no | no | -| Single cluster (stretched) mode replication | yes | yes | yes | no | no | -| Replication actions (failover, reprotect) | yes | yes | yes | no | no | +| Capability | PowerMax | PowerStore | PowerScale | PowerFlex | Unity | +| ----------------------------------------------------------------| -------- | ---------- | ---------- | --------- | ----- | +| Asynchronous replication of PVs accross or single K8s clusters | yes | yes (block)| yes | no | no | +| Synchronous replication of PVs accross or single K8s clusters | yes | no | no | no | no | +| Metro replication single (stretched) cluster | yes | no | no | no | no | +| Replication actions (failover, reprotect) | yes | yes | yes | no | no | {{
}} ### Supported Platforms The following matrix provides a list of all supported versions for each Dell Storage product. -| Platforms | PowerMax | PowerStore | PowerScale | -| -------- | --------- | ---------- | ---------- | +| Platforms | PowerMax | PowerStore | PowerScale | +| ---------- | ----------------- | ---------------- | ---------------- | | Kubernetes | 1.21, 1.22, 1.23 | 1.21, 1.22, 1.23 | 1.21, 1.22, 1.23 | -| CSI Driver | 2.x | 2.x | 2.2+ | - -| Platforms | PowerMax | PowerStore | PowerScale | -| -------- | --------- | ---------- | ---------- | -| RedHat Openshift |4.8, 4.9 | 4.8, 4.9 | 4.8, 4.9 | -| CSI Driver | 2.2+ | 2.x | 2.2+ | +| RedHat Openshift |4.8, 4.9 | 4.8, 4.9 | 4.8, 4.9 | +| CSI Driver | 2.x | 2.x | 2.2+ | For compatibility with storage arrays please refer to corresponding [CSI drivers](../csidriver/#features-and-capabilities) diff --git a/content/v3/FAQ/_index.md b/content/v3/FAQ/_index.md index b7584f0534..39ffd7d493 100644 --- a/content/v3/FAQ/_index.md +++ b/content/v3/FAQ/_index.md @@ -1,21 +1,19 @@ --- title: "CSM FAQ" linktitle: "FAQ" -description: Frequently asked questions of Dell EMC Container Storage Modules +description: Frequently asked questions of Dell Technologies (Dell) Container Storage Modules weight: 2 --- - [What are Dell Container Storage Modules (CSM)? How different is it from a CSI driver?](#what-are-dell-container-storage-modules-csm-how-different-is-it-from-a-csi-driver) - [Where do I start with Dell Container Storage Modules (CSM)?](#where-do-i-start-with-dell-container-storage-modules-csm) -- [Is the Container Storage Module XYZ available for my array?](#is-the-container-storage-module-xyz-available-for-my-array) - [What are the prerequisites for deploying Container Storage Modules?](#what-are-the-prerequisites-for-deploying-container-storage-modules) -- [How do I uninstall or disable a Container Storage Module?](#how-do-i-uninstall-or-a-disable-a-module) +- [How do I uninstall or disable a module?](#how-do-i-uninstall-or-disable-a-module) - [How do I troubleshoot Container Storage Modules?](#how-do-i-troubleshoot-container-storage-modules) - [Can I use the CSM functionality like Prometheus collection or Authorization quotas for my non-Kubernetes storage clients?](#can-i-use-the-csm-functionality-like-prometheus-collection-or-authorization-quotas-for-my-non-kubernetes-storage-clients) - [Should I install the module in the same namespace as the driver or another?](#should-i-install-the-module-in-the-same-namespace-as-the-driver-or-another) - [Which Kubernetes distributions are supported?](#which-kubernetes-distributions-are-supported) - [How do I get a list of Container Storage Modules deployed in my cluster with their versions?](#how-do-i-get-a-list-of-container-storage-modules-deployed-in-my-cluster-with-their-versions) -- [Does the CSM Installer provide full Container Storage Modules functionality for all products?](#does-the-csm-installer-provide-full-container-storage-modules-functionality-for-all-products) - [Do all Container Storage Modules need to be the same version, or can I mix and match?](#do-all-container-storage-modules-need-to-be-the-same-version-or-can-i-mix-and-match) - [Can I run Container Storage Modules in a production environment?](#can-i-run-container-storage-modules-in-a-production-environment) - [Is Dell Container Storage Modules (CSM) supported by Dell Technologies?](#is-dell-container-storage-modules-csm-supported-by-dell-technologies) @@ -30,53 +28,42 @@ The main goal with CSM modules is to expose storage array enterprise features di ### Where do I start with Dell Container Storage Modules (CSM)? The umbrella repository for every Dell Container Storage Module is: [https://github.com/dell/csm](https://github.com/dell/csm). -### Is the Container Storage Module XYZ available for my array? -Please see module and the respectice CSI driver version available for each array: - -| CSM Module | CSI PowerFlex v2.1 | CSI PowerScale v2.1 | CSI PowerStore v2.1 | CSI PowerMax v2.1 | CSI Unity XT v2.1 | -| ----------------- | -------------- | --------------- | --------------- | ------------- | --------------- | -| Authorization v1.1| ✔️ | ✔️ | ❌ | ✔️ | ❌ | -| Observability v1.0| ✔️ | ❌ | ✔️ | ❌ | ❌ | -| Replication v1.1| ❌ | ❌ | ✔️ | ✔️ | ❌ | -| Resilency v1.0| ✔️ | ❌ | ❌ | ❌ | ✔️ | -| CSM Installer v1.0| ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | - ### What are the prerequisites for deploying Container Storage Modules? Prerequisites can be found on the respective module deployment pages: -- [Dell EMC Container Storage Module for Observability Deployment](../observability/deployment/#prerequisites) -- [Dell EMC Container Storage Module for Authorization Deployment](../authorization/deployment/#prerequisites) -- [Dell EMC Container Storage Module for Resiliency Deployment](../resiliency/deployment/) -- [Dell EMC Container Storage Module for Replication Deployment](../replication/deployment/installation/#before-you-begin) +- [Dell Container Storage Module for Observability Deployment](../observability/deployment/#prerequisites) +- [Dell Container Storage Module for Authorization Deployment](../authorization/deployment/#prerequisites) +- [Dell Container Storage Module for Resiliency Deployment](../resiliency/deployment/) +- [Dell Container Storage Module for Replication Deployment](../replication/deployment/installation/#before-you-begin) -Prerequisites for deploying the Dell EMC CSI drivers can be found here: -- [Dell EMC CSI Drivers Deployment](../csidriver/installation/) +Prerequisites for deploying the Dell CSI drivers can be found here: +- [Dell CSI Drivers Deployment](../csidriver/installation/) -### How do I uninstall or a disable a module? -- [Dell EMC Container Storage Module for Authorization](../authorization/uninstallation/) -- [Dell EMC Container Storage Module for Observability](../observability/uninstall/) -- [Dell EMC Container Storage Module for Resiliency](../resiliency/uninstallation/) +### How do I uninstall or disable a module? +- [Dell Container Storage Module for Authorization](../authorization/uninstallation/) +- [Dell Container Storage Module for Observability](../observability/uninstall/) +- [Dell Container Storage Module for Resiliency](../resiliency/uninstallation/) ### How do I troubleshoot Container Storage Modules? -- [Dell EMC CSI Drivers](../csidriver/troubleshooting/) -- [Dell EMC Container Storage Module for Authorization](../authorization/troubleshooting/) -- [Dell EMC Container Storage Module for Observability](../observability/troubleshooting/) -- [Dell EMC Container Storage Module for Replication](../replication/troubleshooting/) -- [Dell EMC Container Storage Module for Resiliency](../resiliency/troubleshooting/) +- [Dell CSI Drivers](../csidriver/troubleshooting/) +- [Dell Container Storage Module for Authorization](../authorization/troubleshooting/) +- [Dell Container Storage Module for Observability](../observability/troubleshooting/) +- [Dell Container Storage Module for Replication](../replication/troubleshooting/) +- [Dell Container Storage Module for Resiliency](../resiliency/troubleshooting/) ### Can I use the CSM functionality like Prometheus collection or Authorization quotas for my non-Kubernetes storage clients? -No, all the modules have been designed to work inside Kubernetes with Dell EMC CSI drivers. +No, all the modules have been designed to work inside Kubernetes with Dell CSI drivers. ### Should I install the module in the same namespace as the driver or another? -It is recommended to install CSM for Observability in a namespace separate from the Dell EMC CSI drivers because it works across multiple drivers. All other modules either run as standalone or are injected into the Dell EMC CSI driver as a sidecar. +It is recommended to install CSM for Observability in a namespace separate from the Dell CSI drivers because it works across multiple drivers. All other modules either run as standalone or with the Dell CSI driver as a sidecar. ### Which Kubernetes distributions are supported? The supported Kubernetes distributions for Container Storage Modules are documented: -- [Dell EMC Container Storage Module for Authorization](../authorization/#supported-operating-systemscontainer-orchestrator-platforms) -- [Dell EMC Container Storage Module for Observability](../observability/#supported-operating-systemscontainer-orchestrator-platforms) -- [Dell EMC Container Storage Module for Replication](../replication/#supported-operating-systemscontainer-orchestrator-platforms) -- [Dell EMC Container Storage Module for Resiliency](../resiliency/#supported-operating-systemscontainer-orchestrator-platforms) +- [Dell Container Storage Module for Authorization](../authorization/#supported-operating-systemscontainer-orchestrator-platforms) +- [Dell Container Storage Module for Observability](../observability/#supported-operating-systemscontainer-orchestrator-platforms) +- [Dell Container Storage Module for Replication](../replication/#supported-operating-systemscontainer-orchestrator-platforms) +- [Dell Container Storage Module for Resiliency](../resiliency/#supported-operating-systemscontainer-orchestrator-platforms) -The supported distros for the Dell EMC CSI Drivers are located [here](../csidriver/#supported-operating-systemscontainer-orchestrator-platforms). +The supported distros for the Dell CSI Drivers are located [here](../csidriver/#supported-operating-systemscontainer-orchestrator-platforms). ### How do I get a list of Container Storage Modules deployed in my cluster with their versions? The easiest way to find the module version is to check the image tag for the module. For all the namespaces you can execute the following: @@ -88,18 +75,13 @@ Or if you know the namespace: kubectl get deployment,daemonset -o wide -n {{namespace}} ``` -### Does the CSM Installer provide full Container Storage Modules functionality for all products? -The CSM Installer supports the installation of all the Container Storage Modules and Dell EMC CSI drivers. - ### Do all Container Storage Modules need to be the same version, or can I mix and match? It is advised to comply with the support matrices (links below) and not deviate from it with mixed versions. -- [Dell EMC Container Storage Module for Authorization](../authorization/#supported-operating-systemscontainer-orchestrator-platforms) -- [Dell EMC Container Storage Module for Observability](../observability/#supported-operating-systemscontainer-orchestrator-platforms) -- [Dell EMC Container Storage Module for Replication](../replication/#supported-operating-systemscontainer-orchestrator-platforms) -- [Dell EMC Container Storage Module for Resiliency](../resiliency/#supported-operating-systemscontainer-orchestrator-platforms) -- [Dell EMC CSI Drivers](../csidriver/#supported-operating-systemscontainer-orchestrator-platforms). - -The CSM installer module will help to stay aligned with compatible versions during the first install and future upgrades. +- [Dell Container Storage Module for Authorization](../authorization/#supported-operating-systemscontainer-orchestrator-platforms) +- [Dell Container Storage Module for Observability](../observability/#supported-operating-systemscontainer-orchestrator-platforms) +- [Dell Container Storage Module for Replication](../replication/#supported-operating-systemscontainer-orchestrator-platforms) +- [Dell Container Storage Module for Resiliency](../resiliency/#supported-operating-systemscontainer-orchestrator-platforms) +- [Dell CSI Drivers](../csidriver/#supported-operating-systemscontainer-orchestrator-platforms). ### Can I run Container Storage Modules in a production environment? As of CSM 1.0, the Container Storage Modules are GA and ready for production systems. @@ -115,4 +97,4 @@ Yes! All Container Storage Modules are released as open-source projects under Apache-2.0 License. You are free to contribute directly following the [contribution guidelines](https://github.com/dell/csm/blob/main/docs/CONTRIBUTING.md), fork the projects, modify them, and of course share feedback or open tickets ;-) ### What is coming next? -This is just the beginning of the journey for Dell Container Storage Modules, and there is a full roadmap with more to come, which you can check under the [GithHub Milestones](https://github.com/dell/csm/milestones) page. +This is just the beginning of the journey for Dell Container Storage Modules, and there is a full roadmap with more to come, which you can check under the [GitHub Milestones](https://github.com/dell/csm/milestones) page. diff --git a/content/v3/_index.md b/content/v3/_index.md index 18b7ddfaaa..68f876afee 100644 --- a/content/v3/_index.md +++ b/content/v3/_index.md @@ -7,7 +7,7 @@ linkTitle: "Documentation" This document version is no longer actively maintained. The site that you are currently viewing is an archived snapshot. For up-to-date documentation, see the [latest version](/csm-docs/) {{% /pageinfo %}} -The Dell Container Storage Modules (CSM) enables simple and consistent integration and automation experiences, extending enterprise storage capabilities to Kubernetes for cloud-native stateful applications. It reduces management complexity so developers can independently consume enterprise storage with ease and automate daily operations such as provisioning, snapshotting, replication, observability, authorization and, resiliency. +The Dell Technologies (Dell) Container Storage Modules (CSM) enables simple and consistent integration and automation experiences, extending enterprise storage capabilities to Kubernetes for cloud-native stateful applications. It reduces management complexity so developers can independently consume enterprise storage with ease and automate daily operations such as provisioning, snapshotting, replication, observability, authorization and, resiliency. CSM Hex Diagram @@ -15,16 +15,25 @@ CSM is made up of multiple components including modules (enterprise capabilities CSM Diagram -## CSM Supported Modules and Dell EMC CSI Drivers +## CSM Supported Modules and Dell CSI Drivers -| Modules/Drivers | CSM 1.1 | [CSM 1.0](../v1/) | [Previous](../v2/) | [Older](../v3) | +| Modules/Drivers | CSM 1.2 | [CSM 1.1](../v1/) | [CSM 1.0.1](../v1/) | [CSM 1.0](../v2/) | | - | :-: | :-: | :-: | :-: | -| Authorization | 1.1 | 1.0 | - | - | -| Observability | 1.0 | 1.0 | - | - | -| Replication | 1.1 | 1.0 | - | - | -| Resiliency | 1.0 | 1.0 | - | - | -| CSI Driver for PowerScale | v2.1 | v2.0 | v1.6 | v1.5 | -| CSI Driver for Unity | v2.1 | v2.0 | v1.6 | v1.5 | -| CSI Driver for PowerStore | v2.1 | v2.0 | v1.4 | v1.3 | -| CSI Driver for PowerFlex | v2.1 | v2.0 | v1.5 | v1.4 | -| CSI Driver for PowerMax | v2.1 | v2.0 | v1.7 | v1.6 | +| [Authorization](https://hub.docker.com/r/dellemc/csm-authorization-sidecar) | 1.2 | 1.1 | 1.0 | 1.0 | +| [Observability](https://hub.docker.com/r/dellemc/csm-topology) | 1.1 | 1.0.1 | 1.0.1 | 1.0 | +| [Replication](https://hub.docker.com/r/dellemc/dell-csi-replicator) | 1.2 | 1.1 | 1.0 | 1.0 | +| [Resiliency](https://hub.docker.com/r/dellemc/podmon) | 1.1 | 1.0.1 | 1.0.1 | 1.0 | +| [CSI Driver for PowerScale](https://hub.docker.com/r/dellemc/csi-isilon/tags) | v2.2 | v2.1 | v2.0 | v2.0 | +| [CSI Driver for Unity](https://hub.docker.com/r/dellemc/csi-unity/tags) | v2.2 | v2.1 | v2.0 | v2.0 | +| [CSI Driver for PowerStore](https://hub.docker.com/r/dellemc/csi-powerstore/tags) | v2.2 | v2.1 | v2.0 | v2.0 | +| [CSI Driver for PowerFlex](https://hub.docker.com/r/dellemc/csi-vxflexos/tags) | v2.2 | v2.1 | v2.0 | v2.0 | +| [CSI Driver for PowerMax](https://hub.docker.com/r/dellemc/csi-powermax/tags) | v2.2 | v2.1 | v2.0 | v2.0 | + +## CSM Modules Support Matrix for Dell CSI Drivers + +| CSM Module | CSI PowerFlex v2.2 | CSI PowerScale v2.2 | CSI PowerStore v2.2 | CSI PowerMax v2.2 | CSI Unity XT v2.2 | +| ----------------- | -------------- | --------------- | --------------- | ------------- | --------------- | +| Authorization v1.2| ✔️ | ✔️ | ❌ | ✔️ | ❌ | +| Observability v1.1| ✔️ | ❌ | ✔️ | ❌ | ❌ | +| Replication v1.2| ❌ | ✔️ | ✔️ | ✔️ | ❌ | +| Resilency v1.1| ✔️ | ❌ | ❌ | ❌ | ✔️ | \ No newline at end of file diff --git a/content/v3/authorization/_index.md b/content/v3/authorization/_index.md index 329e6065a1..0310e936d6 100644 --- a/content/v3/authorization/_index.md +++ b/content/v3/authorization/_index.md @@ -3,18 +3,18 @@ title: "Authorization" linkTitle: "Authorization" weight: 4 Description: > - Dell EMC Container Storage Modules (CSM) for Authorization + Dell Technologies (Dell) Container Storage Modules (CSM) for Authorization --- -[Container Storage Modules](https://github.com/dell/csm) (CSM) for Authorization is part of the open-source suite of Kubernetes storage enablers for Dell EMC products. +[Container Storage Modules](https://github.com/dell/csm) (CSM) for Authorization is part of the open-source suite of Kubernetes storage enablers for Dell products. -CSM for Authorization provides storage and Kubernetes administrators the ability to apply RBAC for Dell EMC CSI Drivers. It does this by deploying a proxy between the CSI driver and the storage system to enforce role-based access and usage rules. +CSM for Authorization provides storage and Kubernetes administrators the ability to apply RBAC for Dell CSI Drivers. It does this by deploying a proxy between the CSI driver and the storage system to enforce role-based access and usage rules. Storage administrators of compatible storage platforms will be able to apply quota and RBAC rules that instantly and automatically restrict cluster tenants usage of storage resources. Users of storage through CSM for Authorization do not need to have storage admin root credentials to access the storage system. Kubernetes administrators will have an interface to create, delete, and manage roles/groups that storage rules may be applied. Administrators and/or users may then generate authentication tokens that may be used by tenants to use storage with proper access policies being automatically enforced. -The following diagram shows a high-level overview of CSM for Authorization with a `tenant-app` that is using a CSI driver to perform storage operations through the CSM for Authorization `proxy-server` to access the a Dell EMC storage system. All requests from the CSI driver will contain the token for the given tenant that was granted by the Storage Administrator. +The following diagram shows a high-level overview of CSM for Authorization with a `tenant-app` that is using a CSI driver to perform storage operations through the CSM for Authorization `proxy-server` to access the a Dell storage system. All requests from the CSI driver will contain the token for the given tenant that was granted by the Storage Administrator. ![CSM for Authorization](./karavi-authorization-example.png "CSM for Authorization") @@ -27,13 +27,13 @@ The following diagram shows a high-level overview of CSM for Authorization with | Ability to shield storage credentials from Kubernetes administrators ensuring credentials are only handled by storage admins | Yes | Yes | Yes | No | No | {{}} -__NOTE:__ PowerScale OneFS implements its own form of Role-Based Access Control (RBAC). CSM for Authorization does not enforce any role-based restrictions for PowerScale. To configure RBAC for PowerScale, refer to the PowerScale OneFS [documentation](https://www.dell.com/support/home/en-us/product-support/product/isilon-onefs/docs). +**NOTE:** PowerScale OneFS implements its own form of Role-Based Access Control (RBAC). CSM for Authorization does not enforce any role-based restrictions for PowerScale. To configure RBAC for PowerScale, refer to the PowerScale OneFS [documentation](https://www.dell.com/support/home/en-us/product-support/product/isilon-onefs/docs). ## Supported Operating Systems/Container Orchestrator Platforms {{}} | COP/OS | Supported Versions | |-|-| -| Kubernetes | 1.20, 1.21, 1.22 | +| Kubernetes | 1.21, 1.22, 1.23 | | Red Hat OpenShift | 4.8, 4.9| | RHEL | 7.x, 8.x | | CentOS | 7.8, 7.9 | @@ -44,7 +44,7 @@ __NOTE:__ PowerScale OneFS implements its own form of Role-Based Access Control {{
}} | | PowerMax | PowerFlex | PowerScale | |---------------|:----------------:|:-------------------:|:----------------:| -| Storage Array |5978.479.479, 5978.669.669, 5978.711.711, Unisphere 9.2| 3.5.x, 3.6.x | OneFS 8.1, 8.2, 9.0, 9.1, 9.2 | +| Storage Array |5978.479.479, 5978.711.711, Unisphere 9.2| 3.5.x, 3.6.x | OneFS 8.1, 8.2, 9.0, 9.1, 9.2, 9.3 | {{
}} ## Supported CSI Drivers @@ -53,12 +53,12 @@ CSM for Authorization supports the following CSI drivers and versions. {{}} | Storage Array | CSI Driver | Supported Versions | | ------------- | ---------- | ------------------ | -| CSI Driver for Dell EMC PowerFlex | [csi-powerflex](https://github.com/dell/csi-powerflex) | v2.0,v2.1 | -| CSI Driver for Dell EMC PowerMax | [csi-powermax](https://github.com/dell/csi-powermax) | v2.0,v2.1 | -| CSI Driver for Dell EMC PowerScale | [csi-powerscale](https://github.com/dell/csi-powerscale) | v2.0,v2.1 | +| CSI Driver for Dell PowerFlex | [csi-powerflex](https://github.com/dell/csi-powerflex) | v2.0, v2.1, v2.2 | +| CSI Driver for Dell PowerMax | [csi-powermax](https://github.com/dell/csi-powermax) | v2.0, v2.1 ,v2.2 | +| CSI Driver for Dell PowerScale | [csi-powerscale](https://github.com/dell/csi-powerscale) | v2.0, v2.1, v2.2 | {{
}} -__Note:__ If the deployed CSI driver has a number of controller pods equal to the number of schedulable nodes in your cluster, CSM for Authorization may not be able to inject properly into the driver's controller pod. +**NOTE:** If the deployed CSI driver has a number of controller pods equal to the number of schedulable nodes in your cluster, CSM for Authorization may not be able to inject properly into the driver's controller pod. To resolve this, please refer to our [troubleshooting guide](./troubleshooting) on the topic. ## Authorization Components Support Matrix @@ -68,6 +68,7 @@ CSM for Authorization consists of 2 components - the Authorization sidecar and t | Authorization Sidecar Image Tag | Authorization Proxy Server Version | | ------------------------------- | ---------------------------------- | | dellemc/csm-authorization-sidecar:v1.0.0 | v1.0.0, v1.1.0 | +| dellemc/csm-authorization-sidecar:v1.2.0 | v1.1.0, v1.2.0 | {{}} ## Roles and Responsibilities @@ -99,4 +100,4 @@ Tenants of CSM for Authorization can use the token provided by the Storage Admin 4) Tenant Admin inputs the Token into their Kubernetes cluster as a Secret. 5) Tenant Admin updates CSI driver with CSM Authorization sidecar module. -![CSM for Authorization Workflow](./design2.png "CSM for Authorization Workflow") \ No newline at end of file +![CSM for Authorization Workflow](./design2.png "CSM for Authorization Workflow") diff --git a/content/v3/authorization/cli.md b/content/v3/authorization/cli.md index eedaf0957d..f1ef1bb5aa 100644 --- a/content/v3/authorization/cli.md +++ b/content/v3/authorization/cli.md @@ -3,7 +3,7 @@ title: CLI linktitle: CLI weight: 4 description: > - Dell EMC Container Storage Modules (CSM) for Authorization CLI + Dell Technologies (Dell) Container Storage Modules (CSM) for Authorization CLI --- karavictl is a command-line interface (CLI) used to interact with and manage your Container Storage Modules (CSM) Authorization deployment. @@ -15,7 +15,6 @@ If you feel that something is unclear or missing in this document, please open u | - | - | | [karavictl](#karavictl) | karavictl is used to interact with CSM Authorization Server | | [karavictl cluster-info](#karavictl-cluster-info) | Display the state of resources within the cluster | -| [karavictl inject](#karavictl-inject) | Inject the sidecar proxy into a CSI driver pod | | [karavictl generate](#karavictl-generate) | Generate resources for use with CSM | | [karavictl generate token](#karavictl-generate-token) | Generate tokens | | [karavictl role](#karavictl-role) | Manage role | @@ -48,7 +47,7 @@ karavictl is used to interact with CSM Authorization Server ##### Synopsis -karavictl provides security, RBAC, and quota limits for accessing Dell EMC +karavictl provides security, RBAC, and quota limits for accessing Dell storage products from Kubernetes clusters ##### Options @@ -112,60 +111,6 @@ redis-commander 1/1 1 1 59m -### karavictl inject - -Inject the sidecar proxy into a CSI driver pod - -##### Synopsis - -Injects the sidecar proxy into a CSI driver pod. - -You can inject resources coming from stdin. - -``` -karavictl inject [flags] -``` - -##### Options - -``` - -h, --help help for inject - --image-addr string Help message for image-addr - --proxy-host string Help message for proxy-host -``` - -##### Options inherited from parent commands - -``` - --config string config file (default is $HOME/.karavictl.yaml) -``` - -##### Examples: - -Inject into an existing vxflexos CSI driver -``` -kubectl get secrets,deployments,daemonsets -n vxflexos -o yaml \ - | karavictl inject --image-addr [IMAGE_REPO]:5000/sidecar-proxy:latest --proxy-host [PROXY_HOST_IP] \ - | kubectl apply -f - -``` - -##### Output - -``` -$ kubectl get secrets,deployments,daemonsets -n vxflexos -o yaml \ -| karavictl inject --image-addr [IMAGE_REPO]:5000/sidecar-proxy:latest --proxy-host [PROXY_HOST_IP] \ -| kubectl apply -f - - -secret/karavi-authorization-config created -deployment.apps/vxflexos-controller configured -daemonset.apps/vxflexos-node configured -``` - - ---- - - - ### karavictl generate Generate resources for use with CSM diff --git a/content/v3/authorization/deployment/_index.md b/content/v3/authorization/deployment/_index.md index 8a4ab73dd2..ca15cb03da 100644 --- a/content/v3/authorization/deployment/_index.md +++ b/content/v3/authorization/deployment/_index.md @@ -3,12 +3,12 @@ title: Deployment linktitle: Deployment weight: 2 description: > - Dell EMC Container Storage Modules (CSM) for Authorization deployment + Dell Technologies (Dell) Container Storage Modules (CSM) for Authorization deployment --- This section outlines the deployment steps for Container Storage Modules (CSM) for Authorization. The deployment of CSM for Authorization is handled in 2 parts: - Deploying the CSM for Authorization proxy server, to be controlled by storage administrators -- Configuring one to many [supported](../../authorization#supported-csi-drivers) Dell EMC CSI drivers with CSM for Authorization +- Configuring one to many [supported](../../authorization#supported-csi-drivers) Dell CSI drivers with CSM for Authorization ## Prerequisites @@ -27,32 +27,31 @@ The CSM for Authorization proxy server is installed using a single binary instal The easiest way to obtain the single binary installer RPM is directly from the [GitHub repository's releases](https://github.com/dell/karavi-authorization/releases) section. -The single binary installer can also be built from source by cloning the [GitHub repository](https://github.com/dell/karavi-authorization) and using the following Makefile targets to build the installer: +Alternatively, the single binary installer can be built from source by cloning the [GitHub repository](https://github.com/dell/karavi-authorization) and using the following Makefile targets to build the installer: ``` make dist build-installer rpm ``` -The `build-installer` step creates a binary at `bin/deploy` and embeds all components required for installation. The `rpm` step generates an RPM package and stores it at `deploy/rpm/x86_64/`. +The `build-installer` step creates a binary at `karavi-authorization/bin/deploy` and embeds all components required for installation. The `rpm` step generates an RPM package and stores it at `karavi-authorization/deploy/rpm/x86_64/`. This allows CSM for Authorization to be installed in network-restricted environments. A Storage Administrator can execute the installer or rpm package as a root user or via `sudo`. ### Installing the RPM -1. Before installing the rpm, some network and security configuration inputs need to be provided in json format. The json file should be created in the location `$HOME/.karavi/config.json` having the following contents: +1. Before installing the rpm, some network and security configuration inputs need to be provided in json format. The json file should be created in the location `$HOME/.karavi/config.json` having the following contents: ```json { "web": { - "sidecarproxyaddr": "docker_registry/sidecar-proxy:latest", "jwtsigningsecret": "secret" }, "proxy": { "host": ":8080" }, "zipkin": { - "collectoruri": "http://DNS_host_name:9411/api/v2/spans", + "collectoruri": "http://DNS-hostname:9411/api/v2/spans", "probability": 1 }, "certificate": { @@ -60,30 +59,36 @@ A Storage Administrator can execute the installer or rpm package as a root user "crtFile": "path_to_host_cert_file", "rootCertificate": "path_to_root_CA_file" }, - "hostName": "DNS_host_name" + "hostname": "DNS-hostname" } ``` - In the above template, `DNS_host_name` refers to the hostname of the system in which the CSM for Authorization server will be installed. This hostname can be found by running the below command on the system: + In an instance where a secure deployment is not required, an insecure deployment is possible. Please note that self-signed certificates will be created for you using cert-manager to allow TLS encryption for communication on the CSM for Authorization proxy server. However, this is not recommended for production environments. For an insecure deployment, the json file in the location `$HOME/.karavi/config.json` only requires the following contents: - ``` - nslookup + ```json + { + "hostname": "DNS-hostname" + } ``` -2. In order to configure secure grpc connectivity, an additional subdomain in the format `grpc.DNS_host_name` is also required. All traffic from `grpc.DNS_host_name` needs to be routed to `DNS_host_name` address, this can be configured by adding a new DNS entry for `grpc.DNS_host_name` or providing a temporary path in the `/etc/hosts` file. +>__Note__: +> - `DNS-hostname` refers to the hostname of the system in which the CSM for Authorization server will be installed. This hostname can be found by running `nslookup ` +> - There are a number of ways to create certificates. In a production environment, certificates are usually created and managed by an IT administrator. Otherwise, certificates can be created using OpenSSL. ->__Note__: The certificate provided in `crtFile` should be valid for both the `DNS_host_name` and the `grpc.DNS_host_name` address. +2. In order to configure secure grpc connectivity, an additional subdomain in the format `grpc.DNS-hostname` is also required. All traffic from `grpc.DNS-hostname` needs to be routed to `DNS-hostname` address, this can be configured by adding a new DNS entry for `grpc.DNS-hostname` or providing a temporary path in the systems `/etc/hosts` file. - For example, create the certificate config file with alternate names (to include example.com and grpc.example.com) and then create the .crt file: +>__Note__: The certificate provided in `crtFile` should be valid for both the `DNS-hostname` and the `grpc.DNS-hostname` address. - ``` - CN = example.com - subjectAltName = @alt_names - [alt_names] - DNS.1 = grpc.example.com + For example, create the certificate config file with alternate names (to include DNS-hostname and grpc.DNS-hostname) and then create the .crt file: - openssl x509 -req -in cert_request_file.csr -CA root_CA.pem -CAkey private_key_File.key -CAcreateserial -out example.com.crt -days 365 -sha256 - ``` + ``` + CN = DNS-hostname + subjectAltName = @alt_names + [alt_names] + DNS.1 = grpc.DNS-hostname.com + + $ openssl x509 -req -in cert_request_file.csr -CA root_CA.pem -CAkey private_key_File.key -CAcreateserial -out DNS-hostname.com.crt -days 365 -sha256 + ``` 3. To install the rpm package on the system, run the below command: @@ -102,6 +107,7 @@ The storage administrator must first configure the proxy server with the followi - Bind roles to tenants Run the following commands on the Authorization proxy server: +>__Note__: The `--insecure` flag is only necessary if certificates were not provided in `$HOME/.karavi/config.json`. ```console # Specify any desired name @@ -168,6 +174,10 @@ Run the following commands on the Authorization proxy server: After creating the role bindings, the next logical step is to generate the access token. The storage admin is responsible for generating and sending the token to the Kubernetes tenant admin. +>__Note__: +> - The `--insecure` flag is only necessary if certificates were not provided in `$HOME/.karavi/config.json`. +> - This sample copies the token directly to the Kubernetes cluster master node. The requirement here is that the token must be copied and/or stored in any location accessible to the Kubernetes tenant admin. + ``` echo === Generating token === karavictl generate token --tenant $TenantName --insecure --addr "grpc.${AuthorizationProxyHost}" | jq -r '.Token' > token.yaml @@ -175,12 +185,10 @@ After creating the role bindings, the next logical step is to generate the acces echo === Copy token to Driver Host === sshpass -p $DriverHostPassword scp token.yaml ${DriverHostVMUser}@{DriverHostVMIP}:/tmp/token.yaml ``` - ->__Note__: The sample above copies the token directly to the Kubernetes cluster master node. The requirement here is that the token must be copied and/or stored in any location accessible to the Kubernetes tenant admin. ### Copy the karavictl Binary to the Kubernetes Master Node -The karavictl binary is available from the CSM for Authorization proxy server. This needs to be copied to the Kubernetes master node for Kubernetes tenant admins so the Kubernetes tenant admins can configure the Dell EMC CSI driver with CSM for Authorization. +The karavictl binary is available from the CSM for Authorization proxy server. This needs to be copied to the Kubernetes master node for Kubernetes tenant admins so the Kubernetes tenant admins can configure the Dell CSI driver with CSM for Authorization. ``` sshpass -p dangerous scp bin/karavictl root@10.247.96.174:/tmp/karavictl @@ -188,11 +196,11 @@ sshpass -p dangerous scp bin/karavictl root@10.247.96.174:/tmp/karavictl >__Note__: The storage admin is responsible for copying the binary to a location accessible by the Kubernetes tenant admin. -## Configuring a Dell EMC CSI Driver with CSM for Authorization +## Configuring a Dell CSI Driver with CSM for Authorization The second part of CSM for Authorization deployment is to configure one or more of the [supported](../../authorization#supported-csi-drivers) CSI drivers. This is controlled by the Kubernetes tenant admin. -### Configuring a Dell EMC CSI Driver +### Configuring a Dell CSI Driver Given a setup where Kubernetes, a storage system, and the CSM for Authorization Proxy Server are deployed, follow the steps below to configure the CSI Drivers to work with the Authorization sidecar: @@ -225,8 +233,7 @@ Create the karavi-authorization-config secret using the following command: >__Note__: > - Create the driver secret as you would normally except update/add the connection information for communicating with the sidecar instead of the backend storage array and scrub the username and password > - For PowerScale, the *systemID* will be the *clusterName* of the array. -> - The *isilon-creds* secret has a *mountEndpoint* parameter which should not be updated by the user. This parameter is updated and used when the driver has been injected with [CSM-Authorization](https://github.com/dell/karavi-authorization). - +> - The *isilon-creds* secret has a *mountEndpoint* parameter which must be set to the hostname or IP address of the PowerScale OneFS API server, for example, 10.0.0.1. 3. Create the proxy-server-root-certificate secret. If running in *insecure* mode, create the secret with empty data: @@ -270,7 +277,9 @@ Please refer to step 5 in the [installation steps for PowerScale](../../csidrive 1. Update *endpointPort* to match the endpoint port number set in samples/secret/karavi-authorization-config.json ->__Note__: In *my-isilon-settings.yaml*, endpointPort acts as a default value. If endpointPort is not specified in *my-isilon-settings.yaml*, then it should be specified in the *endpoint* parameter of samples/secret/secret.yaml. +*Notes:* +> - In *my-isilon-settings.yaml*, endpointPort acts as a default value. If endpointPort is not specified in *my-isilon-settings.yaml*, then it should be specified in the *endpoint* parameter of samples/secret/secret.yaml. +> - The *isilon-creds* secret has a *mountEndpoint* parameter which must be set to the hostname or IP address of the PowerScale OneFS API server, for example, 10.0.0.1. 2. Enable CSM for Authorization and provide *proxyHost* address @@ -294,7 +303,6 @@ CSM for Authorization has a subset of configuration parameters that can be updat | certificate.crtFile | String | "" |Path to the host certificate file | | certificate.keyFile | String | "" |Path to the host private key file | | certificate.rootCertificate | String | "" |Path to the root CA file | -| web.sidecarproxyaddr | String |"127.0.0.1:5000/sidecar-proxy:latest" |Docker registry address of the CSM for Authorization sidecar-proxy | | web.jwtsigningsecret | String | "secret" |The secret used to sign JWT tokens | Updating configuration parameters can be done by editing the `karavi-config-secret` on the CSM for the Authorization Server. The secret can be queried using k3s and kubectl like so: @@ -315,7 +323,7 @@ Copy the new, encoded data and edit the `karavi-config-secret` with the new data Replace the data in `config.yaml` under the `data` field with your new, encoded data. Save the changes and CSM for Authorization will read the changed secret. ->__Note__: If you are updating the signing secret, the tenants need to be updated with new tokens via the `karavictl generate token` command like so: +>__Note__: If you are updating the signing secret, the tenants need to be updated with new tokens via the `karavictl generate token` command like so. The `--insecure` flag is only necessary if certificates were not provided in `$HOME/.karavi/config.json` `karavictl generate token --tenant $TenantName --insecure --addr "grpc.${AuthorizationProxyHost}" | jq -r '.Token' > kubectl -n $namespace apply -f -` diff --git a/content/v3/authorization/design.md b/content/v3/authorization/design.md index 8d9cd34138..564ac3c4e0 100644 --- a/content/v3/authorization/design.md +++ b/content/v3/authorization/design.md @@ -3,7 +3,7 @@ title: Design linktitle: Design weight: 1 description: > - Dell EMC Container Storage Modules (CSM) for Authorization design + Dell Technologies (Dell) Container Storage Modules (CSM) for Authorization design --- Container Storage Modules (CSM) for Authorization is designed as a service mesh solution and consists of many internal components that work together in concert to achieve its overall functionality. @@ -56,7 +56,7 @@ The mechanism for managing this storage would utilize a CSI Driver. ### CSI Driver -A CSI Driver supports the Container Service Interface (CSI) specification. Dell EMC provides customers with CSI Drivers for its various storage arrays. +A CSI Driver supports the Container Service Interface (CSI) specification. Dell provides customers with CSI Drivers for its various storage arrays. CSM for Authorization intends to support a majority, if not all, of these drivers. A CSI Driver will typically be configured to communicate directly to its intended storage array and as such will be limited in using only the authentication @@ -66,7 +66,7 @@ methods supported by the Storage Array itself, e.g. Basic authentication over TL ### Sidecar Proxy -The CSM for Authorization Sidecar Proxy is a sidecar container that gets "injected" into the CSI Driver's Pod. It acts as a proxy and forwards all requests to a +The CSM for Authorization Sidecar Proxy is deployed as a sidecar in the CSI Driver's Pod. It acts as a proxy and forwards all requests to a CSM Authorization Server. The [CSI Driver section](#csi-driver) noted the limitation of a CSI Driver using Storage Array supported authentication methods only. By nature of being a proxy, the CSM for Authorization @@ -86,12 +86,9 @@ Inbound requests are expected to originate from the CSM for Authorization Sideca The [*karavictl*](../cli) CLI (Command Line Interface) application allows Storage Admins to manage and interact with a running CSM for Authorization Server. -Additionally, *karavictl* provides functionality for supporting the sidecar proxy injection mechanism mentioned above. Injection is discussed in more detail later -on in this document. - ### Storage Array -A Storage Array is typically considered to be one of the various Dell EMC storage offerings, e.g. Dell EMC PowerFlex which is supported by CSM for Authorization +A Storage Array is typically considered to be one of the various Dell storage offerings, e.g. Dell PowerFlex which is supported by CSM for Authorization today. Support for more Storage Arrays will come in the future. ## How it Works diff --git a/content/v3/authorization/troubleshooting.md b/content/v3/authorization/troubleshooting.md index eef3c64a87..0a47cb4ec8 100644 --- a/content/v3/authorization/troubleshooting.md +++ b/content/v3/authorization/troubleshooting.md @@ -6,9 +6,6 @@ Description: > Troubleshooting guide --- -- [Running `karavictl inject` leaves the vxflexos-controller in a `Pending` state](#running-karavictl-inject-leaves-the-vxflexos-controller-in-a-pending-state) -- [Running `karavictl inject` leaves the powermax-controller in a `Pending` state](#running-karavictl-inject-leaves-the-powermax-controller-in-a-pending-state) -- [Running `karavictl inject` leaves the isilon-controller in a `Pending` state](#running-karavictl-inject-leaves-the-isilon-controller-in-a-pending-state) - [Running `karavictl tenant` commands result in an HTTP 504 error](#running-karavictl-tenant-commands-result-in-an-http-504-error) --- @@ -26,153 +23,6 @@ For OPA related logs, run: $ k3s kubectl logs deploy/proxy-server -n karavi -c opa ``` -### Running "karavictl inject" leaves the vxflexos-controller in a "Pending" state -This situation may occur when the number of vxflexos-controller pods that are deployed is equal to the number of schedulable nodes. -``` -$ kubectl get pods -n vxflexos - -NAME READY STATUS RESTARTS AGE -vxflexos-controller-696cc5945f-4t94d 0/6 Pending 0 3m2s -vxflexos-controller-75cdcbc5db-k25zx 5/5 Running 0 3m41s -vxflexos-controller-75cdcbc5db-nkxqh 5/5 Running 0 3m42s -vxflexos-node-mjc74 3/3 Running 0 2m44s -vxflexos-node-zgswp 3/3 Running 0 2m44s -``` - -__Resolution__ - -To resolve this issue, we need to temporarily reduce the number of replicas that the driver deployment is using. - -1. Edit the deployment - ``` - $ kubectl edit -n vxflexos deploy/vxflexos-controller - ``` - -2. Find `replicas` under the `spec` section of the deployment manifest. -3. Reduce the number of `replicas` by 1 -4. Save the file -5. Confirm that the updated controller pods have been deployed - ``` - $ kubectl get pods -n vxflexos - - NAME READY STATUS RESTARTS AGE - vxflexos-controller-696cc5945f-4t94d 6/6 Running 0 4m41s - vxflexos-node-mjc74 3/3 Running 0 3m44s - vxflexos-node-zgswp 3/3 Running 0 3m44s - ``` - -6. Edit the deployment again -7. Find `replicas` under the `spec` section of the deployment manifest. -8. Increase the number of `replicas` by 1 -9. Save the file -10. Confirm that the updated controller pods have been deployed - ``` - $ kubectl get pods -n vxflexos - - NAME READY STATUS RESTARTS AGE - vxflexos-controller-696cc5945f-4t94d 6/6 Running 0 5m41s - vxflexos-controller-696cc5945f-6xxhb 6/6 Running 0 5m41s - vxflexos-node-mjc74 3/3 Running 0 4m44s - vxflexos-node-zgswp 3/3 Running 0 4m44s - ``` - -### Running "karavictl inject" leaves the powermax-controller in a "Pending" state -This situation may occur when the number of powermax-controller pods that are deployed is equal to the number of schedulable nodes. -``` -$ kubectl get pods -n powermax - -NAME READY STATUS RESTARTS AGE -powermax-controller-58d8779f5d-v7t56 0/6 Pending 0 25s -powermax-controller-78f749847-jqphx 5/5 Running 0 10m -powermax-controller-78f749847-w6vp5 5/5 Running 0 10m -powermax-node-gx5pk 3/3 Running 0 21s -powermax-node-k5gwc 3/3 Running 0 17s -``` - -__Resolution__ - -To resolve this issue, we need to temporarily reduce the number of replicas that the driver deployment is using. - -1. Edit the deployment - ``` - $ kubectl edit -n powermax deploy/powermax-controller - ``` - -2. Find `replicas` under the `spec` section of the deployment manifest. -3. Reduce the number of `replicas` by 1 -4. Save the file -5. Confirm that the updated controller pods have been deployed - ``` - $ kubectl get pods -n powermax - NAME READY STATUS RESTARTS AGE - powermax-controller-58d8779f5d-cqx8d 6/6 Running 0 22s - powermax-node-gx5pk 3/3 Running 3 8m3s - powermax-node-k5gwc 3/3 Running 3 7m59s - ``` - -6. Edit the deployment again -7. Find `replicas` under the `spec` section of the deployment manifest. -8. Increase the number of `replicas` by 1 -9. Save the file -10. Confirm that the updated controller pods have been deployed - ``` - $ kubectl get pods -n powermax - NAME READY STATUS RESTARTS AGE - powermax-controller-58d8779f5d-cqx8d 6/6 Running 0 22s - powermax-controller-58d8779f5d-v7t56 6/6 Running 22 8m7s - powermax-node-gx5pk 3/3 Running 3 8m3s - powermax-node-k5gwc 3/3 Running 3 7m59s - ``` - -### Running "karavictl inject" leaves the isilon-controller in a "Pending" state -This situation may occur when the number of Isilon controller pods that are deployed is equal to the number of schedulable nodes. -``` -$ kubectl get pods -n isilon - -NAME READY STATUS RESTARTS AGE -isilon-controller-58d8779f5d-v7t56 0/6 Pending 0 25s -isilon-controller-78f749847-jqphx 5/5 Running 0 10m -isilon-controller-78f749847-w6vp5 5/5 Running 0 10m -isilon-node-gx5pk 3/3 Running 0 21s -isilon-node-k5gwc 3/3 Running 0 17s -``` - -__Resolution__ - -To resolve this issue, we need to temporarily reduce the number of replicas that the driver deployment is using. - -1. Edit the deployment - ``` - $ kubectl edit -n deploy/isilon-controller - ``` - -2. Find `replicas` under the `spec` section of the deployment manifest. -3. Reduce the number of `replicas` by 1 -4. Save the file -5. Confirm that the updated controller pods have been deployed - ``` - $ kubectl get pods -n isilon - - NAME READY STATUS RESTARTS AGE - isilon-controller-696cc5945f-4t94d 6/6 Running 0 4m41s - isilon-node-mjc74 3/3 Running 0 3m44s - isilon-node-zgswp 3/3 Running 0 3m44s - ``` - -6. Edit the deployment again -7. Find `replicas` under the `spec` section of the deployment manifest. -8. Increase the number of `replicas` by 1 -9. Save the file -10. Confirm that the updated controller pods have been deployed - ``` - $ kubectl get pods -n isilon - NAME READY STATUS RESTARTS AGE - isilon-controller-58d8779f5d-cqx8d 6/6 Running 0 22s - isilon-controller-58d8779f5d-v7t56 6/6 Running 22 8m7s - isilon-node-gx5pk 3/3 Running 3 8m3s - isilon-node-k5gwc 3/3 Running 3 7m59s - ``` - ### Running "karavictl tenant" commands result in an HTTP 504 error This situation may occur if there are Iptables or other firewall rules preventing communication with the provided ``: ``` diff --git a/content/v3/authorization/uninstallation.md b/content/v3/authorization/uninstallation.md index 4b8fad3b53..fcbcb37aa2 100644 --- a/content/v3/authorization/uninstallation.md +++ b/content/v3/authorization/uninstallation.md @@ -3,7 +3,7 @@ title: Uninstallation linktitle: Uninstallation weight: 2 description: > - Dell EMC Container Storage Modules (CSM) for Authorization Uninstallation + Dell Technologies (Dell) Container Storage Modules (CSM) for Authorization Uninstallation --- This section outlines the uninstallation steps for Container Storage Modules (CSM) for Authorization. diff --git a/content/v3/authorization/upgrade.md b/content/v3/authorization/upgrade.md index ba9a487365..4c31e3a926 100644 --- a/content/v3/authorization/upgrade.md +++ b/content/v3/authorization/upgrade.md @@ -3,12 +3,12 @@ title: Upgrade linktitle: Upgrade weight: 3 description: > - Upgrade Dell EMC Container Storage Modules (CSM) for Authorization + Upgrade Dell Technologies (Dell) Container Storage Modules (CSM) for Authorization --- This section outlines the upgrade steps for Container Storage Modules (CSM) for Authorization. The upgrade of CSM for Authorization is handled in 2 parts: - Upgrading the CSM for Authorization proxy server -- Upgrading the Dell EMC CSI drivers with CSM for Authorization enabled +- Upgrading the Dell CSI drivers with CSM for Authorization enabled ### Upgrading CSM for Authorization proxy server @@ -29,7 +29,7 @@ k3s kubectl version >__Note__: The above steps manage install and upgrade of all dependencies that are required by the CSM for Authorization proxy server. -### Upgrading Dell EMC CSI Driver(s) with CSM for Authorization enabled +### Upgrading Dell CSI Driver(s) with CSM for Authorization enabled Given a setup where the CSM for Authorization proxy server is already upgraded to the latest version, follow the upgrade instructions for the applicable CSI Driver(s) to upgrade the driver and the CSM for Authorization sidecar diff --git a/content/v3/contributionguidelines/_index.md b/content/v3/contributionguidelines/_index.md index 19b639c316..e02b519065 100644 --- a/content/v3/contributionguidelines/_index.md +++ b/content/v3/contributionguidelines/_index.md @@ -3,7 +3,7 @@ title: "Contribution Guidelines" linkTitle: "Contribution Guidelines" weight: 12 Description: > - Dell EMC Container Storage Modules (CSM) docs Contribution Guidelines + Dell Technologies (Dell) Container Storage Modules (CSM) docs Contribution Guidelines --- diff --git a/content/v3/csidriver/_index.md b/content/v3/csidriver/_index.md index a778a41266..495c29b500 100644 --- a/content/v3/csidriver/_index.md +++ b/content/v3/csidriver/_index.md @@ -2,11 +2,11 @@ --- title: "CSI Drivers" linkTitle: "CSI Drivers" -description: About Dell EMC CSI Drivers +description: About Dell Technologies (Dell) CSI Drivers weight: 3 --- -The CSI Drivers by Dell EMC implement an interface between [CSI](https://kubernetes-csi.github.io/docs/) (CSI spec v1.5) enabled Container Orchestrator (CO) and Dell EMC 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 Dell storage system. ![CSI Architecture](Architecture_Diagram.png) @@ -14,54 +14,57 @@ The CSI Drivers by Dell EMC implement an interface between [CSI](https://kuberne ### Supported Operating Systems/Container Orchestrator Platforms {{}} -| | PowerMax | PowerFlex |   Unity| PowerScale | PowerStore | +| | PowerMax | PowerFlex | Unity | PowerScale | PowerStore | |---------------|:----------------:|:-------------------:|:----------------:|:-----------------:|:----------------:| -| Kubernetes | 1.20, 1.21, 1.22 | 1.20, 1.21, 1.22 | 1.20, 1.21, 1.22 | 1.20, 1.21, 1.22 | 1.20, 1.21, 1.22 | +| Kubernetes | 1.21, 1.22, 1.23 | 1.21, 1.22, 1.23 | 1.21, 1.22, 1.23 | 1.21, 1.22, 1.23 | 1.21, 1.22, 1.23 | | 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 | 18.04, 20.04 | 20.04 | +| Ubuntu | 20.04 | 20.04 | 18.04, 20.04 | 18.04, 20.04 | 20.04 | | CentOS | 7.8, 7.9 | 7.8, 7.9 | 7.8, 7.9 | 7.8, 7.9 | 7.8, 7.9 | -| SLES | 15SP3 | 15SP3 | 15SP3 | 15SP3 | 15SP3 | -| Red Hat OpenShift | 4.8, 4.8 EUS, 4.9 | 4.8, 4.8 EUS, 4.9 | 4.8, 4.8 EUS, 4.9 | 4.8, 4.8 EUS, 4.9 | 4.8, 4.8 EUS, 4.9 | -| Mirantis Kubernetes Engine | 3.4.x | 3.4.x | 3.4.x | 3.4.x | 3.4.x | -| Google Anthos | 1.6 | 1.8 | no | 1.9 | 1.9 | -| VMware Tanzu | no | no | NFS | NFS | NFS | -| Rancher Kubernetes Engine | yes | yes | yes | yes | yes | +| SLES | 15SP3 | 15SP3 | 15SP3 | 15SP3 | 15SP3 | +| Red Hat OpenShift | 4.8, 4.8 EUS, 4.9 | 4.8, 4.8 EUS, 4.9 | 4.8, 4.8 EUS, 4.9 | 4.8, 4.8 EUS, 4.9 | 4.8, 4.8 EUS, 4.9 | +| Mirantis Kubernetes Engine | 3.4.x | 3.4.x | 3.5.x | 3.4.x | 3.4.x | +| Google Anthos | 1.6 | 1.8 | no | 1.9 | 1.9 | +| VMware Tanzu | no | no | NFS | NFS | NFS | +| Rancher Kubernetes Engine | yes | yes | yes | yes | yes | +| Amazon Elastic Kubernetes Service
Anywhere | no | yes | no | no | yes | + {{
}} ### CSI Driver Capabilities {{}} -| Features | PowerMax | PowerFlex |    Unity | PowerScale | PowerStore | -|--------------------------|:--------:|:------------------:|:---------:|:-----------------:|:----------:| -| CSI Specification | v1.5 | v1.5| v1.5 | v1.5 | v1.5 | -| Static Provisioning | yes | yes| yes | yes | yes | -| Dynamic Provisioning | yes | yes| yes | yes | yes | -| Expand Persistent Volume | yes | yes| yes | yes | yes | -| Create VolumeSnapshot | yes | yes| yes | yes | yes | -| Create Volume from Snapshot | yes | yes| yes | yes | yes | -| Delete Snapshot | yes | yes| yes | yes | yes | -| [Access Mode](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes) | RWO
(FC/iSCSI)
RWO/
RWX/
ROX
(Raw block) | RWO
RWO/
RWX/
ROX/
RWOP
(Raw block) | RWO/RWOP
(FC/iSCSI)
RWO/RWX/
RWOP
(RawBlock)
RWO/RWX/ROX/
RWOP
(NFS) | RWO/RWX/ROX/
RWOP | RWO/RWOP
(FC/iSCSI)
RWO/
RWX/
ROX/
RWOP
(RawBlock, NFS) | -| CSI Volume Cloning | yes | yes | yes | yes | yes | -| CSI Raw Block Volume | yes | yes | yes | no | yes | -| CSI Ephemeral Volume | no | yes | yes | yes | yes | -| Topology | yes | yes | yes | yes | yes | -| Multi-array | yes | yes | yes | yes | yes | -| Volume Health Monitoring | no | yes | yes | yes | yes | +| Features | PowerMax | PowerFlex | Unity | PowerScale | PowerStore | +|--------------------------|:--------:|:---------:|:------:|:----------:|:----------:| +| CSI Driver version | 2.2.0 | 2.2.0 | 2.2.0 | 2.2.0 | 2.2.0 | +| Static Provisioning | yes | yes | yes | yes | yes | +| Dynamic Provisioning | yes | yes | yes | yes | yes | +| Expand Persistent Volume | yes | yes | yes | yes | yes | +| Create VolumeSnapshot | yes | yes | yes | yes | yes | +| Create Volume from Snapshot | yes | yes | yes | yes | yes | +| Delete Snapshot | yes | yes | yes | yes | yes | +| [Access Mode](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes)| RWO/
RWOP(FC/iSCSI)
RWO/
RWX/
ROX/
RWOP(Raw block) | RWO/ROX/RWOP

RWX (Raw block only) | RWO/ROX/RWOP

RWX (Raw block & NFS only) | RWO/RWX/ROX/
RWOP | RWO/RWOP
(FC/iSCSI)
RWO/
RWX/
ROX/
RWOP
(RawBlock, NFS) | +| CSI Volume Cloning | yes | yes | yes | yes | yes | +| CSI Raw Block Volume | yes | yes | yes | no | yes | +| CSI Ephemeral Volume | no | yes | yes | yes | yes | +| Topology | yes | yes | yes | yes | yes | +| Multi-array | yes | yes | yes | yes | yes | +| Volume Health Monitoring | yes | yes | yes | yes | yes | {{
}} ### Supported Storage Platforms {{}} -| | PowerMax | PowerFlex |   Unity| PowerScale | PowerStore | -|---------------|:----------------:|:-------------------:|:----------------:|:-----------------:|:----------------:| -| Storage Array |5978.479.479, 5978.669.669, 5978.711.711, Unisphere 9.2| 3.5.x, 3.6.x | 5.0.5, 5.0.6, 5.0.7, 5.1.0 | OneFS 8.1, 8.2, 9.0, 9.1, 9.2, 9.3 | 1.0.x, 2.0.x | +| | PowerMax | PowerFlex | Unity | PowerScale | PowerStore | +|---------------|:-------------------------------------------------------:|:----------------:|:--------------------------:|:----------------------------------:|:----------------:| +| Storage Array |5978.479.479, 5978.711.711
Unisphere 9.2| 3.5.x, 3.6.x | 5.0.7, 5.1.0, 5.1.2 | OneFS 8.1, 8.2, 9.0, 9.1, 9.2, 9.3 | 1.0.x, 2.0.x, 2.1.x | {{
}} ### Backend Storage Details {{}} -| Features | PowerMax | PowerFlex |   Unity | PowerScale| PowerStore | +| Features | PowerMax | PowerFlex | Unity | PowerScale | PowerStore | |---------------|:----------------:|:------------------:|:----------------:|:----------------:|:----------------:| | Fibre Channel | yes | N/A | yes | N/A | yes | | iSCSI | yes | N/A | yes | N/A | yes | +| NVMeTCP | N/A | N/A | N/A | N/A | yes | | NFS | N/A | N/A | yes | yes | yes | | Other | N/A | ScaleIO protocol | N/A | N/A | N/A | -| Supported FS | ext4 / xfs | ext4 / xfs | ext3 / ext4 / xfs / NFS | NFS | ext3 / ext4 / xfs / NFS | -| Thin / Thick provisioning | Thin | Thin | Thin/Thick | N/A | Thin | +| Supported FS | ext4 / xfs | ext4 / xfs | ext3 / ext4 / xfs / NFS | NFS | ext3 / ext4 / xfs / NFS | +| Thin / Thick provisioning | Thin | Thin | Thin/Thick | N/A | Thin | | Platform-specific configurable settings | Service Level selection
iSCSI CHAP | - | Host IO Limit
Tiering Policy
NFS Host IO size
Snapshot Retention duration | Access Zone
NFS version (3 or 4);Configurable Export IPs | iSCSI CHAP | {{
}} diff --git a/content/v3/csidriver/features/powerflex.md b/content/v3/csidriver/features/powerflex.md index c92a4d993c..6353aa6f58 100644 --- a/content/v3/csidriver/features/powerflex.md +++ b/content/v3/csidriver/features/powerflex.md @@ -7,7 +7,7 @@ Description: Code features for PowerFlex Driver ## Volume Snapshot Feature -The CSI PowerFlex driver version 2.0 and higher supports v1 snapshots on Kubernetes 1.20/1.21/1.22. +The CSI PowerFlex driver version 2.0 and higher supports v1 snapshots on Kubernetes 1.21/1.22/1.23. In order to use Volume Snapshots, ensure the following components are deployed to your cluster: - Kubernetes Volume Snapshot CRDs @@ -84,26 +84,25 @@ spec: This feature extends CSI specification to add the capability to create crash-consistent snapshots of a group of volumes. This feature is available as a technical preview. To use this feature, users have to deploy the csi-volumegroupsnapshotter side-car as part of the PowerFlex driver. Once the sidecar has been deployed, users can make snapshots by using yaml files such as this one: ``` -apiVersion: volumegroup.storage.dell.com/v1alpha2 +apiVersion: volumegroup.storage.dell.com/v1 kind: DellCsiVolumeGroupSnapshot metadata: - # Name must be 13 characters or less in length name: "vg-snaprun1" namespace: "helmtest-vxflexos" spec: # Add fields here driverName: "csi-vxflexos.dellemc.com" # defines how to process VolumeSnapshot members when volume group snapshot is deleted - # "retain" - keep VolumeSnapshot instances - # "delete" - delete VolumeSnapshot instances - memberReclaimPolicy: "retain" + # "Retain" - keep VolumeSnapshot instances + # "Delete" - delete VolumeSnapshot instances + memberReclaimPolicy: "Retain" volumesnapshotclass: "vxflexos-snapclass" pvcLabel: "vgs-snap-label" # pvcList: # - "pvcName1" # - "pvcName2" ``` -In the metadata section, the name is limited to 13 characters because the snapshotter will append a timestamp to it. Additionally, the pvcLabel field specifies a label that must be present in PVCs that are to be snapshotted. Here is a sample of that portion of a .yaml for a PVC: +The pvcLabel field specifies a label that must be present in PVCs that are to be snapshotted. Here is a sample of that portion of a .yaml for a PVC: ``` metadata: name: pvol0 @@ -291,7 +290,7 @@ metadata: annotations: meta.helm.sh/release-name: vxflexos meta.helm.sh/release-namespace: vxflexos - storageclass.beta.kubernetes.io/is-default-class: "true" + storageclass.kubernetes.io/is-default-class: "true" creationTimestamp: "2020-05-27T13:24:55Z" labels: app.kubernetes.io/managed-by: Helm diff --git a/content/v3/csidriver/features/powermax.md b/content/v3/csidriver/features/powermax.md index 315786176c..55a57131c9 100644 --- a/content/v3/csidriver/features/powermax.md +++ b/content/v3/csidriver/features/powermax.md @@ -122,7 +122,7 @@ When challenged, the host initiator transmits a CHAP credential and CHAP secret ## Custom Driver Name -With version 1.3.0 of the driver, a custom name can be assigned to the driver at the time of installation. This enables installation of the CSI driver in a different namespace and installation of multiple CSI drivers for Dell EMC PowerMax in the same Kubernetes/OpenShift cluster. +With version 1.3.0 of the driver, a custom name can be assigned to the driver at the time of installation. This enables installation of the CSI driver in a different namespace and installation of multiple CSI drivers for Dell PowerMax in the same Kubernetes/OpenShift cluster. To use this feature, set the following values under `customDriverName` in `my-powermax-settings.yaml`. - Value: Set this to the custom name of the driver. @@ -140,7 +140,7 @@ For example, if the driver name is set to _driver_ and it is installed in the na ### Install multiple drivers -To install multiple CSI Drivers for Dell EMC PowerMax in a single Kubernetes cluster, you can take advantage of the custom driver name feature. There are a few important restrictions that should be strictly adhered to: +To install multiple CSI Drivers for Dell PowerMax in a single Kubernetes cluster, you can take advantage of the custom driver name feature. There are a few important restrictions that should be strictly adhered to: - Only one driver can be installed in a single namespace - Different drivers should not connect to a single Unisphere server - Different drivers should not be used to manage a single PowerMax array @@ -176,7 +176,7 @@ kind: StorageClass metadata: name: powermax-expand-sc annotations: - storageclass.beta.kubernetes.io/is-default-class: false + storageclass.kubernetes.io/is-default-class: false provisioner: csi-powermax.dellemc.com reclaimPolicy: Delete allowVolumeExpansion: true #Set this attribute to true if you plan to expand any PVCs @@ -458,3 +458,32 @@ To update the log level dynamically, the user has to edit the ConfigMap `powerma ``` kubectl edit configmap -n powermax powermax-config-params ``` + +## Volume Health Monitoring + +CSI Driver for Dell PowerMax 2.2.0 and above supports volume health monitoring. To enable Volume Health Monitoring from the node side, the alpha feature gate CSIVolumeHealth needs to be enabled. To use this feature, set controller.healthMonitor.enabled and node.healthMonitor.enabled to true. To change the monitor interval, set controller.healthMonitor.interval parameter. + +## Single Pod Access Mode for PersistentVolumes- ReadWriteOncePod (ALPHA FEATURE) + +Use `ReadWriteOncePod(RWOP)` access mode if you want to ensure that only one pod across the whole cluster can read that PVC or write to it. This is only supported for CSI Driver for PowerMax 2.2.0+ and Kubernetes version 1.22+. + +To use this feature, enable the ReadWriteOncePod feature gate for kube-apiserver, kube-scheduler, and kubelet, by setting command line arguments: +`--feature-gates="...,ReadWriteOncePod=true"` + +### Creating a PersistentVolumeClaim +```yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: single-writer-only +spec: + accessModes: + - ReadWriteOncePod # the volume can be mounted as read-write by a single pod across the whole cluster + resources: + requests: + storage: 1Gi +``` + +When this feature is enabled, the existing `ReadWriteOnce(RWO)` access mode restricts volume access to a single node and allows multiple pods on the same node to read from and write to the same volume. + +To migrate existing PersistentVolumes to use `ReadWriteOncePod`, please follow the instruction from [here](https://kubernetes.io/blog/2021/09/13/read-write-once-pod-access-mode-alpha/#migrating-existing-persistentvolumes). \ No newline at end of file diff --git a/content/v3/csidriver/features/powerscale.md b/content/v3/csidriver/features/powerscale.md index 98536afa97..acaee8b878 100644 --- a/content/v3/csidriver/features/powerscale.md +++ b/content/v3/csidriver/features/powerscale.md @@ -129,7 +129,7 @@ Following are the manifests for the Volume Snapshot Class: 1. VolumeSnapshotClass ```yaml -# For kubernetes version 20 and above (v1 snaps) + apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: @@ -192,6 +192,8 @@ spec: storage: 5Gi ``` +> Starting from CSI PowerScale driver version 2.2, it is allowed to create PersistentVolumeClaim from VolumeSnapshot with different isi paths i.e., isi paths of the new volume and the VolumeSnapshot can be different. + ## Volume Expansion The CSI PowerScale driver version 1.2 and later supports the expansion of Persistent Volumes (PVs). This expansion can be done either online (for example, when a PVC is attached to a node) or offline (for example, when a PVC is not attached to any node). @@ -206,7 +208,7 @@ kind: StorageClass metadata: name: isilon-expand-sc annotations: - storageclass.beta.kubernetes.io/is-default-class: "false" + storageclass.kubernetes.io/is-default-class: "false" provisioner: "csi-isilon.dellemc.com" reclaimPolicy: Delete parameters: @@ -424,7 +426,7 @@ For a cluster with multiple network interfaces and if a user wants to segregate ## Volume Limit -The CSI Driver for Dell EMC PowerScale allows users to specify the maximum number of PowerScale volumes that can be used in a node. +The CSI Driver for Dell PowerScale allows users to specify the maximum number of PowerScale volumes that can be used in a node. The user can set the volume limit for a node by creating a node label `max-isilon-volumes-per-node` and specifying the volume limit for that node.
`kubectl label node max-isilon-volumes-per-node=` @@ -441,7 +443,7 @@ Similarly, users can define the tolerations based on various conditions like mem ## Usage of SmartQuotas to Limit Storage Consumption -CSI driver for Dell EMC Isilon handles capacity limiting using SmartQuotas feature. +CSI driver for Dell Isilon handles capacity limiting using SmartQuotas feature. To use the SmartQuotas feature user can specify the boolean value 'enableQuota' in myvalues.yaml or my-isilon-settings.yaml. @@ -494,7 +496,7 @@ kubectl edit configmap -n isilon isilon-config-params ## NAT Support -CSI Driver for Dell EMC PowerScale is supported in the NAT environment. +CSI Driver for Dell PowerScale is supported in the NAT environment. ## Configurable permissions for volume directory @@ -531,7 +533,7 @@ Other ways of configuring powerscale volume permissions remain the same as helm- ## PV/PVC Metrics -CSI Driver for Dell EMC PowerScale 2.1.0 and above supports volume health monitoring. This allows Kubernetes to report on the condition, status and usage of the underlying volumes. +CSI Driver for Dell PowerScale 2.1.0 and above supports volume health monitoring. This allows Kubernetes to report on the condition, status and usage of the underlying volumes. For example, if a volume were to be deleted from the array, or unmounted outside of Kubernetes, Kubernetes will now report these abnormal conditions as events. ### This feature can be enabled @@ -540,7 +542,7 @@ For example, if a volume were to be deleted from the array, or unmounted outside ## Single Pod Access Mode for PersistentVolumes- ReadWriteOncePod (ALPHA FEATURE) -Use `ReadWriteOncePod(RWOP)` access mode if you want to ensure that only one pod across the whole cluster can read that PVC or write to it. This is only supported for CSI Driver for PowerScale 2.1.0 and Kubernetes version 1.22+. +Use `ReadWriteOncePod(RWOP)` access mode if you want to ensure that only one pod across the whole cluster can read that PVC or write to it. This is supported for CSI Driver for PowerScale 2.1.0+ and Kubernetes version 1.22+. To use this feature, enable the ReadWriteOncePod feature gate for kube-apiserver, kube-scheduler, and kubelet, by setting command line arguments: `--feature-gates="...,ReadWriteOncePod=true"` diff --git a/content/v3/csidriver/features/powerstore.md b/content/v3/csidriver/features/powerstore.md index d05d280695..1f5b1fb50e 100644 --- a/content/v3/csidriver/features/powerstore.md +++ b/content/v3/csidriver/features/powerstore.md @@ -183,7 +183,7 @@ kind: StorageClass metadata: name: powerstore-expand-sc annotations: - storageclass.beta.kubernetes.io/is-default-class: false + storageclass.kubernetes.io/is-default-class: false provisioner: csi-powerstore.dellemc.com reclaimPolicy: Delete allowVolumeExpansion: true # Set this attribute to true if you plan to expand any PVCs created using this storage class @@ -340,6 +340,7 @@ To create `NFS` volume you need to provide `nasName:` parameters that point to t volumeAttributes: size: "20Gi" nasName: "csi-nas-name" + nfsAcls: "0777" ``` ## Controller HA @@ -413,7 +414,7 @@ allowedTopologies: - "true" ``` -This example matches all nodes where the driver has a connection to PowerStore with an IP of `127.0.0.1` via FibreChannel. Similar examples can be found in mentioned folder for NFS and iSCSI. +This example matches all nodes where the driver has a connection to PowerStore with an IP of `127.0.0.1` via FibreChannel. Similar examples can be found in mentioned folder for NFS, iSCSI and NVMe. You can check what labels your nodes contain by running `kubectl get nodes --show-labels` @@ -424,7 +425,7 @@ For any additional information about the topology, see the [Kubernetes Topology ## Reuse PowerStore hostname -The CSI PowerStore driver version 1.2 and later can automatically detect if the current node was already registered as a Host on the storage array before. It will check if Host initiators and node initiators (FC or iSCSI) match. If they do, the driver will not create a new host and will take the existing name of the Host as nodeID. +The CSI PowerStore driver version 1.2 and later can automatically detect if the current node was already registered as a Host on the storage array before. It will check if Host initiators and node initiators (FC, iSCSI or NVMe) match. If they do, the driver will not create a new host and will take the existing name of the Host as nodeID. ## Multiarray support @@ -444,8 +445,10 @@ Create a file called `config.yaml` and populate it with the following content password: "password" # password for connecting to API skipCertificateValidation: true # use insecure connection or not default: true # treat current array as a default (would be used by storage classes without arrayIP parameter) - blockProtocol: "ISCSI" # what SCSI transport protocol use on node side (FC, ISCSI, None, or auto) - nasName: "nas-server" # what NAS must be used for NFS volumes + blockProtocol: "ISCSI" # what transport protocol use on node side (FC, ISCSI, NVMeTCP, None, or auto) + nasName: "nas-server" # what NAS must be used for NFS volumes + nfsAcls: "0777" # (Optional) defines permissions - POSIX mode bits or NFSv4 ACLs, to be set on NFS target mount directory. + # NFSv4 ACls are supported for NFSv4 shares on NFSv4 enabled NAS servers only. POSIX ACLs are not supported and only POSIX mode bits are supported for NFSv3 shares. - endpoint: "https://10.0.0.2/api/rest" globalID: "unique" username: "user" @@ -604,14 +607,14 @@ kubectl edit configmap -n csi-powerstore powerstore-config-params ## NAT Support -CSI Driver for Dell EMC Powerstore is supported in the NAT environment for NFS protocol. +CSI Driver for Dell Powerstore is supported in the NAT environment for NFS protocol. The user will be able to install the driver and able to create pods. ## PV/PVC Metrics -CSI Driver for Dell EMC Powerstore 2.1.0 and above supports volume health monitoring. To enable Volume Health Monitoring from the node side, the alpha feature gate CSIVolumeHealth needs to be enabled. To use this feature, set controller.healthMonitor.enabled and node.healthMonitor.enabled to true. To change the monitor interval, set controller.healthMonitor.volumeHealthMonitorInterval parameter. +CSI Driver for Dell Powerstore 2.1.0 and above supports volume health monitoring. To enable Volume Health Monitoring from the node side, the alpha feature gate CSIVolumeHealth needs to be enabled. To use this feature, set controller.healthMonitor.enabled and node.healthMonitor.enabled to true. To change the monitor interval, set controller.healthMonitor.volumeHealthMonitorInterval parameter. ## Single Pod Access Mode for PersistentVolumes @@ -638,3 +641,37 @@ spec: ``` >Note: The access mode ReadWriteOnce allows multiple pods to access a single volume within a single worker node and the behavior is consistent across all supported Kubernetes versions. + +## POSIX mode bits and NFSv4 ACLs + +CSI PowerStore driver version 2.2.0 and later allows users to set user-defined permissions on NFS target mount directory using POSIX mode bits or NFSv4 ACLs. + +NFSv4 ACLs are supported for NFSv4 shares on NFSv4 enabled NAS servers only. Please ensure the order when providing the NFSv4 ACLs. + +To use this feature, provide permissions in `nfsAcls` parameter in values.yaml, secrets or NFS storage class. + +For example: + +1. POSIX mode bits + +```yaml +nfsAcls: "0755" +``` + +2. NFSv4 ACLs + +```yaml +nfsAcls: "A::OWNER@:rwatTnNcCy,A::GROUP@:rxtncy,A::EVERYONE@:rxtncy,A::user@domain.com:rxtncy" +``` + +>Note: If no values are specified, default value of "0777" will be set. +>POSIX ACLs are not supported and only POSIX mode bits are supported for NFSv3 shares. + + +## NVMe/TCP Support + +CSI Driver for Dell Powerstore 2.2.0 and above supports NVMe/TCP provisioning. To enable NVMe/TCP provisioning, blockProtocol on secret should be specified as `NVMeTCP`. +In case blockProtocol is specified as `auto`, the driver will be able to find the initiators on the host and choose the protocol accordingly. If the host has multiple protocols enabled, then FC gets the highest priority followed by iSCSI and then NVMeTCP. + +>Note: NVMe/TCP is not supported on RHEL 7.x versions and CoreOS. +>NVMe/TCP is supported with Powerstore 2.1 and above. diff --git a/content/v3/csidriver/features/unity.md b/content/v3/csidriver/features/unity.md index b24ad1c022..7559245396 100644 --- a/content/v3/csidriver/features/unity.md +++ b/content/v3/csidriver/features/unity.md @@ -185,12 +185,12 @@ kind: StorageClass metadata: name: unity-expand-sc annotations: - storageclass.beta.kubernetes.io/is-default-class: false + storageclass.kubernetes.io/is-default-class: false provisioner: csi-unity.dellemc.com reclaimPolicy: Delete allowVolumeExpansion: true # Set this attribute to true if you plan to expand any PVCs created using this storage class parameters: - FsType: xfs + csi.storage.k8s.io/fstype: "xfs" ``` To resize a PVC, edit the existing PVC spec and set spec.resources.requests.storage to the intended size. For example, if you have a PVC unity-pvc-demo of size 3Gi, then you can resize it to 30Gi by updating the PVC. @@ -215,7 +215,7 @@ spec: ## Raw block support -The CSI Unity driver version 1.4 and later supports Raw Block Volumes. +The CSI Unity driver supports Raw Block Volumes. Raw Block volumes are created using the volumeDevices list in the pod template spec with each entry accessing a volumeClaimTemplate specifying a volumeMode: Block. The following is an example configuration: ```yaml @@ -310,7 +310,7 @@ spec: ## Ephemeral Inline Volume -The CSI Unity driver version 1.4 and later supports ephemeral inline CSI volumes. This feature allows CSI volumes to be specified directly in the pod specification. +The CSI Unity driver supports ephemeral inline CSI volumes. This feature allows CSI volumes to be specified directly in the pod specification. At runtime, nested inline volumes follow the ephemeral lifecycle of their associated pods where the driver handles all phases of volume operations as pods are created and destroyed. @@ -353,7 +353,7 @@ To create `NFS` volume you need to provide `nasName:` parameters that point to t - name: volume csi: driver: csi-unity.dellemc.com - fsType: "nfs" + csi.storage.k8s.io/fstype: "nfs" volumeAttributes: size: "20Gi" nasName: "csi-nas-name" @@ -361,7 +361,7 @@ To create `NFS` volume you need to provide `nasName:` parameters that point to t ## Controller HA -The CSI Unity driver version 1.4 and later supports the controller HA feature. Instead of StatefulSet controller pods deployed as a Deployment. +The CSI Unity driver supports controller HA feature. Instead of StatefulSet controller pods deployed as a Deployment. By default, number of replicas is set to 2, you can set the `controllerCount` parameter to 1 in `myvalues.yaml` if you want to disable controller HA for your installation. When installing via Operator you can change the `replicas` parameter in the `spec.driver` section in your Unity Custom Resource. @@ -407,7 +407,7 @@ As said before you can configure where node driver pods would be assigned in a s ## Topology -The CSI Unity driver version 1.4 and later supports Topology which forces volumes to be placed on worker nodes that have connectivity to the backend storage. This covers use cases where users have chosen to restrict the nodes on which the CSI driver is deployed. +The CSI Unity driver supports Topology which forces volumes to be placed on worker nodes that have connectivity to the backend storage. This covers use cases where users have chosen to restrict the nodes on which the CSI driver is deployed. This Topology support does not include customer-defined topology, users cannot create their own labels for nodes, they should use whatever labels are returned by the driver and applied automatically by Kubernetes on its nodes. @@ -441,37 +441,23 @@ You can check what labels your nodes contain by running `kubectl get nodes --sho For any additional information about the topology, see the [Kubernetes Topology documentation](https://kubernetes-csi.github.io/docs/topology.html). -## Support for SLES 15 SP2 - -The CSI Driver for Dell EMC Unity requires the following set of packages installed on all worker nodes that run on SLES 15 SP2. - - - open-iscsi **open-iscsi is required in order to make use of iSCSI protocol for provisioning** - - nfs-utils **nfs-utils is required in order to make use of NFS protocol for provisioning** - - multipath-tools **multipath-tools is required in order to make use of FC and iSCSI protocols for provisioning** - - After installing open-iscsi, ensure "iscsi" and "iscsid" services have been started and /etc/isci/initiatorname.iscsi is created and has the host initiator id. The pre-requisites are mandatory for provisioning with the iSCSI protocol to work. - ## Volume Limit -The CSI Driver for Dell EMC Unity allows users to specify the maximum number of Unity volumes that can be used in a node. +The CSI Driver for Dell Unity allows users to specify the maximum number of Unity volumes that can be used in a node. The user can set the volume limit for a node by creating a node label `max-unity-volumes-per-node` and specifying the volume limit for that node.
`kubectl label node max-unity-volumes-per-node=` The user can also set the volume limit for all the nodes in the cluster by specifying the same to `maxUnityVolumesPerNode` attribute in values.yaml file. ->**NOTE:**
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 unity --no-headers=true | awk '/unity-/{print $1}'| xargs kubectl delete -n unity pod`.

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.

The default value of `maxUnityVolumesPerNode` is 0.

If `maxUnityVolumesPerNode` is set to zero, then CO SHALL decide how many volumes of this type can be published by the controller to the node.

The volume limit specified to `maxUnityVolumesPerNode` attribute is applicable to all the nodes in the cluster for which node label `max-unity-volumes-per-node` is not set. +>**NOTE:**
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 unity --no-headers=true | awk '/unity-/{print $1}'| xargs kubectl delete -n unity pod`.

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.

The default value of `maxUnityVolumesPerNode` is 0.

If `maxUnityVolumesPerNode` is set to zero, then Container Orchestration decides how many volumes of this type can be published by the controller to the node.

The volume limit specified to `maxUnityVolumesPerNode` attribute is applicable to all the nodes in the cluster for which node label `max-unity-volumes-per-node` is not set. ## NAT Support -CSI Driver for Dell EMC Unity is supported in the NAT environment for NFS protocol. +CSI Driver for Dell Unity is supported in the NAT environment for NFS protocol. The user will be able to install the driver and able to create pods. -## Dynamic Logging Configuration - -This feature is introduced in CSI Driver for unity version 2.0.0. - ## Single Pod Access Mode for PersistentVolumes -CSI Driver for Unity now supports a new accessmode `ReadWriteOncePod` for PersistentVolumes and PersistentVolumeClaims. With this feature, CSI Driver for Unity allows to restrict volume access to a single pod in the cluster +CSI Driver for Unity supports a new accessmode `ReadWriteOncePod` for PersistentVolumes and PersistentVolumeClaims. With this feature, CSI Driver for Unity allows to restrict volume access to a single pod in the cluster Prerequisites 1. Enable the ReadWriteOncePod feature gate for kube-apiserver, kube-scheduler, and kubelet as the ReadWriteOncePod access mode is in alpha for Kubernetes v1.22 and is only supported for CSI volumes. You can enable the feature by setting command line arguments: @@ -491,12 +477,14 @@ spec: ``` ## Volume Health Monitoring -CSI Driver for Unity now supports volume health monitoring. This is an alpha feature and requires feature gate to be enabled by setting command line arguments `--feature-gates="...,CSIVolumeHealth=true"`. +CSI Driver for Unity supports volume health monitoring. This is an alpha feature and requires feature gate to be enabled by setting command line arguments `--feature-gates="...,CSIVolumeHealth=true"`. This feature: 1. Reports on the condition of the underlying volumes via events when a volume condition is abnormal. We can watch the events on the describe of pvc `kubectl describe pvc -n ` 2. Collects the volume stats. We can see the volume usage in the node logs `kubectl logs -n -c driver` -By default this is disabled in CSI Driver for Unity. You will have to set the `volumeHealthMonitor.enable` flag for controller, node or for both in `values.yaml` to get the volume stats and volume condition. +By default this is disabled in CSI Driver for Unity. 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. +## Dynamic Logging Configuration +This feature is introduced in CSI Driver for unity version 2.0.0. ### Helm based installation As part of driver installation, a ConfigMap with the name `unity-config-params` is created, which contains an attribute `CSI_LOG_LEVEL` which specifies the current log level of CSI driver. @@ -554,7 +542,7 @@ apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: - storageclass.beta.kubernetes.io/is-default-class: "false" + storageclass.kubernetes.io/is-default-class: "false" name: unity-nfs parameters: arrayId: "APM0***XXXXXX" @@ -643,7 +631,7 @@ data: CSI_LOG_LEVEL: "info" ALLOW_RWO_MULTIPOD_ACCESS: "false" MAX_UNITY_VOLUMES_PER_NODE: "0" - SYNC_NODE_INFO_TIME_INTERVAL: "0" + SYNC_NODE_INFO_TIME_INTERVAL: "15" TENANT_NAME: "" ``` >Note: csi-unity supports Tenancy in multi-array setup, provided the TenantName is the same across Unity instances. diff --git a/content/v3/csidriver/installation/helm/isilon.md b/content/v3/csidriver/installation/helm/isilon.md index 966de5509f..08d51943eb 100644 --- a/content/v3/csidriver/installation/helm/isilon.md +++ b/content/v3/csidriver/installation/helm/isilon.md @@ -3,7 +3,7 @@ title: PowerScale description: > Installing CSI Driver for PowerScale via Helm --- -The CSI Driver for Dell EMC PowerScale can be deployed by using the provided Helm v3 charts and installation scripts on both Kubernetes and OpenShift platforms. For more detailed information on the installation scripts, review the script [documentation](https://github.com/dell/csi-powerscale/tree/master/dell-csi-helm-installer). +The CSI Driver for Dell PowerScale can be deployed by using the provided Helm v3 charts and installation scripts on both Kubernetes and OpenShift platforms. For more detailed information on the installation scripts, review the script [documentation](https://github.com/dell/csi-powerscale/tree/master/dell-csi-helm-installer). The controller section of the Helm chart installs the following components in a _Deployment_ in the specified namespace: - CSI Driver for PowerScale @@ -18,16 +18,17 @@ The node section of the Helm chart installs the following component in a _Daemon ## Prerequisites -The following are requirements to be met before installing the CSI Driver for Dell EMC PowerScale: +The following are requirements to be met before installing the CSI Driver for Dell PowerScale: - Install Kubernetes or OpenShift (see [supported versions](../../../../csidriver/#features-and-capabilities)) - Install Helm 3 - Mount propagation is enabled on container runtime that is being used - If using Snapshot feature, satisfy all Volume Snapshot requirements - If enabling CSM for Authorization, please refer to the [Authorization deployment steps](../../../../authorization/deployment/) first +- If enabling CSM for Replication, please refer to the [Replication deployment steps](../../../../replication/deployment/) first ### Install Helm 3.0 -Install Helm 3.0 on the master node before you install the CSI Driver for Dell EMC PowerScale. +Install Helm 3.0 on the master node before you install the CSI Driver for Dell PowerScale. **Steps** @@ -44,20 +45,50 @@ controller: ``` #### Volume Snapshot CRD's -The Kubernetes Volume Snapshot CRDs can be obtained and installed from the external-snapshotter project on Github. Manifests are available here:[v4.2.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v4.2.0/client/config/crd) +The Kubernetes Volume Snapshot CRDs can be obtained and installed from the external-snapshotter project on Github. Manifests are available here:[v5.0.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/client/config/crd) #### Volume Snapshot Controller The CSI external-snapshotter sidecar is split into two controllers: - A common snapshot controller - A CSI external-snapshotter sidecar -The common snapshot controller must be installed only once in the cluster irrespective of the number of CSI drivers installed in the cluster. On OpenShift clusters 4.4 and later, the common snapshot-controller is pre-installed. In the clusters where it is not present, it can be installed using `kubectl` and the manifests are available here: [v4.2.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v4.2.0/deploy/kubernetes/snapshot-controller) +The common snapshot controller must be installed only once in the cluster irrespective of the number of CSI drivers installed in the cluster. On OpenShift clusters 4.4 and later, the common snapshot-controller is pre-installed. In the clusters where it is not present, it can be installed using `kubectl` and the manifests are available here: [v5.0.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/deploy/kubernetes/snapshot-controller) *NOTE:* - The manifests available on GitHub install the snapshotter image: - [quay.io/k8scsi/csi-snapshotter:v4.0.x](https://quay.io/repository/k8scsi/csi-snapshotter?tag=v4.0.0&tab=tags) - The CSI external-snapshotter sidecar is still installed along with the driver and does not involve any extra configuration. +## Volume Health Monitoring + +Volume Health Monitoring feature is optional and by default this feature is disabled for drivers when installed via helm. +To enable this feature, add the below block to the driver manifest before installing the driver. This ensures to install external +health monitor sidecar. To get the volume health state value under controller should be set to true as seen below. To get the +volume stats value under node should be set to true. + ```yaml +controller: + healthMonitor: + # enabled: Enable/Disable health monitor of CSI volumes + # Allowed values: + # true: enable checking of health condition of CSI volumes + # false: disable checking of health condition of CSI volumes + # Default value: None + enabled: false + # healthMonitorInterval: Interval of monitoring volume health condition + # Allowed values: Number followed by unit (s,m,h) + # Examples: 60s, 5m, 1h + # Default value: 60s + interval: 60s +node: + healthMonitor: + # enabled: Enable/Disable health monitor of CSI volumes- volume usage, volume condition + # Allowed values: + # true: enable checking of health condition of CSI volumes + # false: disable checking of health condition of CSI volumes + # Default value: None + enabled: false + ``` + #### Installation example You can install CRDs and the default snapshot controller by running the following commands: @@ -65,17 +96,31 @@ You can install CRDs and the default snapshot controller by running the followin git clone https://github.com/kubernetes-csi/external-snapshotter/ cd ./external-snapshotter git checkout release- -kubectl create -f client/config/crd -kubectl create -f deploy/kubernetes/snapshot-controller +kubectl kustomize client/config/crd | kubectl create -f - +kubectl -n kube-system kustomize deploy/kubernetes/snapshot-controller | kubectl create -f - ``` *NOTE:* -- It is recommended to use 4.2.x version of snapshotter/snapshot-controller. +- It is recommended to use 5.0.x version of snapshotter/snapshot-controller. + +### (Optional) Replication feature Requirements + +Applicable only if you decided to enable the Replication feature in `values.yaml` + +```yaml +replication: + enabled: true +``` +#### Replication CRD's + +The CRDs for replication can be obtained and installed from the csm-replication project on Github. Use `csm-replication/deploy/replicationcrds.all.yaml` located in the csm-replication git repo for the installation. + +CRDs should be configured during replication prepare stage with repctl as described in [install-repctl](../../../../replication/deployment/install-repctl) ## Install the Driver **Steps** -1. Run `git clone -b v2.1.0 https://github.com/dell/csi-powerscale.git` to clone the git repository. +1. Run `git clone -b v2.2.0 https://github.com/dell/csi-powerscale.git` to clone the git repository. 2. Ensure that you have created the namespace where you want to install the driver. You can run `kubectl create namespace isilon` to create a new one. The use of "isilon" as the namespace is just an example. You can choose any name for the namespace. 3. Collect information from the PowerScale Systems like IP address, IsiPath, username, and password. Make a note of the value for these parameters as they must be entered in the *secret.yaml*. 4. Copy *the helm/csi-isilon/values.yaml* into a new location with name say *my-isilon-settings.yaml*, to customize settings for installation. @@ -93,6 +138,7 @@ kubectl create -f deploy/kubernetes/snapshot-controller | verbose | Indicates what content of the OneFS REST API message should be logged in debug level logs | Yes | 1 | | kubeletConfigDir | Specify kubelet config dir path | Yes | "/var/lib/kubelet" | | enableCustomTopology | Indicates PowerScale FQDN/IP which will be fetched from node label and the same will be used by controller and node pod to establish a connection to Array. This requires enableCustomTopology to be enabled. | No | false | + | fsGroupPolicy | Defines which FS Group policy mode to be used, Supported modes `None, File and ReadWriteOnceWithFSType` | No | "ReadWriteOnceWithFSType" | | ***controller*** | Configure controller pod 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" | @@ -103,6 +149,9 @@ kubectl create -f deploy/kubernetes/snapshot-controller | healthMonitor.interval | Interval of monitoring volume health condition | Yes | 60s | | nodeSelector | Define node selection constraints for pods of controller deployment | No | | | tolerations | Define tolerations for the controller deployment, if required | No | | + | leader-election-lease-duration | Duration, that non-leader candidates will wait to force acquire leadership | No | 20s | + | leader-election-renew-deadline | Duration, that the acting leader will retry refreshing leadership before giving up | No | 15s | + | leader-election-retry-period | Duration, the LeaderElector clients should wait between tries of actions | No | 5s | | ***node*** | Configure node pod specific parameters | | | | nodeSelector | Define node selection constraints for pods of node daemonset | No | | | tolerations | Define tolerations for the node daemonset, if required | No | | @@ -111,6 +160,7 @@ kubectl create -f deploy/kubernetes/snapshot-controller | ***PLATFORM ATTRIBUTES*** | | | | | endpointPort | Define the HTTPs port number of the PowerScale OneFS API server. If authorization is enabled, endpointPort should be the HTTPS localhost port that the authorization sidecar will listen on. This value acts as a default value for endpointPort, if not specified for a cluster config in secret. | No | 8080 | | skipCertificateValidation | Specify whether the PowerScale OneFS API server's certificate chain and hostname must be verified. This value acts as a default value for skipCertificateValidation, if not specified for a cluster config in secret. | No | true | + | isiAuthType | Indicates the authentication method to be used. If set to 1 then it follows as session-based authentication else basic authentication | No | 0 | | isiAccessZone | Define the name of the access zone a volume can be created in. If storageclass is missing with AccessZone parameter, then value of isiAccessZone is used for the same. | No | System | | enableQuota | Indicates whether the provisioner should attempt to set (later unset) quota on a newly provisioned volume. This requires SmartQuotas to be enabled.| No | true | | isiPath | Define the base path for the volumes to be created on PowerScale cluster. This value acts as a default value for isiPath, if not specified for a cluster config in secret| No | /ifs/data/csi | @@ -121,7 +171,7 @@ kubectl create -f deploy/kubernetes/snapshot-controller | sidecarProxyImage | Image for csm-authorization-sidecar. | No | " " | | proxyHost | Hostname of the csm-authorization server. | No | Empty | | skipCertificateValidation | A boolean that enables/disables certificate validation of the csm-authorization server. | No | true | - + *NOTE:* - ControllerCount parameter value must not exceed the number of nodes in the Kubernetes cluster. Otherwise, some of the controller pods remain in a "Pending" state till new nodes are available for scheduling. The installer exits with a WARNING on the same. @@ -141,6 +191,7 @@ kubectl create -f deploy/kubernetes/snapshot-controller | skipCertificateValidation | Specify whether the PowerScale OneFS API server's certificate chain and hostname must be verified. | No | default value from values.yaml | | endpointPort | Specify the HTTPs port number of the PowerScale OneFS API server | No | default value from values.yaml | | isiPath | The base path for the volumes to be created on PowerScale cluster. Note: IsiPath parameter in storageclass, if present will override this attribute. | No | default value from values.yaml | + | mountEndpoint | Endpoint of the PowerScale OneFS API server, for example, 10.0.0.1. This must be specified if [CSM-Authorization](https://github.com/dell/karavi-authorization) is enabled. | No | - | The username specified in *secret.yaml* must be from the authentication providers of PowerScale. The user must have enough privileges to perform the actions. The suggested privileges are as follows: @@ -164,7 +215,7 @@ Create isilon-creds secret using the following command: - For the key isiIP/endpoint, the user can give either IP address or FQDN. Also, the user can prefix 'https' (For example, https://192.168.1.1) with the value. - The *isilon-creds* secret has a *mountEndpoint* parameter which should only be updated and used when [Authorization](../../../../authorization) is enabled. -7. Install OneFS CA certificates by following the instructions from the next section, if you want to validate OneFS API server's certificates. If not, create an empty secret using the following command and an empty secret must be created for the successful installation of CSI Driver for Dell EMC PowerScale. +7. Install OneFS CA certificates by following the instructions from the next section, if you want to validate OneFS API server's certificates. If not, create an empty secret using the following command and an empty secret must be created for the successful installation of CSI Driver for Dell PowerScale. ``` kubectl create -f empty-secret.yaml ``` @@ -196,7 +247,7 @@ If the 'skipCertificateValidation' parameter is set to false and a previous inst ### Dynamic update of array details via secret.yaml -CSI Driver for Dell EMC PowerScale now provides supports for Multi cluster. Now users can link the single CSI Driver to multiple OneFS Clusters by updating *secret.yaml*. Users can now update the isilon-creds secret by editing the *secret.yaml* and executing the following command +CSI Driver for Dell PowerScale now provides supports for Multi cluster. Now users can link the single CSI Driver to multiple OneFS Clusters by updating *secret.yaml*. Users can now update the isilon-creds secret by editing the *secret.yaml* and executing the following command `kubectl create secret generic isilon-creds -n isilon --from-file=config=secret.yaml -o yaml --dry-run=client | kubectl apply -f -` @@ -206,11 +257,11 @@ CSI Driver for Dell EMC PowerScale now provides supports for Multi cluster. Now ## Storage Classes -The CSI driver for Dell EMC PowerScale version 1.5 and later, `dell-csi-helm-installer` does not create any storage classes as part of the driver installation. A sample storage class manifest is available at `samples/storageclass/isilon.yaml`. Use this sample manifest to create a storageclass to provision storage; uncomment/ update the manifest as per the requirements. +The CSI driver for Dell PowerScale version 1.5 and later, `dell-csi-helm-installer` does not create any storage classes as part of the driver installation. A sample storage class manifest is available at `samples/storageclass/isilon.yaml`. Use this sample manifest to create a storageclass to provision storage; uncomment/ update the manifest as per the requirements. ### What happens to my existing storage classes? -*Upgrading from CSI PowerScale v2.0 driver* +*Upgrading from CSI PowerScale v2.1 driver*: The storage classes created as part of the installation have an annotation - "helm.sh/resource-policy": keep set. This ensures that even after an uninstall or upgrade, the storage classes are not deleted. You can continue using these storage classes if you wish so. *NOTE*: @@ -232,9 +283,9 @@ Starting CSI PowerScale v1.6, `dell-csi-helm-installer` will not create any Volu ### What happens to my existing Volume Snapshot Classes? -*Upgrading from CSI PowerScale v2.0 driver*: +*Upgrading from CSI PowerScale v2.1 driver*: The existing volume snapshot class will be retained. *Upgrading from an older version of the driver*: -It is strongly recommended to upgrade the earlier versions of CSI PowerScale to 1.6 or higher before upgrading to 2.1. +It is strongly recommended to upgrade the earlier versions of CSI PowerScale to 1.6 or higher before upgrading to 2.2. diff --git a/content/v3/csidriver/installation/helm/powerflex.md b/content/v3/csidriver/installation/helm/powerflex.md index 06354ccfcb..9bdb0ccdc0 100644 --- a/content/v3/csidriver/installation/helm/powerflex.md +++ b/content/v3/csidriver/installation/helm/powerflex.md @@ -5,22 +5,22 @@ description: > Installing the CSI Driver for PowerFlex via Helm --- -The CSI Driver for Dell EMC PowerFlex can be deployed by using the provided Helm v3 charts and installation scripts on both Kubernetes and OpenShift platforms. For more detailed information on the installation scripts, review the script [documentation](https://github.com/dell/csi-powerflex/tree/master/dell-csi-helm-installer). +The CSI Driver for Dell PowerFlex can be deployed by using the provided Helm v3 charts and installation scripts on both Kubernetes and OpenShift platforms. For more detailed information on the installation scripts, review the script [documentation](https://github.com/dell/csi-powerflex/tree/master/dell-csi-helm-installer). The controller section of the Helm chart installs the following components in a _Deployment_ in the specified namespace: -- CSI Driver for Dell EMC PowerFlex +- CSI Driver for Dell PowerFlex - Kubernetes External Provisioner, which provisions the volumes - Kubernetes External Attacher, which attaches the volumes to the containers - Kubernetes External Snapshotter, which provides snapshot support - Kubernetes External Resizer, which resizes the volume The node section of the Helm chart installs the following component in a _DaemonSet_ in the specified namespace: -- CSI Driver for Dell EMC PowerFlex +- CSI Driver for Dell PowerFlex - Kubernetes Node Registrar, which handles the driver registration ## Prerequisites -The following are requirements that must be met before installing the CSI Driver for Dell EMC PowerFlex: +The following are requirements that must be met before installing the CSI Driver for Dell PowerFlex: - Install Kubernetes or OpenShift (see [supported versions](../../../../csidriver/#features-and-capabilities)) - Install Helm 3 - Enable Zero Padding on PowerFlex @@ -33,7 +33,7 @@ The following are requirements that must be met before installing the CSI Driver ### Install Helm 3.0 -Install Helm 3.0 on the master node before you install the CSI Driver for Dell EMC PowerFlex. +Install Helm 3.0 on the master node before you install the CSI Driver for Dell PowerFlex. **Steps** @@ -41,7 +41,7 @@ Install Helm 3.0 on the master node before you install the CSI Driver for Dell E ### Enable Zero Padding on PowerFlex -Verify that zero padding is enabled on the PowerFlex storage pools that will be used. Use PowerFlex GUI or the PowerFlex CLI to check this setting. For more information to configure this setting, see [Dell EMC PowerFlex documentation](https://cpsdocs.dellemc.com/bundle/PF_CONF_CUST/page/GUID-D32BDFF7-3014-4894-8E1E-2A31A86D343A.html). +Verify that zero padding is enabled on the PowerFlex storage pools that will be used. Use PowerFlex GUI or the PowerFlex CLI to check this setting. For more information to configure this setting, see [Dell PowerFlex documentation](https://cpsdocs.dellemc.com/bundle/PF_CONF_CUST/page/GUID-D32BDFF7-3014-4894-8E1E-2A31A86D343A.html). ### Install PowerFlex Storage Data Client @@ -51,17 +51,17 @@ currently only Red Hat CoreOS (RHCOS). On Kubernetes nodes with OS version not supported by automatic install, you must perform the Manual SDC Deployment steps [below](#manual-sdc-deployment). Refer to https://hub.docker.com/r/dellemc/sdc for supported OS versions. -**Optional:** For a typical install, you will pull SDC kernel modules from the Dell EMC FTP site, which is set up by default. Some users might want to mirror this repository to a local location. The [PowerFlex KB article](https://www.dell.com/support/kbdoc/en-us/000184206/how-to-use-a-private-repository-for) has instructions on how to do this. +**Optional:** For a typical install, you will pull SDC kernel modules from the Dell FTP site, which is set up by default. Some users might want to mirror this repository to a local location. The [PowerFlex KB article](https://www.dell.com/support/kbdoc/en-us/000184206/how-to-use-a-private-repository-for) has instructions on how to do this. #### Manual SDC Deployment -For detailed PowerFlex installation procedure, see the [Dell EMC PowerFlex Deployment Guide](https://docs.delltechnologies.com/bundle/VXF_DEPLOY/page/GUID-DD20489C-42D9-42C6-9795-E4694688CC75.html). Install the PowerFlex SDC as follows: +For detailed PowerFlex installation procedure, see the [Dell PowerFlex Deployment Guide](https://docs.delltechnologies.com/bundle/VXF_DEPLOY/page/GUID-DD20489C-42D9-42C6-9795-E4694688CC75.html). Install the PowerFlex SDC as follows: **Steps** -1. Download the PowerFlex SDC from [Dell EMC Online support](https://www.dell.com/support). The filename is EMC-ScaleIO-sdc-*.rpm, where * is the SDC name corresponding to the PowerFlex installation version. +1. Download the PowerFlex SDC from [Dell Online support](https://www.dell.com/support). The filename is EMC-ScaleIO-sdc-*.rpm, where * is the SDC name corresponding to the PowerFlex installation version. 2. Export the shell variable _MDM_IP_ in a comma-separated list using `export MDM_IP=xx.xxx.xx.xx,xx.xxx.xx.xx`, where xxx represents the actual IP address in your environment. This list contains the IP addresses of the MDMs. -3. Install the SDC per the _Dell EMC PowerFlex Deployment Guide_: +3. Install the SDC per the _Dell PowerFlex Deployment Guide_: - For Red Hat Enterprise Linux and CentOS, run `rpm -iv ./EMC-ScaleIO-sdc-*.x86_64.rpm`, where * is the SDC name corresponding to the PowerFlex installation version. 4. To add more MDM_IP for multi-array support, run `/opt/emc/scaleio/sdc/bin/drv_cfg --add_mdm --ip 10.xx.xx.xx.xx,10.xx.xx.xx` @@ -77,14 +77,14 @@ controller: ``` #### Volume Snapshot CRD's -The Kubernetes Volume Snapshot CRDs can be obtained and installed from the external-snapshotter project on Github. Manifests are available here: [v4.2.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v4.2.0/client/config/crd) +The Kubernetes Volume Snapshot CRDs can be obtained and installed from the external-snapshotter project on Github. Manifests are available here: [v5.0.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/client/config/crd) #### Volume Snapshot Controller The CSI external-snapshotter sidecar is split into two controllers: - A common snapshot controller - A CSI external-snapshotter sidecar -The common snapshot controller must be installed only once in the cluster irrespective of the number of CSI drivers installed in the cluster. On OpenShift clusters 4.4 and later, the common snapshot-controller is pre-installed. In the clusters where it is not present, it can be installed using `kubectl` and the manifests are available here: [v4.2.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v4.2.0/deploy/kubernetes/snapshot-controller) +The common snapshot controller must be installed only once in the cluster irrespective of the number of CSI drivers installed in the cluster. On OpenShift clusters 4.4 and later, the common snapshot-controller is pre-installed. In the clusters where it is not present, it can be installed using `kubectl` and the manifests are available here: [v5.0.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/deploy/kubernetes/snapshot-controller) *NOTE:* - The manifests available on GitHub install the snapshotter image: @@ -98,18 +98,18 @@ You can install CRDs and default snapshot controller by running following comman git clone https://github.com/kubernetes-csi/external-snapshotter/ cd ./external-snapshotter git checkout release- -kubectl create -f client/config/crd -kubectl create -f deploy/kubernetes/snapshot-controller +kubectl kustomize client/config/crd | kubectl create -f - +kubectl -n kube-system kustomize deploy/kubernetes/snapshot-controller | kubectl create -f - ``` *NOTE:* -- When using Kubernetes 1.20/1.21/1.22 it is recommended to use 4.2.x version of snapshotter/snapshot-controller. +- When using Kubernetes 1.21/1.22/1.23 it is recommended to use 5.0.x version of snapshotter/snapshot-controller. - The CSI external-snapshotter sidecar is still installed along with the driver and does not involve any extra configuration. ## Install the Driver **Steps** -1. Run `git clone -b v2.1.0 https://github.com/dell/csi-powerflex.git` to clone the git repository. +1. Run `git clone -b v2.2.0 https://github.com/dell/csi-powerflex.git` to clone the git repository. 2. Ensure that you have created a namespace where you want to install the driver. You can run `kubectl create namespace vxflexos` to create a new one. @@ -182,7 +182,9 @@ kubectl create -f deploy/kubernetes/snapshot-controller format and replace/update the secret. - "insecure" parameter has been changed to "skipCertificateValidation" as insecure is deprecated and will be removed from use in config.yaml or secret.yaml in a future release. Users can continue to use any one of "insecure" or "skipCertificateValidation" for now. The driver would return an error if both parameters are used. - Please note that log configuration parameters from v1.5 will no longer work in v2.0 and higher. Please refer to the [Dynamic Logging Configuration](../../../features/powerflex#dynamic-logging-configuration) section in Features for more information. - + - If the user is using complex K8s version like "v1.21.3-mirantis-1", use below kubeVersion check in helm/csi-unity/Chart.yaml file. + kubeVersion: ">= 1.21.0-0 < 1.24.0-0" + 5. Default logging options are set during Helm install. To see possible configuration options, see the [Dynamic Logging Configuration](../../../features/powerflex#dynamic-logging-configuration) section in Features. 6. If using automated SDC deployment: @@ -248,6 +250,7 @@ kubectl create -f deploy/kubernetes/snapshot-controller - This install script also runs the `verify.sh` script. You will be prompted to enter the credentials for each of the Kubernetes nodes. The `verify.sh` script needs the credentials to check if SDC has been configured on all nodes. - It is mandatory to run install script after changes to MDM configuration in `vxflexos-config` secret. Refer [dynamic-array-configuration](../../../features/powerflex#dynamic-array-configuration) +- If an extended Kubernetes version is being used (e.g. `v1.21.3-mirantis-1`) and is failing the version check in Helm even though it falls in the allowed range, then you must go into `helm/csi-vxflexos/Chart.yaml` and replace the standard `kubeVersion` check with the commented-out alternative. *Please note* that this will also allow the use of pre-release alpha and beta versions of Kubernetes, which is not supported. - (Optional) Enable additional Mount Options - A user is able to specify additional mount options as needed for the driver. - Mount options are specified in storageclass yaml under _mkfsFormatOption_. @@ -255,7 +258,7 @@ kubectl create -f deploy/kubernetes/snapshot-controller ## Certificate validation for PowerFlex Gateway REST API calls -This topic provides details about setting up the certificate for the CSI Driver for Dell EMC PowerFlex. +This topic provides details about setting up the certificate for the CSI Driver for Dell PowerFlex. *Before you begin* @@ -333,13 +336,10 @@ Deleting a storage class has no impact on a running Pod with mounted PVCs. You c Starting CSI PowerFlex v1.5, `dell-csi-helm-installer` will not create any Volume Snapshot Class during the driver installation. There is a sample Volume Snapshot Class manifest present in the _samples/_ folder. Please use this sample to create a new Volume Snapshot Class to create Volume Snapshots. -*NOTE* -Support for v1beta1 snapshots is being discontinued in this release. - ### What happens to my existing Volume Snapshot Classes? -*Upgrading from CSI PowerFlex v2.0 driver*: +*Upgrading from CSI PowerFlex v2.1 driver*: The existing volume snapshot class will be retained. *Upgrading from an older version of the driver*: -It is strongly recommended to upgrade the earlier versions of CSI PowerFlex to 1.5 or higher, before upgrading to 2.1. +It is strongly recommended to upgrade the earlier versions of CSI PowerFlex to 1.5 or higher, before upgrading to 2.2. diff --git a/content/v3/csidriver/installation/helm/powermax.md b/content/v3/csidriver/installation/helm/powermax.md index 8c79c2077b..ef8882ce05 100644 --- a/content/v3/csidriver/installation/helm/powermax.md +++ b/content/v3/csidriver/installation/helm/powermax.md @@ -5,23 +5,25 @@ description: > Installing CSI Driver for PowerMax via Helm --- -CSI Driver for Dell EMC PowerMax can be deployed by using the provided Helm v3 charts and installation scripts on both Kubernetes and OpenShift platforms. For more detailed information on the installation scripts, see the script [documentation](https://github.com/dell/csi-powermax/tree/master/dell-csi-helm-installer). +CSI Driver for Dell PowerMax can be deployed by using the provided Helm v3 charts and installation scripts on both Kubernetes and OpenShift platforms. For more detailed information on the installation scripts, see the script [documentation](https://github.com/dell/csi-powermax/tree/master/dell-csi-helm-installer). The controller section of the Helm chart installs the following components in a _Deployment_ in the specified namespace: -- CSI Driver for Dell EMC PowerMax +- CSI Driver for Dell PowerMax - Kubernetes External Provisioner, which provisions the volumes - Kubernetes External Attacher, which attaches the volumes to the containers - Kubernetes External Snapshotter, which provides snapshot support - Kubernetes External Resizer, which resizes the volume -- CSI PowerMax ReverseProxy (optional) +- (optional) Kubernetes External health monitor, which provides volume health status +- (optional) CSI PowerMax ReverseProxy, which maximizes CSI driver and Unisphere performance +- (optional) Dell CSI Replicator, which provides Replication capability. The node section of the Helm chart installs the following component in a _DaemonSet_ in the specified namespace: -- CSI Driver for Dell EMC PowerMax +- CSI Driver for Dell PowerMax - Kubernetes Node Registrar, which handles the driver registration ## Prerequisites -The following requirements must be met before installing CSI Driver for Dell EMC PowerMax: +The following requirements must be met before installing CSI Driver for Dell PowerMax: - Install Kubernetes or OpenShift (see [supported versions](../../../../csidriver/#features-and-capabilities)) - Install Helm 3 - Fibre Channel requirements @@ -34,7 +36,7 @@ The following requirements must be met before installing CSI Driver for Dell EMC ### Install Helm 3 -Install Helm 3 on the master node before you install CSI Driver for Dell EMC PowerMax. +Install Helm 3 on the master node before you install CSI Driver for Dell PowerMax. **Steps** @@ -43,23 +45,23 @@ Install Helm 3 on the master node before you install CSI Driver for Dell EMC Pow ### Fibre Channel Requirements -CSI Driver for Dell EMC PowerMax supports Fibre Channel communication. Ensure that the following requirements are met before you install CSI Driver: +CSI Driver for Dell PowerMax supports Fibre Channel communication. Ensure that the following requirements are met before you install CSI Driver: - Zoning of the Host Bus Adapters (HBAs) to the Fibre Channel port director must be completed. - Ensure that the HBA WWNs (initiators) appear on the list of initiators that are logged into the array. - If the number of volumes that will be published to nodes is high, then configure the maximum number of LUNs for your HBAs on each node. See the appropriate HBA document to configure the maximum number of LUNs. ### iSCSI Requirements -The CSI Driver for Dell EMC PowerMax supports iSCSI connectivity. These requirements are applicable for the nodes that use iSCSI initiator to connect to the PowerMax arrays. +The CSI Driver for Dell PowerMax supports iSCSI connectivity. These requirements are applicable for the nodes that use iSCSI initiator to connect to the PowerMax arrays. Set up the iSCSI initiators as follows: - All Kubernetes nodes must have the _iscsi-initiator-utils_ package installed. - Ensure that the iSCSI initiators are available on all the nodes where the driver node plugin will be installed. -- Kubernetes nodes should have access (network connectivity) to an iSCSI director on the Dell EMC PowerMax array that has IP interfaces. Manually create IP routes for each node that connects to the Dell EMC PowerMax if required. -- Ensure that the iSCSI initiators on the nodes are not a part of any existing Host (Initiator Group) on the Dell EMC PowerMax array. -- The CSI Driver needs the port group names containing the required iSCSI director ports. These port groups must be set up on each Dell EMC PowerMax array. All the port group names supplied to the driver must exist on each Dell EMC PowerMax with the same name. +- Kubernetes nodes should have access (network connectivity) to an iSCSI director on the Dell PowerMax array that has IP interfaces. Manually create IP routes for each node that connects to the Dell PowerMax if required. +- Ensure that the iSCSI initiators on the nodes are not a part of any existing Host (Initiator Group) on the Dell PowerMax array. +- The CSI Driver needs the port group names containing the required iSCSI director ports. These port groups must be set up on each Dell PowerMax array. All the port group names supplied to the driver must exist on each Dell PowerMax with the same name. -For more information about configuring iSCSI, see [Dell EMC Host Connectivity guide](https://www.delltechnologies.com/asset/zh-tw/products/storage/technical-support/docu5128.pdf). +For more information about configuring iSCSI, see [Dell Host Connectivity guide](https://www.delltechnologies.com/asset/zh-tw/products/storage/technical-support/docu5128.pdf). ### Certificate validation for Unisphere REST API calls @@ -80,11 +82,11 @@ If the Unisphere certificate is self-signed or if you are using an embedded Unis There are no restrictions to how many ports can be present in the iSCSI port groups provided to the driver. -The same applies to Fibre Channel where there are no restrictions on the number of FA directors a host HBA can be zoned to. See the best practices for host connectivity to Dell EMC PowerMax to ensure that you have multiple paths to your data volumes. +The same applies to Fibre Channel where there are no restrictions on the number of FA directors a host HBA can be zoned to. See the best practices for host connectivity to Dell PowerMax to ensure that you have multiple paths to your data volumes. ### Linux multipathing requirements -CSI Driver for Dell EMC PowerMax supports Linux multipathing. Configure Linux multipathing before installing the CSI Driver. +CSI Driver for Dell PowerMax supports Linux multipathing. Configure Linux multipathing before installing the CSI Driver. Set up Linux multipathing as follows: @@ -112,7 +114,7 @@ snapshot: ``` #### Volume Snapshot CRD's -The Kubernetes Volume Snapshot CRDs can be obtained and installed from the external-snapshotter project on Github. For installation, use [v4.2.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v4.2.0/client/config/crd) +The Kubernetes Volume Snapshot CRDs can be obtained and installed from the external-snapshotter project on Github. For installation, use [v5.0.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/client/config/crd) #### Volume Snapshot Controller The CSI external-snapshotter sidecar is split into two controllers to support Volume snapshots. @@ -120,7 +122,7 @@ The CSI external-snapshotter sidecar is split into two controllers to support Vo - A common snapshot controller - A CSI external-snapshotter sidecar -The common snapshot controller must be installed only once in the cluster, irrespective of the number of CSI drivers installed in the cluster. On OpenShift clusters 4.4 and later, the common snapshot-controller is pre-installed. In the clusters where it is not present, it can be installed using `kubectl` and the manifests are available here: [v4.2.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v4.2.0/deploy/kubernetes/snapshot-controller) +The common snapshot controller must be installed only once in the cluster, irrespective of the number of CSI drivers installed in the cluster. On OpenShift clusters 4.4 and later, the common snapshot-controller is pre-installed. In the clusters where it is not present, it can be installed using `kubectl` and the manifests are available here: [v5.0.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/deploy/kubernetes/snapshot-controller) *NOTE:* - The manifests available on GitHub install the snapshotter image: @@ -134,12 +136,12 @@ You can install CRDs and the default snapshot controller by running the followin git clone https://github.com/kubernetes-csi/external-snapshotter/ cd ./external-snapshotter git checkout release- -kubectl create -f client/config/crd -kubectl create -f deploy/kubernetes/snapshot-controller +kubectl kustomize client/config/crd | kubectl create -f - +kubectl -n kube-system kustomize deploy/kubernetes/snapshot-controller | kubectl create -f - ``` *NOTE:* -- It is recommended to use 4.2.x version of snapshotter/snapshot-controller. +- It is recommended to use 5.0.x version of snapshotter/snapshot-controller. - The CSI external-snapshotter sidecar is still installed along with the driver and does not involve any extra configuration. ### (Optional) Replication feature Requirements @@ -160,7 +162,7 @@ CRDs should be configured during replication prepare stage with repctl as descri **Steps** -1. Run `git clone -b v2.1.0 https://github.com/dell/csi-powermax.git` to clone the git repository. This will include the Helm charts and dell-csi-helm-installer scripts. +1. Run `git clone -b v2.2.0 https://github.com/dell/csi-powermax.git` to clone the git repository. This will include the Helm charts and dell-csi-helm-installer scripts. 2. Ensure that you have created a namespace where you want to install the driver. You can run `kubectl create namespace powermax` to create a new one 3. Edit the `samples/secret/secret.yaml file, point to the correct namespace, and replace the values for the username and password parameters. These values can be obtained using base64 encoding as described in the following example: @@ -192,11 +194,14 @@ CRDs should be configured during replication prepare stage with repctl as descri | snapshot.enabled | Enable/Disable volume snapshot feature | Yes | true | | snapshot.snapNamePrefix | Defines a string prefix for the names of the Snapshots created | Yes | "snapshot" | | resizer.enabled | Enable/Disable volume expansion feature | Yes | true | +| healthMonitor.enabled | Allows to enable/disable volume health monitor | No | false | +| healthMonitor.interval | Interval of monitoring volume health condition | No | 60s | | nodeSelector | Define node selection constraints for pods of controller deployment | No | | | tolerations | Define tolerations for the controller deployment, if required | No | | | **node** | Allows configuration of the node-specific parameters.| - | - | | tolerations | Add tolerations as per requirement | No | - | | nodeSelector | Add node selectors as per requirement | No | - | +| healthMonitor.enabled | Allows to enable/disable volume health monitor | No | false | | **global**| This section refers to configuration options for both CSI PowerMax Driver and Reverse Proxy | - | - | |defaultCredentialsSecret| This secret name refers to:
1. The Unisphere credentials if the driver is installed without proxy or with proxy in Linked mode.
2. The proxy credentials if the driver is installed with proxy in StandAlone mode.
3. The default Unisphere credentials if credentialsSecret is not specified for a management server.| Yes | powermax-creds | | storageArrays| This section refers to the list of arrays managed by the driver and Reverse Proxy in StandAlone mode.| - | - | @@ -250,11 +255,11 @@ Starting with CSI PowerMax v1.7, `dell-csi-helm-installer` will not create any V ### What happens to my existing Volume Snapshot Classes? -*Upgrading from CSI PowerMax v2.0 driver*: +*Upgrading from CSI PowerMax v2.1 driver*: The existing volume snapshot class will be retained. *Upgrading from an older version of the driver*: -It is strongly recommended to upgrade the earlier versions of CSI PowerMax to 1.7 or higher, before upgrading to 2.1. +It is strongly recommended to upgrade the earlier versions of CSI PowerMax to 1.7 or higher, before upgrading to 2.2. ## Sample values file The following sections have useful snippets from `values.yaml` file which provides more information on how to configure the CSI PowerMax driver along with CSI PowerMax ReverseProxy in various modes diff --git a/content/v3/csidriver/installation/helm/powerstore.md b/content/v3/csidriver/installation/helm/powerstore.md index 868d7c27cd..7b009d83a4 100644 --- a/content/v3/csidriver/installation/helm/powerstore.md +++ b/content/v3/csidriver/installation/helm/powerstore.md @@ -4,26 +4,26 @@ description: > Installing CSI Driver for PowerStore via Helm --- -The CSI Driver for Dell EMC PowerStore can be deployed by using the provided Helm v3 charts and installation scripts on both Kubernetes and OpenShift platforms. For more detailed information on the installation scripts, review the script [documentation](https://github.com/dell/csi-powerstore/tree/master/dell-csi-helm-installer). +The CSI Driver for Dell PowerStore can be deployed by using the provided Helm v3 charts and installation scripts on both Kubernetes and OpenShift platforms. For more detailed information on the installation scripts, review the script [documentation](https://github.com/dell/csi-powerstore/tree/master/dell-csi-helm-installer). The controller section of the Helm chart installs the following components in a _Deployment_ in the specified namespace: -- CSI Driver for Dell EMC PowerStore +- CSI Driver for Dell PowerStore - Kubernetes External Provisioner, which provisions the volumes - Kubernetes External Attacher, which attaches the volumes to the containers - (Optional) Kubernetes External Snapshotter, which provides snapshot support -- Kubernetes External Resizer, which resizes the volume +- (Optional) Kubernetes External Resizer, which resizes the volume The node section of the Helm chart installs the following component in a _DaemonSet_ in the specified namespace: -- CSI Driver for Dell EMC PowerStore +- CSI Driver for Dell PowerStore - Kubernetes Node Registrar, which handles the driver registration ## Prerequisites -The following are requirements to be met before installing the CSI Driver for Dell EMC PowerStore: +The following are requirements to be met before installing the CSI Driver for Dell PowerStore: - Install Kubernetes or OpenShift (see [supported versions](../../../../csidriver/#features-and-capabilities)) - Install Helm 3 -- If you plan to use either the Fibre Channel or iSCSI protocol, refer to either _Fibre Channel requirements_ or _Set up the iSCSI Initiator_ sections below. You can use NFS volumes without FC or iSCSI configuration. -> You can use either the Fibre Channel or iSCSI protocol, but you do not need both. +- If you plan to use either the Fibre Channel or iSCSI or NVMe/TCP protocol, refer to either _Fibre Channel requirements_ or _Set up the iSCSI Initiator_ or _Set up the NVMe/TCP Initiator_ sections below. You can use NFS volumes without FC or iSCSI or NVMe/TCP configuration. +> You can use either the Fibre Channel or iSCSI or NVMe/TCP protocol, but you do not need all the three. > If you want to use preconfigured iSCSI/FC hosts be sure to check that they are not part of any host group - Linux native multipathing requirements @@ -35,7 +35,7 @@ The following are requirements to be met before installing the CSI Driver for De ### Install Helm 3.0 -Install Helm 3.0 on the master node before you install the CSI Driver for Dell EMC PowerStore. +Install Helm 3.0 on the master node before you install the CSI Driver for Dell PowerStore. **Steps** @@ -43,26 +43,39 @@ Install Helm 3.0 on the master node before you install the CSI Driver for Dell E ### Fibre Channel requirements -Dell EMC PowerStore supports Fibre Channel communication. If you use the Fibre Channel protocol, ensure that the -following requirement is met before you install the CSI Driver for Dell EMC PowerStore: +Dell PowerStore supports Fibre Channel communication. If you use the Fibre Channel protocol, ensure that the +following requirement is met before you install the CSI Driver for Dell PowerStore: - Zoning of the Host Bus Adapters (HBAs) to the Fibre Channel port must be done. ### Set up the iSCSI Initiator -The CSI Driver for Dell EMC PowerStore v1.4 and higher supports iSCSI connectivity. +The CSI Driver for Dell PowerStore v1.4 and higher supports iSCSI connectivity. If you use the iSCSI protocol, set up the iSCSI initiators as follows: - Ensure that the iSCSI initiators are available on both Controller and Worker nodes. -- Kubernetes nodes must have access (network connectivity) to an iSCSI port on the Dell EMC PowerStore array that -has IP interfaces. Manually create IP routes for each node that connects to the Dell EMC PowerStore. +- Kubernetes nodes must have access (network connectivity) to an iSCSI port on the Dell PowerStore array that +has IP interfaces. Manually create IP routes for each node that connects to the Dell PowerStore. - All Kubernetes nodes must have the _iscsi-initiator-utils_ package for CentOS/RHEL or _open-iscsi_ package for Ubuntu installed, and the _iscsid_ service must be enabled and running. To do this, run the `systemctl enable --now iscsid` command. - Ensure that the unique initiator name is set in _/etc/iscsi/initiatorname.iscsi_. -For information about configuring iSCSI, see _Dell EMC PowerStore documentation_ on Dell EMC Support. +For information about configuring iSCSI, see _Dell PowerStore documentation_ on Dell Support. + + +### Set up the NVMe/TCP Initiator + +If you want to use the protocol, set up the NVMe/TCP initiators as follows: +- The driver requires NVMe management command-line interface (nvme-cli) to use configure, edit, view or start the NVMe client and target. The nvme-cli utility provides a command-line and interactive shell option. The NVMe CLI tool is installed in the host using the below command. +`sudo apt install nvme-cli` + +- Modules including the nvme, nvme_core, nvme_fabrics, and nvme_tcp are required for using NVMe over Fabrics using TCP. Load the NVMe and NVMe-OF Modules using the below commands: +```bash +modprobe nvme +modprobe nvme_tcp +``` ### Linux multipathing requirements -Dell EMC PowerStore supports Linux multipathing. Configure Linux multipathing before installing the CSI Driver for Dell EMC +Dell PowerStore supports Linux multipathing. Configure Linux multipathing before installing the CSI Driver for Dell PowerStore. Set up Linux multipathing as follows: @@ -82,7 +95,7 @@ snapshot: ``` #### Volume Snapshot CRD's -The Kubernetes Volume Snapshot CRDs can be obtained and installed from the external-snapshotter project on Github. Use [v4.2.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v4.2.0/client/config/crd) for the installation. +The Kubernetes Volume Snapshot CRDs can be obtained and installed from the external-snapshotter project on Github. Use [v5.0.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/client/config/crd) for the installation. #### Volume Snapshot Controller The CSI external-snapshotter sidecar is split into two controllers: @@ -90,13 +103,45 @@ The CSI external-snapshotter sidecar is split into two controllers: - A CSI external-snapshotter sidecar The common snapshot controller must be installed only once in the cluster irrespective of the number of CSI drivers installed in the cluster. On OpenShift clusters 4.4 and later, the common snapshot-controller is pre-installed. In the clusters where it is not present, it can be installed using `kubectl` and the manifests are available: -Use [v4.2.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v4.2.0/deploy/kubernetes/snapshot-controller) for the installation. +Use [v5.0.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/deploy/kubernetes/snapshot-controller) for the installation. *NOTE:* - The manifests available on GitHub install the snapshotter image: - [quay.io/k8scsi/csi-snapshotter:v4.0.x](https://quay.io/repository/k8scsi/csi-snapshotter?tag=v4.0.0&tab=tags) - The CSI external-snapshotter sidecar is still installed along with the driver and does not involve any extra configuration. +## Volume Health Monitoring + +Volume Health Monitoring feature is optional and by default this feature is disabled for drivers when installed via helm. +To enable this feature, add the below block to the driver manifest before installing the driver. This ensures to install external +health monitor sidecar. To get the volume health state value under controller should be set to true as seen below. To get the +volume stats value under node should be set to true. + ```yaml +controller: + healthMonitor: + # enabled: Enable/Disable health monitor of CSI volumes + # Allowed values: + # true: enable checking of health condition of CSI volumes + # false: disable checking of health condition of CSI volumes + # Default value: None + enabled: false + + # healthMonitorInterval: Interval of monitoring volume health condition + # Allowed values: Number followed by unit (s,m,h) + # Examples: 60s, 5m, 1h + # Default value: 60s + volumeHealthMonitorInterval: 60s + +node: + healthMonitor: + # enabled: Enable/Disable health monitor of CSI volumes- volume usage, volume condition + # Allowed values: + # true: enable checking of health condition of CSI volumes + # false: disable checking of health condition of CSI volumes + # Default value: None + enabled: false + ``` + #### Installation example You can install CRDs and default snapshot controller by running following commands: @@ -104,12 +149,12 @@ You can install CRDs and default snapshot controller by running following comman git clone https://github.com/kubernetes-csi/external-snapshotter/ cd ./external-snapshotter git checkout release- -kubectl create -f client/config/crd -kubectl create -f deploy/kubernetes/snapshot-controller +kubectl kustomize client/config/crd | kubectl create -f - +kubectl -n kube-system kustomize deploy/kubernetes/snapshot-controller | kubectl create -f - ``` *NOTE:* -- It is recommended to use 4.2.x version of snapshotter/snapshot-controller. +- It is recommended to use 5.0.x version of snapshotter/snapshot-controller. - The CSI external-snapshotter sidecar is installed along with the driver and does not involve any extra configuration. ### (Optional) Replication feature Requirements @@ -129,7 +174,7 @@ CRDs should be configured during replication prepare stage with repctl as descri ## Install the Driver **Steps** -1. Run `git clone -b v2.1.0 https://github.com/dell/csi-powerstore.git` to clone the git repository. +1. Run `git clone -b v2.2.0 https://github.com/dell/csi-powerstore.git` to clone the git repository. 2. Ensure that you have created namespace where you want to install the driver. You can run `kubectl create namespace csi-powerstore` to create a new one. "csi-powerstore" is just an example. You can choose any name for the namespace. But make sure to align to the same namespace during the whole installation. 3. Check `helm/csi-powerstore/driver-image.yaml` and confirm the driver image points to new image. @@ -139,8 +184,10 @@ CRDs should be configured during replication prepare stage with repctl as descri - *username*, *password*: defines credentials for connecting to array. - *skipCertificateValidation*: defines if we should use insecure connection or not. - *isDefault*: defines if we should treat the current array as a default. - - *blockProtocol*: defines what SCSI transport protocol we should use (FC, ISCSI, None, or auto). + - *blockProtocol*: defines what transport protocol we should use (FC, ISCSI, NVMeTCP, None, or auto). - *nasName*: defines what NAS should be used for NFS volumes. + - *nfsAcls* (Optional): defines permissions - POSIX mode bits or NFSv4 ACLs, to be set on NFS target mount directory. + NFSv4 ACls are supported for NFSv4 shares on NFSv4 enabled NAS servers only. POSIX ACLs are not supported and only POSIX mode bits are supported for NFSv3 shares. Add more blocks similar to above for each PowerStore array if necessary. 5. Create storage classes using ones from `samples/storageclass` folder as an example and apply them to the Kubernetes cluster by running `kubectl create -f ` @@ -157,6 +204,7 @@ CRDs should be configured during replication prepare stage with repctl as descri | externalAccess | Defines additional entries for hostAccess of NFS volumes, single IP address and subnet are valid entries | No | " " | | kubeletConfigDir | Defines kubelet config path for cluster | Yes | "/var/lib/kubelet" | | imagePullPolicy | Policy to determine if the image should be pulled prior to starting the container. | Yes | "IfNotPresent" | +| nfsAcls | Defines permissions - POSIX mode bits or NFSv4 ACLs, to be set on NFS target mount directory. | No | "0777" | | connection.enableCHAP | Defines whether the driver should use CHAP for iSCSI connections or not | No | False | | controller.controllerCount | Defines number of replicas of controller deployment | Yes | 2 | | controller.volumeNamePrefix | Defines the string added to each volume that the CSI driver creates | No | "csivol" | @@ -172,6 +220,7 @@ CRDs should be configured during replication prepare stage with repctl as descri | node.healthMonitor.enabled | Allows to enable/disable volume health monitor | No | false | | node.nodeSelector | Defines what nodes would be selected for pods of node daemonset | Yes | " " | | node.tolerations | Defines tolerations that would be applied to node daemonset | Yes | " " | +| fsGroupPolicy | Defines which FS Group policy mode to be used, Supported modes `None, File and ReadWriteOnceWithFSType` | No | "ReadWriteOnceWithFSType" | 8. Install the driver using `csi-install.sh` bash script by running `./csi-install.sh --namespace csi-powerstore --values ./my-powerstore-settings.yaml` - After that the driver should be installed, you can check the condition of driver pods by running `kubectl get all -n csi-powerstore` @@ -187,7 +236,7 @@ CRDs should be configured during replication prepare stage with repctl as descri ## Storage Classes -The CSI driver for Dell EMC PowerStore version 1.3 and later, `dell-csi-helm-installer` does not create any storage classes as part of the driver installation. A wide set of annotated storage class manifests have been provided in the `samples/storageclass` folder. Use these samples to create new storage classes to provision storage. +The CSI driver for Dell PowerStore version 1.3 and later, `dell-csi-helm-installer` does not create any storage classes as part of the driver installation. A wide set of annotated storage class manifests have been provided in the `samples/storageclass` folder. Use these samples to create new storage classes to provision storage. ### What happens to my existing storage classes? @@ -201,13 +250,14 @@ There are samples storage class yaml files available under `samples/storageclass 1. Edit the sample storage class yaml file and update following parameters: - *arrayID*: specifies what storage cluster the driver should use, if not specified driver will use storage cluster specified as `default` in `samples/secret/secret.yaml` -- *FsType*: specifies what filesystem type driver should use, possible variants `ext4`, `xfs`, `nfs`, if not specified driver will use `ext4` by default. +- *FsType*: specifies what filesystem type driver should use, possible variants `ext3`, `ext4`, `xfs`, `nfs`, if not specified driver will use `ext4` by default. +- *nfsAcls* (Optional): defines permissions - POSIX mode bits or NFSv4 ACLs, to be set on NFS target mount directory. - *allowedTopologies* (Optional): If you want you can also add topology constraints. ```yaml allowedTopologies: - matchLabelExpressions: - key: csi-powerstore.dellemc.com/12.34.56.78-iscsi -# replace "-iscsi" with "-fc" or "-nfs" at the end to use FC or NFS enabled hosts +# replace "-iscsi" with "-fc", "-nvme" or "-nfs" at the end to use FC, NVMe or NFS enabled hosts # replace "12.34.56.78" with PowerStore endpoint IP values: - "true" @@ -226,11 +276,11 @@ Starting CSI PowerStore v1.4, `dell-csi-helm-installer` will not create any Volu ### What happens to my existing Volume Snapshot Classes? -*Upgrading from CSI PowerStore v2.0 driver*: +*Upgrading from CSI PowerStore v2.1 driver*: The existing volume snapshot class will be retained. *Upgrading from an older version of the driver*: -It is strongly recommended to upgrade the earlier versions of CSI PowerStore to 1.4 or higher, before upgrading to 2.1. +It is strongly recommended to upgrade the earlier versions of CSI PowerStore to 1.4 or higher, before upgrading to 2.2. ## Dynamically update the powerstore secrets @@ -253,4 +303,4 @@ cd dell-csi-helm-installer ./csi-install.sh --namespace csi-powerstore --values ./my-powerstore-settings.yaml --upgrade ``` -Note: here `my-powerstore-settings.yaml` is a `values.yaml` file which user has used for driver installation. \ No newline at end of file +Note: here `my-powerstore-settings.yaml` is a `values.yaml` file which user has used for driver installation. diff --git a/content/v3/csidriver/installation/helm/unity.md b/content/v3/csidriver/installation/helm/unity.md index 1c7c5122fc..0db49246f5 100644 --- a/content/v3/csidriver/installation/helm/unity.md +++ b/content/v3/csidriver/installation/helm/unity.md @@ -4,7 +4,7 @@ description: > Installing CSI Driver for Unity via Helm --- -The CSI Driver for Dell EMC Unity can be deployed by using the provided Helm v3 charts and installation scripts on both Kubernetes and OpenShift platforms. For more detailed information on the installation scripts, review the script [documentation](https://github.com/dell/csi-unity/tree/master/dell-csi-helm-installer). +The CSI Driver for Dell Unity can be deployed by using the provided Helm v3 charts and installation scripts on both Kubernetes and OpenShift platforms. For more detailed information on the installation scripts, review the script [documentation](https://github.com/dell/csi-unity/tree/master/dell-csi-helm-installer). The controller section of the Helm chart installs the following components in a _Deployment_: @@ -13,6 +13,7 @@ The controller section of the Helm chart installs the following components in a - Kubernetes External Attacher, which attaches the volumes to the containers - Kubernetes External Snapshotter, which provides snapshot support - Kubernetes External Resizer, which resizes the volume +- Kubernetes External Health Monitor, which provides volume health status The node section of the Helm chart installs the following component in a _DaemonSet_: @@ -38,7 +39,7 @@ Install CSI Driver for Unity using this procedure. *Before you begin* - * You must have the downloaded files, including the Helm chart from the source [git repository](https://github.com/dell/csi-unity) with the command ```git clone -b v2.1.0 https://github.com/dell/csi-unity.git```, as a pre-requisite for running this procedure. + * You must have the downloaded files, including the Helm chart from the source [git repository](https://github.com/dell/csi-unity) with the command ```git clone -b v2.2.0 https://github.com/dell/csi-unity.git```, as a pre-requisite for running this procedure. * In the top-level dell-csi-helm-installer directory, there should be two scripts, `csi-install.sh` and `csi-uninstall.sh`. * Ensure _unity_ namespace exists in Kubernetes cluster. Use the `kubectl create namespace unity` command to create the namespace if the namespace is not present. @@ -51,6 +52,8 @@ Procedure **Note**: * ArrayId corresponds to the serial number of Unity array. * Unity Array username must have role as Storage Administrator to be able to perform CRUD operations. + * If the user is using complex K8s version like "v1.21.3-mirantis-1", use below kubeVersion check in helm/csi-unity/Chart.yaml file. + kubeVersion: ">= 1.21.0-0 < 1.24.0-0" 2. Copy the `helm/csi-unity/values.yaml` into a file named `myvalues.yaml` in the same directory of `csi-install.sh`, to customize settings for installation. @@ -64,12 +67,13 @@ Procedure | logLevel | LogLevel is used to set the logging level of the driver | true | info | | allowRWOMultiPodAccess | Flag to enable multiple pods to use the same PVC on the same node with RWO access mode. | false | false | | kubeletConfigDir | Specify kubelet config dir path | Yes | /var/lib/kubelet | - | syncNodeInfoInterval | Time interval to add node info to the array. Default 15 minutes. The minimum value should be 1 minute. | false | 15 | + | syncNodeInfoInterval | Time interval to add node info to the array. Default 15 minutes. The minimum value should be 1 minute. | false | 15 | | maxUnityVolumesPerNode | Maximum number of volumes that controller can publish to the node. | false | 0 | | certSecretCount | Represents the number of certificate secrets, which the user is going to create for SSL authentication. (unity-cert-0..unity-cert-n). The minimum value should be 1. | false | 1 | | imagePullPolicy | The default pull policy is IfNotPresent which causes the Kubelet to skip pulling an image if it already exists. | Yes | IfNotPresent | | podmon.enabled | service to monitor failing jobs and notify | false | - | | podmon.image| pod man image name | false | - | + | tenantName | Tenant name added while adding host entry to the array | No | | | **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" | @@ -78,13 +82,13 @@ Procedure | resizer.enabled | Enable/Disable volume expansion feature | Yes | true | | nodeSelector | Define node selection constraints for pods of controller deployment | No | | | tolerations | Define tolerations for the controller deployment, if required | No | | - | volumeHealthMonitor.enabled | Enable/Disable deployment of external health monitor sidecar for controller side volume health monitoring. | No | false | - | volumeHealthMonitor.interval | Interval of monitoring volume health condition. Allowed values: Number followed by unit (s,m,h) | No | 60s | + | healthMonitor.enabled | Enable/Disable deployment of external health monitor sidecar for controller side volume health monitoring. | No | false | + | healthMonitor.interval | Interval of monitoring volume health condition. Allowed values: Number followed by unit (s,m,h) | No | 60s | | ***node*** | Allows configuration of the node-specific parameters.| - | - | - | tolerations | Define tolerations for the node daemonset, if required | No | | | dnsPolicy | Define the DNS Policy of the Node service | Yes | ClusterFirstWithHostNet | - | volumeHealthMonitor.enabled | Enable/Disable health monitor of CSI volumes- volume usage, volume condition | No | false | - | tenantName | Tenant name added while adding host entry to the array | No | | + | healthMonitor.enabled | Enable/Disable health monitor of CSI volumes- volume usage, volume condition | No | false | + | nodeSelector | Define node selection constraints for pods of node deployment | No | | + | tolerations | Define tolerations for the node deployment, if required | No | | **Note**: @@ -118,19 +122,19 @@ Procedure maxUnityVolumesPerNode: 0 ``` -4. For certificate validation of Unisphere REST API calls refer [here](#certificate-validation-for-unisphere-rest-api-calls). Otherwise, create an empty secret with file `helm/emptysecret.yaml` file by running the `kubectl create -f helm/emptysecret.yaml` command. +4. For certificate validation of Unisphere REST API calls refer [here](#certificate-validation-for-unisphere-rest-api-calls). Otherwise, create an empty secret with file `csi-unity/samples/secret/emptysecret.yaml` file by running the `kubectl create -f csi-unity/samples/secret/emptysecret.yaml` command. 5. Prepare the `secret.yaml` for driver configuration. The following table lists driver configuration parameters for multiple storage arrays. - | Parameter | Description | Required | Default | - | --------- | ----------- | -------- |-------- | - | storageArrayList.username | Username for accessing Unity system | true | - | - | storageArrayList.password | Password for accessing Unity system | true | - | - | storageArrayList.endpoint | REST API gateway HTTPS endpoint Unity system| true | - | - | storageArrayList.arrayId | ArrayID for Unity system | true | - | + | Parameter | Description | Required | Default | + | ------------------------- | ----------------------------------- | -------- |-------- | + | storageArrayList.username | Username for accessing Unity system | true | - | + | storageArrayList.password | Password for accessing Unity system | true | - | + | storageArrayList.endpoint | REST API gateway HTTPS endpoint Unity system| true | - | + | storageArrayList.arrayId | ArrayID for Unity system | true | - | | storageArrayList.skipCertificateValidation | "skipCertificateValidation " determines if the driver is going to validate unisphere certs while connecting to the Unisphere REST API interface. If it is set to false, then a secret unity-certs has to be created with an X.509 certificate of CA which signed the Unisphere certificate. | true | true | - | storageArrayList.isDefault | An array having isDefault=true or isDefaultArray=true will be considered as the default array when arrayId is not specified in the storage class. This parameter should occur only once in the list. | false | false | + | storageArrayList.isDefault| An array having isDefault=true or isDefaultArray=true will be considered as the default array when arrayId is not specified in the storage class. This parameter should occur only once in the list. | true | - | Example: secret.yaml @@ -182,7 +186,7 @@ Procedure ``` **Note:** - * Parameters "allowRWOMultiPodAccess" and "syncNodeInfoTimeInterval" have been enabled for configuration in values.yaml and this helps users to dynamically change these values without the need for driver re-installation. + * Parameters "allowRWOMultiPodAccess" and "syncNodeInfoInterval" have been enabled for configuration in values.yaml and this helps users to dynamically change these values without the need for driver re-installation. 6. Setup for snapshots. @@ -197,19 +201,14 @@ Procedure In order to use the Kubernetes Volume Snapshot feature, you must ensure the following components have been deployed on your Kubernetes cluster #### Volume Snapshot CRD's - The Kubernetes Volume Snapshot CRDs can be obtained and installed from the external-snapshotter project on Github. Use [v4.2.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v4.2.0/client/config/crd) for the installation. + The Kubernetes Volume Snapshot CRDs can be obtained and installed from the external-snapshotter project on Github. Use [v5.0.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/client/config/crd) for the installation. #### Volume Snapshot Controller The CSI external-snapshotter sidecar is split into two controllers: - A common snapshot controller - A CSI external-snapshotter sidecar - Use [v4.2.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v4.2.0/deploy/kubernetes/snapshot-controller) for the installation. - - **Note**: - - The manifests available on GitHub install the snapshotter image: - - [quay.io/k8scsi/csi-snapshotter:v4.0.x](https://quay.io/repository/k8scsi/csi-snapshotter?tag=v4.0.0&tab=tags) - - The CSI external-snapshotter sidecar is still installed along with the driver and does not involve any extra configuration. + Use [v5.0.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/deploy/kubernetes/snapshot-controller) for the installation. #### Installation example @@ -218,12 +217,12 @@ Procedure git clone https://github.com/kubernetes-csi/external-snapshotter/ cd ./external-snapshotter git checkout release- - kubectl create -f client/config/crd - kubectl create -f deploy/kubernetes/snapshot-controller + kubectl kustomize client/config/crd | kubectl create -f - + kubectl -n kube-system kustomize deploy/kubernetes/snapshot-controller | kubectl create -f - ``` **Note**: - - It is recommended to use 4.2.x version of snapshotter/snapshot-controller. + - It is recommended to use 5.0.x version of snapshotter/snapshot-controller. - The CSI external-snapshotter sidecar is still installed along with the driver and does not involve any extra configuration. @@ -233,7 +232,7 @@ Procedure A successful installation must display messages that look similar to the following samples: ``` ------------------------------------------------------ - > Installing CSI Driver: csi-unity on 1.20 + > Installing CSI Driver: csi-unity on 1.22 ------------------------------------------------------ ------------------------------------------------------ > Checking to see if CSI Driver is already installed @@ -241,52 +240,52 @@ Procedure ------------------------------------------------------ > Verifying Kubernetes and driver configuration ------------------------------------------------------ - |- Kubernetes Version: 1.20 + |- Kubernetes Version: 1.22 | |- Driver: csi-unity | - |- Verifying Kubernetes versions - | - |--> Verifying minimum Kubernetes version Success - | - |--> Verifying maximum Kubernetes version Success + |- Verifying Kubernetes version | - |- Verifying that required namespaces have been created Success + |--> Verifying minimum Kubernetes version Success | - |- Verifying that required secrets have been created Success + |--> Verifying maximum Kubernetes version Success | - |- Verifying that required secrets have been created Success + |- Verifying that required namespaces have been created Success + | + |- Verifying that required secrets have been created Success + | + |- Verifying that optional secrets have been created Success | |- Verifying alpha snapshot resources - | - |--> Verifying that alpha snapshot CRDs are not installed Success + | + |--> Verifying that alpha snapshot CRDs are not installed Success | |- Verifying sshpass installation.. | |- Verifying iSCSI installation - Enter the root password of 10.**.**.**: + Enter the root password of 10.**.**.**: - Enter the root password of 10.**.**.**: + Enter the root password of 10.**.**.**: Success | |- Verifying snapshot support - | - |--> Verifying that snapshot CRDs are available Success - | - |--> Verifying that the snapshot controller is available Success | - |- Verifying helm version Success + |--> Verifying that snapshot CRDs are available Success + | + |--> Verifying that the snapshot controller is available Success | - |- Verifying helm values version Success + |- Verifying helm version Success + | + |- Verifying helm values version Success ------------------------------------------------------ > Verification Complete - Success ------------------------------------------------------ | - |- Installing Driver Success - | - |--> Waiting for Deployment unity-controller to be ready Success - | - |--> Waiting for DaemonSet unity-node to be ready Success + |- Installing Driver Success + | + |--> Waiting for Deployment unity-controller to be ready Success + | + |--> Waiting for DaemonSet unity-node to be ready Success ------------------------------------------------------ > Operation complete ------------------------------------------------------ @@ -301,7 +300,7 @@ Procedure ## Certificate validation for Unisphere REST API calls -This topic provides details about setting up the certificate validation for the CSI Driver for Dell EMC Unity. +This topic provides details about setting up the certificate validation for the CSI Driver for Dell Unity. *Before you begin* @@ -339,11 +338,11 @@ For CSI Driver for Unity version 1.6 and later, `dell-csi-helm-installer` does n ### What happens to my existing Volume Snapshot Classes? -*Upgrading from CSI Unity v2.0 driver*: +*Upgrading from CSI Unity v2.1 driver*: The existing volume snapshot class will be retained. *Upgrading from an older version of the driver*: -It is strongly recommended to upgrade the earlier versions of CSI Unity to 1.6 or higher, before upgrading to 2.1. +It is strongly recommended to upgrade the earlier versions of CSI Unity to 1.6 or higher, before upgrading to 2.2. ## Storage Classes @@ -360,7 +359,7 @@ Upgrading from an older version of the driver: The storage classes will be delet >Note: If you continue to use the old storage classes, you may not be able to take advantage of any new storage class parameter supported by the driver. **Steps to create storage class:** -There are samples storage class yaml files available under `helm/samples/storageclass`. These can be copied and modified as needed. +There are samples storage class yaml files available under `csi-unity/samples/storageclass`. These can be copied and modified as needed. 1. Pick any of `unity-fc.yaml`, `unity-iscsi.yaml` or `unity-nfs.yaml` 2. Copy the file as `unity--fc.yaml`, `unity--iscsi.yaml` or `unity--nfs.yaml` diff --git a/content/v3/csidriver/installation/offline/_index.md b/content/v3/csidriver/installation/offline/_index.md index a6dd5941fa..59a7c082f3 100644 --- a/content/v3/csidriver/installation/offline/_index.md +++ b/content/v3/csidriver/installation/offline/_index.md @@ -1,10 +1,10 @@ --- -title: Offline Installation of Dell EMC CSI Storage Providers +title: Offline Installation of Dell CSI Storage Providers linktitle: Offline Installer -description: Offline Installation of Dell EMC CSI Storage Providers +description: Offline Installation of Dell CSI Storage Providers --- -The `csi-offline-bundle.sh` script can be used to create a package usable for offline installation of the Dell EMC CSI Storage Providers, via either Helm +The `csi-offline-bundle.sh` script can be used to create a package usable for offline installation of the Dell CSI Storage Providers, via either Helm or the Dell CSI Operator. This includes the following drivers: @@ -43,6 +43,8 @@ To perform an offline installation of a driver or the Operator, the following st 2. Unpacking the offline bundle created in Step 1 and preparing for installation 3. Perform either a Helm installation or Operator installation using the files obtained after unpacking in Step 2 +**NOTE:** It is recommended to use the same build tool for packing and unpacking of images (either docker or podman). + ### Building an offline bundle This needs to be performed on a Linux system with access to the internet as a git repo will need to be cloned, and container images pulled from public registries. @@ -63,84 +65,73 @@ The resulting offline bundle file can be copied to another machine, if necessary For example, here is the output of a request to build an offline bundle for the Dell CSI Operator: ``` -[user@anothersystem /home/user]# git clone https://github.com/dell/dell-csi-operator.git +git clone https://github.com/dell/dell-csi-operator.git ``` ``` -[user@anothersystem /home/user]# cd dell-csi-operator +cd dell-csi-operator ``` ``` -[user@system /home/user/dell-csi-operator]# scripts/csi-offline-bundle.sh -c -* -* Building image manifest file +[root@user scripts]# ./csi-offline-bundle.sh -c * -* Pulling container images - - dellemc/csi-isilon:v1.4.0.000R - dellemc/csi-isilon:v1.5.0 - dellemc/csi-isilon:v1.6.0 - dellemc/csipowermax-reverseproxy:v1.3.0 - dellemc/csi-powermax:v1.5.0.000R - dellemc/csi-powermax:v1.6.0 - dellemc/csi-powermax:v1.7.0 - dellemc/csi-powerstore:v1.2.0.000R - dellemc/csi-powerstore:v1.3.0 - dellemc/csi-powerstore:v1.4.0 - dellemc/csi-unity:v1.4.0.000R - dellemc/csi-unity:v1.5.0 - dellemc/csi-unity:v1.6.0 - dellemc/csi-vxflexos:v1.3.0.000R - dellemc/csi-vxflexos:v1.4.0 - dellemc/csi-vxflexos:v1.5.0 - dellemc/dell-csi-operator:v1.4.0 +* Pulling and saving container images + + dellemc/csi-isilon:v2.0.0 + dellemc/csi-isilon:v2.1.0 + dellemc/csipowermax-reverseproxy:v1.4.0 + dellemc/csi-powermax:v2.0.0 + dellemc/csi-powermax:v2.1.0 + dellemc/csi-powerstore:v2.0.0 + dellemc/csi-powerstore:v2.1.0 + dellemc/csi-unity:v2.0.0 + dellemc/csi-unity:v2.1.0 + localregistry:5028/csi-unity/csi-unity:20220303110841 + dellemc/csi-vxflexos:v2.0.0 + dellemc/csi-vxflexos:v2.1.0 + localregistry:5035/csi-operator/dell-csi-operator:v1.7.0 dellemc/sdc:3.5.1.1 dellemc/sdc:3.5.1.1-1 + dellemc/sdc:3.6 docker.io/busybox:1.32.0 - k8s.gcr.io/sig-storage/csi-attacher:v3.0.0 - k8s.gcr.io/sig-storage/csi-attacher:v3.1.0 - k8s.gcr.io/sig-storage/csi-attacher:v3.2.1 - k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.0.1 - k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.1.0 - k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.2.0 - k8s.gcr.io/sig-storage/csi-provisioner:v2.0.2 - k8s.gcr.io/sig-storage/csi-provisioner:v2.1.0 - k8s.gcr.io/sig-storage/csi-provisioner:v2.2.1 - k8s.gcr.io/sig-storage/csi-resizer:v1.2.0 - k8s.gcr.io/sig-storage/csi-snapshotter:v3.0.2 - k8s.gcr.io/sig-storage/csi-snapshotter:v3.0.3 - k8s.gcr.io/sig-storage/csi-snapshotter:v4.0.0 - k8s.gcr.io/sig-storage/csi-snapshotter:v4.1.0 - quay.io/k8scsi/csi-resizer:v1.0.0 - quay.io/k8scsi/csi-resizer:v1.1.0 - -* -* Saving images + ... + ... * * Copying necessary files - /dell/git/dell-csi-operator/config - /dell/git/dell-csi-operator/deploy - /dell/git/dell-csi-operator/samples - /dell/git/dell-csi-operator/scripts - /dell/git/dell-csi-operator/README.md - /dell/git/dell-csi-operator/LICENSE + /root/dell-csi-operator/driverconfig + /root/dell-csi-operator/deploy + /root/dell-csi-operator/samples + /root/dell-csi-operator/scripts + /root/dell-csi-operator/OLM.md + /root/dell-csi-operator/README.md + /root/dell-csi-operator/LICENSE * * Compressing release -dell-csi-operator-bundle/ -dell-csi-operator-bundle/samples/ -... --... -dell-csi-operator-bundle/LICENSE -dell-csi-operator-bundle/README.md + dell-csi-operator-bundle/ + dell-csi-operator-bundle/driverconfig/ + dell-csi-operator-bundle/driverconfig/config.yaml + dell-csi-operator-bundle/driverconfig/isilon_v200_v119.json + dell-csi-operator-bundle/driverconfig/isilon_v200_v120.json + dell-csi-operator-bundle/driverconfig/isilon_v200_v121.json + dell-csi-operator-bundle/driverconfig/isilon_v200_v122.json + dell-csi-operator-bundle/driverconfig/isilon_v210_v120.json + dell-csi-operator-bundle/driverconfig/isilon_v210_v121.json + dell-csi-operator-bundle/driverconfig/isilon_v210_v122.json + dell-csi-operator-bundle/driverconfig/isilon_v220_v121.json + dell-csi-operator-bundle/driverconfig/isilon_v220_v122.json + dell-csi-operator-bundle/driverconfig/isilon_v220_v123.json + dell-csi-operator-bundle/driverconfig/powermax_v200_v119.json + ... + ... * * Complete -Offline bundle file is: /dell/git/dell-csi-operator/dell-csi-operator-bundle.tar.gz +Offline bundle file is: /root/dell-csi-operator/dell-csi-operator-bundle.tar.gz + ``` ### Unpacking the offline bundle and preparing for installation @@ -161,7 +152,7 @@ The script will then perform the following steps: An example of preparing the bundle for installation (192.168.75.40:5000 refers to an image registry accessible to Kubernetes/OpenShift): ``` -[user@anothersystem /tmp]# tar xvfz dell-csi-operator-bundle.tar.gz +tar xvfz dell-csi-operator-bundle.tar.gz dell-csi-operator-bundle/ dell-csi-operator-bundle/samples/ ... @@ -171,99 +162,87 @@ dell-csi-operator-bundle/LICENSE dell-csi-operator-bundle/README.md ``` ``` -[user@anothersystem /tmp]# cd dell-csi-operator-bundle +cd dell-csi-operator-bundle ``` ``` -[user@anothersystem /tmp/dell-csi-operator-bundle]# scripts/csi-offline-bundle.sh -p -r 192.168.75.40:5000/operator -Preparing an offline bundle for installation +[root@user scripts]# ./csi-offline-bundle.sh -p -r localregistry:5000/csi-operator +Preparing a offline bundle for installation * * Loading docker images + 5b1fa8e3e100: Loading layer [==================================================>] 3.697MB/3.697MB + e20ed4c73206: Loading layer [==================================================>] 17.22MB/17.22MB + Loaded image: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.5.0 + d72a74c56330: Loading layer [==================================================>] 3.031MB/3.031MB + f2d2ab12e2a7: Loading layer [==================================================>] 48.08MB/48.08MB + Loaded image: k8s.gcr.io/sig-storage/csi-provisioner:v2.0.2 + 417cb9b79ade: Loading layer [==================================================>] 3.062MB/3.062MB + 61fefb35ccee: Loading layer [==================================================>] 16.88MB/16.88MB + Loaded image: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.2.0 + 7a5b9c0b4b14: Loading layer [==================================================>] 3.031MB/3.031MB + 1555ad6e2d44: Loading layer [==================================================>] 49.86MB/49.86MB + Loaded image: k8s.gcr.io/sig-storage/csi-provisioner:v2.1.0 + 2de1422d5d2d: Loading layer [==================================================>] 54.56MB/54.56MB + Loaded image: k8s.gcr.io/sig-storage/csi-provisioner:v2.2.1 + 25a1c1010608: Loading layer [==================================================>] 54.54MB/54.54MB + Loaded image: k8s.gcr.io/sig-storage/csi-provisioner:v2.2.2 + 07363fa84210: Loading layer [==================================================>] 3.062MB/3.062MB + 5227e51ea570: Loading layer [==================================================>] 54.92MB/54.92MB + Loaded image: k8s.gcr.io/sig-storage/csi-provisioner:v3.0.0 + cfb5cbeabdb2: Loading layer [==================================================>] 55.38MB/55.38MB + Loaded image: k8s.gcr.io/sig-storage/csi-provisioner:v3.1.0 + ... + ... * * Tagging and pushing images - dellemc/csi-isilon:v1.4.0.000R -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-isilon:v1.4.0.000R - dellemc/csi-isilon:v1.5.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-isilon:v1.5.0 - dellemc/csi-isilon:v1.6.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-isilon:v1.6.0 - dellemc/csipowermax-reverseproxy:v1.3.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csipowermax-reverseproxy:v1.3.0 - dellemc/csi-powermax:v1.5.0.000R -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-powermax:v1.5.0.000R - dellemc/csi-powermax:v1.6.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-powermax:v1.6.0 - dellemc/csi-powermax:v1.7.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-powermax:v1.7.0 - dellemc/csi-powerstore:v1.2.0.000R -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-powerstore:v1.2.0.000R - dellemc/csi-powerstore:v1.3.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-powerstore:v1.3.0 - dellemc/csi-powerstore:v1.4.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-powerstore:v1.4.0 - dellemc/csi-unity:v1.4.0.000R -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-unity:v1.4.0.000R - dellemc/csi-unity:v1.5.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-unity:v1.5.0 - dellemc/csi-unity:v1.6.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-unity:v1.6.0 - dellemc/csi-vxflexos:v1.3.0.000R -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-vxflexos:v1.3.0.000R - dellemc/csi-vxflexos:v1.4.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-vxflexos:v1.4.0 - dellemc/csi-vxflexos:v1.5.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-vxflexos:v1.5.0 - dellemc/dell-csi-operator:v1.4.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/dell-csi-operator:v1.4.0 - dellemc/sdc:3.5.1.1 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/sdc:3.5.1.1 - dellemc/sdc:3.5.1.1-1 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/sdc:3.5.1.1-1 - docker.io/busybox:1.32.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/busybox:1.32.0 - k8s.gcr.io/sig-storage/csi-attacher:v3.0.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-attacher:v3.0.0 - k8s.gcr.io/sig-storage/csi-attacher:v3.1.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-attacher:v3.1.0 - k8s.gcr.io/sig-storage/csi-attacher:v3.2.1 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-attacher:v3.2.1 - k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.0.1 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-node-driver-registrar:v2.0.1 - k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.1.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-node-driver-registrar:v2.1.0 - k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.2.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-node-driver-registrar:v2.2.0 - k8s.gcr.io/sig-storage/csi-provisioner:v2.0.2 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-provisioner:v2.0.2 - k8s.gcr.io/sig-storage/csi-provisioner:v2.1.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-provisioner:v2.1.0 - k8s.gcr.io/sig-storage/csi-provisioner:v2.2.1 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-provisioner:v2.2.1 - k8s.gcr.io/sig-storage/csi-resizer:v1.2.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-resizer:v1.2.0 - k8s.gcr.io/sig-storage/csi-snapshotter:v3.0.2 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-snapshotter:v3.0.2 - k8s.gcr.io/sig-storage/csi-snapshotter:v3.0.3 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-snapshotter:v3.0.3 - k8s.gcr.io/sig-storage/csi-snapshotter:v4.0.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-snapshotter:v4.0.0 - k8s.gcr.io/sig-storage/csi-snapshotter:v4.1.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-snapshotter:v4.1.0 - quay.io/k8scsi/csi-resizer:v1.0.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-resizer:v1.0.0 - quay.io/k8scsi/csi-resizer:v1.1.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-resizer:v1.1.0 + localregistry:5035/csi-operator/dell-csi-operator:v1.7.0 -> localregistry:5000/csi-operator/dell-csi-operator:v1.7.0 + dellemc/csi-isilon:v2.0.0 -> localregistry:5000/csi-operator/csi-isilon:v2.0.0 + dellemc/csi-isilon:v2.1.0 -> localregistry:5000/csi-operator/csi-isilon:v2.1.0 + dellemc/csipowermax-reverseproxy:v1.4.0 -> localregistry:5000/csi-operator/csipowermax-reverseproxy:v1.4.0 + dellemc/csi-powermax:v2.0.0 -> localregistry:5000/csi-operator/csi-powermax:v2.0.0 + dellemc/csi-powermax:v2.1.0 -> localregistry:5000/csi-operator/csi-powermax:v2.1.0 + dellemc/csi-powerstore:v2.0.0 -> localregistry:5000/csi-operator/csi-powerstore:v2.0.0 + dellemc/csi-powerstore:v2.1.0 -> localregistry:5000/csi-operator/csi-powerstore:v2.1.0 + dellemc/csi-unity:nightly -> localregistry:5000/csi-operator/csi-unity:nightly + dellemc/csi-unity:v2.0.0 -> localregistry:5000/csi-operator/csi-unity:v2.0.0 + dellemc/csi-unity:v2.1.0 -> localregistry:5000/csi-operator/csi-unity:v2.1.0 + dellemc/csi-vxflexos:v2.0.0 -> localregistry:5000/csi-operator/csi-vxflexos:v2.0.0 + dellemc/csi-vxflexos:v2.1.0 -> localregistry:5000/csi-operator/csi-vxflexos:v2.1.0 + dellemc/sdc:3.5.1.1 -> localregistry:5000/csi-operator/sdc:3.5.1.1 + dellemc/sdc:3.5.1.1-1 -> localregistry:5000/csi-operator/sdc:3.5.1.1-1 + dellemc/sdc:3.6 -> localregistry:5000/csi-operator/sdc:3.6 + docker.io/busybox:1.32.0 -> localregistry:5000/csi-operator/busybox:1.32.0 + ... + ... * -* Preparing operator files within /tmp/dell-csi-operator-bundle - - changing: dellemc/csi-isilon:v1.4.0.000R -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-isilon:v1.4.0.000R - changing: dellemc/csi-isilon:v1.5.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-isilon:v1.5.0 - changing: dellemc/csi-isilon:v1.6.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-isilon:v1.6.0 - changing: dellemc/csipowermax-reverseproxy:v1.3.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csipowermax-reverseproxy:v1.3.0 - changing: dellemc/csi-powermax:v1.5.0.000R -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-powermax:v1.5.0.000R - changing: dellemc/csi-powermax:v1.6.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-powermax:v1.6.0 - changing: dellemc/csi-powermax:v1.7.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-powermax:v1.7.0 - changing: dellemc/csi-powerstore:v1.2.0.000R -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-powerstore:v1.2.0.000R - changing: dellemc/csi-powerstore:v1.3.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-powerstore:v1.3.0 - changing: dellemc/csi-powerstore:v1.4.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-powerstore:v1.4.0 - changing: dellemc/csi-unity:v1.4.0.000R -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-unity:v1.4.0.000R - changing: dellemc/csi-unity:v1.5.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-unity:v1.5.0 - changing: dellemc/csi-unity:v1.6.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-unity:v1.6.0 - changing: dellemc/csi-vxflexos:v1.3.0.000R -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-vxflexos:v1.3.0.000R - changing: dellemc/csi-vxflexos:v1.4.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-vxflexos:v1.4.0 - changing: dellemc/csi-vxflexos:v1.5.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-vxflexos:v1.5.0 - changing: dellemc/dell-csi-operator:v1.4.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/dell-csi-operator:v1.4.0 - changing: dellemc/sdc:3.5.1.1 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/sdc:3.5.1.1 - changing: dellemc/sdc:3.5.1.1-1 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/sdc:3.5.1.1-1 - changing: docker.io/busybox:1.32.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/busybox:1.32.0 - changing: k8s.gcr.io/sig-storage/csi-attacher:v3.0.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-attacher:v3.0.0 - changing: k8s.gcr.io/sig-storage/csi-attacher:v3.1.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-attacher:v3.1.0 - changing: k8s.gcr.io/sig-storage/csi-attacher:v3.2.1 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-attacher:v3.2.1 - changing: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.0.1 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-node-driver-registrar:v2.0.1 - changing: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.1.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-node-driver-registrar:v2.1.0 - changing: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.2.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-node-driver-registrar:v2.2.0 - changing: k8s.gcr.io/sig-storage/csi-provisioner:v2.0.2 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-provisioner:v2.0.2 - changing: k8s.gcr.io/sig-storage/csi-provisioner:v2.1.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-provisioner:v2.1.0 - changing: k8s.gcr.io/sig-storage/csi-provisioner:v2.2.1 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-provisioner:v2.2.1 - changing: k8s.gcr.io/sig-storage/csi-resizer:v1.2.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-resizer:v1.2.0 - changing: k8s.gcr.io/sig-storage/csi-snapshotter:v3.0.2 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-snapshotter:v3.0.2 - changing: k8s.gcr.io/sig-storage/csi-snapshotter:v3.0.3 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-snapshotter:v3.0.3 - changing: k8s.gcr.io/sig-storage/csi-snapshotter:v4.0.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-snapshotter:v4.0.0 - changing: k8s.gcr.io/sig-storage/csi-snapshotter:v4.1.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-snapshotter:v4.1.0 - changing: quay.io/k8scsi/csi-resizer:v1.0.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-resizer:v1.0.0 - changing: quay.io/k8scsi/csi-resizer:v1.1.0 -> amaas-eos-mw1.cec.lab.emc.com:5028/csi-operator/csi-resizer:v1.1.0 - +* Preparing operator files within /root/dell-csi-operator-bundle + + changing: localregistry:5000/csi-operator/dell-csi-operator:v1.7.0 -> localregistry:5000/csi-operator/dell-csi-operator:v1.7.0 + changing: dellemc/csi-isilon:v2.0.0 -> localregistry:5000/csi-operator/csi-isilon:v2.0.0 + changing: dellemc/csi-isilon:v2.1.0 -> localregistry:5000/csi-operator/csi-isilon:v2.1.0 + changing: dellemc/csipowermax-reverseproxy:v1.4.0 -> localregistry:5000/csi-operator/csipowermax-reverseproxy:v1.4.0 + changing: dellemc/csi-powermax:v2.0.0 -> localregistry:5000/csi-operator/csi-powermax:v2.0.0 + changing: dellemc/csi-powermax:v2.1.0 -> localregistry:5000/csi-operator/csi-powermax:v2.1.0 + changing: dellemc/csi-powerstore:v2.0.0 -> localregistry:5000/csi-operator/csi-powerstore:v2.0.0 + changing: dellemc/csi-powerstore:v2.1.0 -> localregistry:5000/csi-operator/csi-powerstore:v2.1.0 + changing: dellemc/csi-unity:nightly -> localregistry:5000/csi-operator/csi-unity:nightly + changing: dellemc/csi-unity:v2.0.0 -> localregistry:5000/csi-operator/csi-unity:v2.0.0 + changing: dellemc/csi-unity:v2.1.0 -> localregistry:5000/csi-operator/csi-unity:v2.1.0 + changing: dellemc/csi-vxflexos:v2.0.0 -> localregistry:5000/csi-operator/csi-vxflexos:v2.0.0 + changing: dellemc/csi-vxflexos:v2.1.0 -> localregistry:5000/csi-operator/csi-vxflexos:v2.1.0 + changing: dellemc/sdc:3.5.1.1 -> localregistry:5000/csi-operator/sdc:3.5.1.1 + changing: dellemc/sdc:3.5.1.1-1 -> localregistry:5000/csi-operator/sdc:3.5.1.1-1 + changing: dellemc/sdc:3.6 -> localregistry:5000/csi-operator/sdc:3.6 + changing: docker.io/busybox:1.32.0 -> localregistry:5000/csi-operator/busybox:1.32.0 + ... + ... + * * Complete - ``` ### Perform either a Helm installation or Operator installation diff --git a/content/v3/csidriver/installation/operator/_index.md b/content/v3/csidriver/installation/operator/_index.md index 468761f0f6..71140cd643 100644 --- a/content/v3/csidriver/installation/operator/_index.md +++ b/content/v3/csidriver/installation/operator/_index.md @@ -1,28 +1,28 @@ --- -title: "Dell CSI Operator Installation Process" +title: "CSI Driver installation using Dell CSI Operator" linkTitle: "Using Operator" weight: 4 description: > Installation of CSI drivers using Dell CSI Operator --- -The Dell CSI Operator is a Kubernetes Operator, which can be used to install and manage the CSI Drivers provided by Dell EMC for various storage platforms. This operator is available as a community operator for upstream Kubernetes and can be deployed using OperatorHub.io. It is also available as a certified operator for OpenShift clusters and can be deployed using the OpenShift Container Platform. Both these methods of installation use OLM (Operator Lifecycle Manager). The operator can also be deployed manually. +The Dell CSI Operator is a Kubernetes Operator, which can be used to install and manage the CSI Drivers provided by Dell for various storage platforms. This operator is available as a community operator for upstream Kubernetes and can be deployed using OperatorHub.io. It is also available as a certified operator for OpenShift clusters and can be deployed using the OpenShift Container Platform. Both these methods of installation use OLM (Operator Lifecycle Manager). The operator can also be deployed manually. ## Prerequisites #### Volume Snapshot CRD's -The Kubernetes Volume Snapshot CRDs can be obtained and installed from the external-snapshotter project on Github. Manifests are available here:[v4.2.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v4.2.0/client/config/crd) +The Kubernetes Volume Snapshot CRDs can be obtained and installed from the external-snapshotter project on Github. Manifests are available here:[v5.0.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/client/config/crd) #### Volume Snapshot Controller The CSI external-snapshotter sidecar is split into two controllers: - A common snapshot controller - A CSI external-snapshotter sidecar -The common snapshot controller must be installed only once in the cluster irrespective of the number of CSI drivers installed in the cluster. On OpenShift clusters 4.4 and later, the common snapshot-controller is pre-installed. In the clusters where it is not present, it can be installed using `kubectl` and the manifests are available here: [v4.2.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v4.2.0/deploy/kubernetes/snapshot-controller) +The common snapshot controller must be installed only once in the cluster irrespective of the number of CSI drivers installed in the cluster. On OpenShift clusters 4.4 and later, the common snapshot-controller is pre-installed. In the clusters where it is not present, it can be installed using `kubectl` and the manifests are available here: [v5.0.x](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/deploy/kubernetes/snapshot-controller) *NOTE:* - The manifests available on GitHub install the snapshotter image: - - [quay.io/k8scsi/csi-snapshotter:v4.0.x](https://quay.io/repository/k8scsi/csi-snapshotter?tag=v4.0.0&tab=tags) + - [quay.io/k8scsi/csi-snapshotter:v5.0.1](https://quay.io/repository/k8scsi/csi-snapshotter?tag=v5.0.1&tab=tags) - The CSI external-snapshotter sidecar is still installed along with the driver and does not involve any extra configuration. #### Installation example @@ -37,7 +37,7 @@ kubectl create -f deploy/kubernetes/snapshot-controller ``` *NOTE:* -- It is recommended to use 4.2.x version of snapshotter/snapshot-controller. +- It is recommended to use 5.0.x version of snapshotter/snapshot-controller. ## Installation @@ -50,21 +50,21 @@ If you have installed an old version of the `dell-csi-operator` which was availa #### Full list of CSI Drivers and versions supported by the Dell CSI Operator | CSI Driver | Version | ConfigVersion | Kubernetes Version | OpenShift Version | | ------------------ | --------- | -------------- | -------------------- | --------------------- | -| CSI PowerMax | 1.7 | v6 | 1.19, 1.20, 1.21 | 4.6, 4.7 | | CSI PowerMax | 2.0.0 | v2.0.0 | 1.20, 1.21, 1.22 | 4.6 EUS, 4.7, 4.8 | | CSI PowerMax | 2.1.0 | v2.1.0 | 1.20, 1.21, 1.22 | 4.8, 4.8 EUS, 4.9 | -| CSI PowerFlex | 1.5 | v5 | 1.19, 1.20, 1.21 | 4.6, 4.7 | +| CSI PowerMax | 2.2.0 | v2.2.0 | 1.21, 1.22, 1.23 | 4.8, 4.8 EUS, 4.9 | | CSI PowerFlex | 2.0.0 | v2.0.0 | 1.20, 1.21, 1.22 | 4.6 EUS, 4.7, 4.8 | | CSI PowerFlex | 2.1.0 | v2.1.0 | 1.20, 1.21, 1.22 | 4.8, 4.8 EUS, 4.9 | -| CSI PowerScale | 1.6 | v6 | 1.19, 1.20, 1.21 | 4.6, 4.7 | +| CSI PowerFlex | 2.2.0 | v2.2.0 | 1.21, 1.22, 1.23 | 4.8, 4.8 EUS, 4.9 | | CSI PowerScale | 2.0.0 | v2.0.0 | 1.20, 1.21, 1.22 | 4.6 EUS, 4.7, 4.8 | | CSI PowerScale | 2.1.0 | v2.1.0 | 1.20, 1.21, 1.22 | 4.8, 4.8 EUS, 4.9 | -| CSI Unity | 1.6 | v5 | 1.19, 1.20, 1.21 | 4.6, 4.7 | +| CSI PowerScale | 2.2.0 | v2.2.0 | 1.21, 1.22, 1.23 | 4.8, 4.8 EUS, 4.9 | | CSI Unity | 2.0.0 | v2.0.0 | 1.20, 1.21, 1.22 | 4.6 EUS, 4.7, 4.8 | | CSI Unity | 2.1.0 | v2.1.0 | 1.20, 1.21, 1.22 | 4.8, 4.8 EUS, 4.9 | -| CSI PowerStore | 1.4 | v4 | 1.19, 1.20, 1.21 | 4.6, 4.7 | +| CSI Unity | 2.2.0 | v2.2.0 | 1.21, 1.22, 1.23 | 4.8, 4.8 EUS, 4.9 | | CSI PowerStore | 2.0.0 | v2.0.0 | 1.20, 1.21, 1.22 | 4.6 EUS, 4.7, 4.8 | | CSI PowerStore | 2.1.0 | v2.1.0 | 1.20, 1.21, 1.22 | 4.8, 4.8 EUS, 4.9 | +| CSI PowerStore | 2.2.0 | v2.2.0 | 1.21, 1.22, 1.23 | 4.8, 4.8 EUS, 4.9 |
@@ -76,7 +76,7 @@ The installation process involves the creation of a `Subscription` object either * _Automatic_ - If you want the Operator to be automatically installed or upgraded (once an upgrade becomes available) * _Manual_ - If you want a Cluster Administrator to manually review and approve the `InstallPlan` for installation/upgrades -**NOTE**: The recommended version of OLM for upstream Kubernetes is **`v0.18.3`**. +**NOTE**: The recommended version of OLM for upstream Kubernetes is **`v0.18.2`**. #### Pre-Requisite for installation with OLM Please run the following commands for creating the required `ConfigMap` before installing the `dell-csi-operator` using OLM. @@ -98,8 +98,9 @@ $ kubectl create configmap dell-csi-operator-config --from-file config.tar.gz -n >**Skip step 1 for "offline bundle installation" and continue using the workspace created by untar of dell-csi-operator-bundle.tar.gz.** 1. Clone the [Dell CSI Operator repository](https://github.com/dell/dell-csi-operator). -2. git checkout dell-csi-operator- -3. Run `bash scripts/install.sh` to install the operator. +2. cd dell-csi-operator +3. git checkout dell-csi-operator-`your-version' +4. Run `bash scripts/install.sh` to install the operator. >NOTE: Dell CSI Operator version 1.4.0 and higher would install to the 'dell-csi-operator' namespace by default. Any existing installations of Dell CSI Operator (v1.2.0 or later) installed using `install.sh` to the 'default' or 'dell-csi-operator' namespace can be upgraded to the new version by running `install.sh --upgrade`. @@ -126,8 +127,7 @@ For installation of the supported drivers, a `CustomResource` has to be created ### Pre-requisites for upstream Kubernetes Clusters On upstream Kubernetes clusters, make sure to install * VolumeSnapshot CRDs - * On clusters running v1.20,v1.21 & v1.22, make sure to install v1 VolumeSnapshot CRDs - * On clusters running v1.19, make sure to install v1beta1 VolumeSnapshot CRDs + * On clusters running v1.21,v1.22 & v1.23, make sure to install v1 VolumeSnapshot CRDs * External Volume Snapshot Controller with the correct version ### Pre-requisites for Red Hat OpenShift Clusters @@ -210,36 +210,6 @@ Finally, you have to restart the service by providing the command For additional information refer to official documentation of the multipath configuration. -## Replacing CSI Operator with Dell CSI Operator -`Dell CSI Operator` was previously available, with the name `CSI Operator`, for both manual and OLM installation. -`CSI Operator` has been discontinued and has been renamed to `Dell CSI Operator`. This is just a name change and as a result, -the Kubernetes resources created as part of the Operator deployment will use the name `dell-csi-operator` instead of `csi-operator`. - -Before proceeding with the installation of the new `Dell CSI Operator`, any existing `CSI Operator` installation has to be completely -removed from the cluster. - -Note - This **doesn't** impact any of the CSI Drivers which have been installed in the cluster - -If the old `CSI Operator` was installed manually, then run the following command from the root of the repository which was used -originally for installation - - bash scripts/undeploy.sh - -If you don't have the original repository available, then run the following commands - - git clone https://github.com/dell/dell-csi-operator.git - cd dell-csi-operator - git checkout csi-operator-v1.0.0 - bash scripts/undeploy.sh - -Note - Once you have removed the old `CSI Operator`, then for installing the new `Dell CSI Operator`, you will need to pull/checkout the latest code - -If you had installed the old CSI Operator using OLM, then please follow the uninstallation instructions provided by OperatorHub. This will mostly involve: - - * Deleting the CSI Operator Subscription - * Deleting the CSI Operator CSV - - ## Installing CSI Driver via Operator CSI Drivers can be installed by creating a `CustomResource` object in your cluster. @@ -251,8 +221,8 @@ Or {driver name}_{driver version}_ops_{OpenShift version}.yaml For e.g. -* sample/powermax_v140_k8s_117.yaml* <- To install CSI PowerMax driver v1.4.0 on a Kubernetes 1.17 cluster -* sample/powermax_v140_ops_46.yaml* <- To install CSI PowerMax driver v1.4.0 on an OpenShift 4.6 cluster +* samples/powermax_v220_k8s_123.yaml* <- To install CSI PowerMax driver v2.2.0 on a Kubernetes 1.23 cluster +* samples/powermax_v220_ops_49.yaml* <- To install CSI PowerMax driver v2.2.0 on an OpenShift 4.9 cluster Copy the correct sample file and edit the mandatory & any optional parameters specific to your driver installation by following the instructions [here](#modify-the-driver-specification) >NOTE: A detailed explanation of the various mandatory and optional fields in the CustomResource is available [here](#custom-resource-specification). Please make sure to read through and understand the various fields. @@ -293,14 +263,19 @@ The CSI Drivers installed by the Dell CSI Operator can be updated like any Kuber # Replace driver-namespace with the namespace where the Unity driver is installed $ kubectl edit csiunity/unity -n ``` - and modify the installation -* Modify the API object in-place via `kubectl patch` + and modify the installation. The usual fields to edit are the version of drivers and sidecars and the env variables. +* Modify the API object in place via `kubectl patch` command. + +To create patch file or edit deployments, refer [here](https://github.com/dell/dell-csi-operator/tree/master/samples) for driver version & env variables and [here](https://github.com/dell/dell-csi-operator/tree/master/driverconfig/config.yaml) for version of side-cars. +The latest versions of drivers could have additional env variables or sidecars. + +The below notes explain some of the general items to take care of. **NOTES:** 1. If you are trying to upgrade the CSI driver from an older version, make sure to modify the _configVersion_ field if required. ```yaml driver: - configVersion: v2.1.0 + configVersion: v2.2.0 ``` 2. Volume Health Monitoring feature is optional and by default this feature is disabled for drivers when installed via operator. To enable this feature, we will have to modify the below block while upgrading the driver.To get the volume health state add @@ -310,12 +285,12 @@ The CSI Drivers installed by the Dell CSI Operator can be updated like any Kuber ```yaml controller: envs: - - name: X_CSI_ENABLE_VOL_HEALTH_MONITOR + - name: X_CSI_HEALTH_MONITOR_ENABLED value: "true" dnsPolicy: ClusterFirstWithHostNet node: envs: - - name: X_CSI_ENABLE_VOL_HEALTH_MONITOR + - name: X_CSI_HEALTH_MONITOR_ENABLED value: "true" ``` ii. Update the sidecar versions and add external-health-monitor sidecar if you want to enable health monitor of CSI volumes from Controller plugin: @@ -324,12 +299,12 @@ The CSI Drivers installed by the Dell CSI Operator can be updated like any Kuber - args: - --volume-name-prefix=csiunity - --default-fstype=ext4 - image: k8s.gcr.io/sig-storage/csi-provisioner:v3.0.0 + image: k8s.gcr.io/sig-storage/csi-provisioner:v3.1.0 imagePullPolicy: IfNotPresent name: provisioner - args: - --snapshot-name-prefix=csiunitysnap - image: k8s.gcr.io/sig-storage/csi-snapshotter:v4.2.1 + image: k8s.gcr.io/sig-storage/csi-snapshotter:v5.0.1 imagePullPolicy: IfNotPresent name: snapshotter - args: @@ -337,13 +312,13 @@ The CSI Drivers installed by the Dell CSI Operator can be updated like any Kuber image: gcr.io/k8s-staging-sig-storage/csi-external-health-monitor-controller:v0.4.0 imagePullPolicy: IfNotPresent name: external-health-monitor - - image: k8s.gcr.io/sig-storage/csi-attacher:v3.3.0 + - image: k8s.gcr.io/sig-storage/csi-attacher:v3.4.0 imagePullPolicy: IfNotPresent name: attacher - - image: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.3.0 + - image: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.5.0 imagePullPolicy: IfNotPresent name: registrar - - image: k8s.gcr.io/sig-storage/csi-resizer:v1.3.0 + - image: k8s.gcr.io/sig-storage/csi-resizer:v1.4.0 imagePullPolicy: IfNotPresent name: resizer ``` @@ -358,7 +333,7 @@ data: CSI_LOG_LEVEL: "info" ALLOW_RWO_MULTIPOD_ACCESS: "false" MAX_UNITY_VOLUMES_PER_NODE: "0" - SYNC_NODE_INFO_TIME_INTERVAL: "0" + SYNC_NODE_INFO_TIME_INTERVAL: "15" TENANT_NAME: "" ``` @@ -410,6 +385,9 @@ It should be set separately in the controller and node sections if you want sepa **nodeSelector** Used to specify node selectors for the driver StatefulSet/Deployment and DaemonSet +**fsGroupPolicy** +Defines which FS Group policy mode to be used, Supported modes: None, File and ReadWriteOnceWithFSType + Here is a sample specification annotated with comments to explain each field ```yaml apiVersion: storage.dell.com/v1 @@ -438,7 +416,7 @@ Note - The `image` field should point to the correct image tag for version of th For e.g. - If you wish to install v1.4 of the CSI PowerMax driver, use the image tag `dellemc/csi-powermax:v1.4.0.000R` ### SideCars -Although the sidecars field in the driver specification is optional, it is **strongly** recommended to not modify any details related to sidecars provided (if present) in the sample manifests. The only exception to this is modifications requested by the documentation, for example, filling in blank IPs or other such system-specific data. Any modifications not specifically requested by the documentation should be only done after consulting with Dell EMC support. +Although the sidecars field in the driver specification is optional, it is **strongly** recommended to not modify any details related to sidecars provided (if present) in the sample manifests. The only exception to this is modifications requested by the documentation, for example, filling in blank IPs or other such system-specific data. Any modifications not specifically requested by the documentation should be only done after consulting with Dell support. ### Modify the driver specification * Choose the correct configVersion. Refer the table containing the full list of supported drivers and versions. diff --git a/content/v3/csidriver/installation/operator/isilon.md b/content/v3/csidriver/installation/operator/isilon.md index 62c7f1309a..00e4c69924 100644 --- a/content/v3/csidriver/installation/operator/isilon.md +++ b/content/v3/csidriver/installation/operator/isilon.md @@ -6,7 +6,7 @@ description: > ## Installing CSI Driver for PowerScale via Operator -The CSI Driver for Dell EMC PowerScale can be installed via the Dell CSI Operator. +The CSI Driver for Dell PowerScale can be installed via the Dell CSI Operator. To deploy the Operator, follow the instructions available [here](../). @@ -115,6 +115,7 @@ User can query for CSI-PowerScale driver using the following command: | Parameter | Description | Required | Default | | --------- | ----------- | -------- |-------- | | dnsPolicy | Determines the DNS Policy of the Node service | Yes | ClusterFirstWithHostNet | + | fsGroupPolicy | Defines which FS Group policy mode to be used, Supported modes `None, File and ReadWriteOnceWithFSType` | No | "ReadWriteOnceWithFSType" | | ***Common parameters for node and controller*** | | CSI_ENDPOINT | The UNIX socket address for handling gRPC calls | No | /var/run/csi/csi.sock | | X_CSI_ISI_SKIP_CERTIFICATE_VALIDATION | Specifies whether SSL security needs to be enabled for communication between PowerScale and CSI Driver | No | true | @@ -123,19 +124,61 @@ User can query for CSI-PowerScale driver using the following command: | X_CSI_ISI_AUTOPROBE | To enable auto probing for driver | No | true | | X_CSI_ISI_NO_PROBE_ON_START | Indicates whether the controller/node should probe during initialization | Yes | | | X_CSI_ISI_VOLUME_PATH_PERMISSIONS | The permissions for isi volume directory path | Yes | 0777 | + | X_CSI_ISI_AUTH_TYPE | Indicates the authentication method to be used. If set to 1 then it follows as session-based authentication else basic authentication | No | 0 | | ***Controller parameters*** | | X_CSI_MODE | Driver starting mode | No | controller | | X_CSI_ISI_ACCESS_ZONE | Name of the access zone a volume can be created in | No | System | - | X_CSI_ISI_QUOTA_ENABLED | To enable SmartQuotas | Yes | | + | X_CSI_ISI_QUOTA_ENABLED | To enable SmartQuotas | Yes | | + | nodeSelector | Define node selection constraints for pods of controller deployment | No | | + | X_CSI_HEALTH_MONITOR_ENABLED | Enable/Disable health monitor of CSI volumes from Controller plugin. Provides details of volume status and volume condition. As a prerequisite, external-health-monitor sidecar section should be uncommented in samples which would install the sidecar | No | false | | ***Node parameters*** | | X_CSI_MAX_VOLUMES_PER_NODE | Specify the default value for the maximum number of volumes that the controller can publish to the node | Yes | 0 | - | X_CSI_MODE | Driver starting mode | No | node | + | X_CSI_MODE | Driver starting mode | No | node | + | X_CSI_HEALTH_MONITOR_ENABLED | Enable/Disable health monitor of CSI volumes from node plugin. Provides details of volume usage | No | false | + | ***Side car parameters*** | + | leader-election-lease-duration | Duration, that non-leader candidates will wait to force acquire leadership | No | 20s | + | leader-election-renew-deadline | Duration, that the acting leader will retry refreshing leadership before giving up | No | 15s | + | leader-election-retry-period | Duration, the LeaderElector clients should wait between tries of actions | No | 5s | + 6. Execute the following command to create PowerScale custom resource: ```kubectl create -f ``` . This command will deploy the CSI-PowerScale driver in the namespace specified in the input YAML file. **Note** : 1. From CSI-PowerScale v1.6.0 and higher, Storage class and VolumeSnapshotClass will **not** be created as part of driver deployment. The user has to create Storageclass and Volume Snapshot Class. - 2. Node selector and node tolerations can be added in both controller parameters and node parameters section, based on the need. - 3. "Kubelet config dir path" is not yet configurable in case of Operator based driver installation. - 4. Also, snapshotter and resizer sidecars are not optional to choose, it comes default with Driver installation. + 2. "Kubelet config dir path" is not yet configurable in case of Operator based driver installation. + 3. Also, snapshotter and resizer sidecars are not optional to choose, it comes default with Driver installation. + +## Volume Health Monitoring +This feature is introduced in CSI Driver for unity version 2.1.0. + +### Operator based installation + +Volume Health Monitoring feature is optional and by default this feature is disabled for drivers when installed via operator. +To enable this feature, add the below block to the driver manifest before installing the driver. This ensures to install external health monitor sidecar. To get the volume health state `value` under controller should be set to true as seen below. To get the volume stats `value` under node should be set to true. + + ```yaml + # Uncomment the following to install 'external-health-monitor' sidecar to enable health monitor of CSI volumes from Controller plugin. + # Also set the env variable controller.envs.X_CSI_HEALTH_MONITOR_ENABLED to "true". + # - name: external-health-monitor + # args: ["--monitor-interval=60s"] + + # Install the 'external-health-monitor' sidecar accordingly. + # Allowed values: + # true: enable checking of health condition of CSI volumes + # false: disable checking of health condition of CSI volumes + # Default value: false + controller: + envs: + - name: X_CSI_HEALTH_MONITOR_ENABLED + value: "true" + node: + envs: + # X_CSI_HEALTH_MONITOR_ENABLED: Enable/Disable health monitor of CSI volumes from node plugin - volume usage + # Allowed values: + # true: enable checking of health condition of CSI volumes + # false: disable checking of health condition of CSI volumes + # Default value: false + - name: X_CSI_HEALTH_MONITOR_ENABLED + value: "true" + ``` diff --git a/content/v3/csidriver/installation/operator/non-olm-1.jpg b/content/v3/csidriver/installation/operator/non-olm-1.jpg index 2a5fb5c2496a1d12a15c98f6480952524cf86862..3cc966646a410d97a773db07b28f612a37a41790 100644 GIT binary patch literal 117473 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

cjb3-rlfzh`+go=1mYST0-_5fNkJq`#G?S%_ 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 WEx<7W+rK}^|BH8M --- ## Installing CSI Driver for PowerFlex via Operator -The CSI Driver for Dell EMC PowerFlex can be installed via the Dell CSI Operator. +The CSI Driver for Dell PowerFlex can be installed via the Dell CSI Operator. To deploy the Operator, follow the instructions available [here](../). @@ -66,13 +66,13 @@ Kubernetes Operators make it easy to deploy and manage the entire lifecycle of c ### Manual SDC Deployment -For detailed PowerFlex installation procedure, see the _Dell EMC PowerFlex Deployment Guide_. Install the PowerFlex SDC as follows: +For detailed PowerFlex installation procedure, see the _Dell PowerFlex Deployment Guide_. Install the PowerFlex SDC as follows: **Steps** -1. Download the PowerFlex SDC from [Dell EMC Online support](https://www.dell.com/support). The filename is EMC-ScaleIO-sdc-*.rpm, where * is the SDC name corresponding to the PowerFlex installation version. +1. Download the PowerFlex SDC from [Dell Online support](https://www.dell.com/support). The filename is EMC-ScaleIO-sdc-*.rpm, where * is the SDC name corresponding to the PowerFlex installation version. 2. Export the shell variable _MDM_IP_ in a comma-separated list using `export MDM_IP=xx.xxx.xx.xx,xx.xxx.xx.xx`, where xxx represents the actual IP address in your environment. This list contains the IP addresses of the MDMs. -3. Install the SDC per the _Dell EMC PowerFlex Deployment Guide_: +3. Install the SDC per the _Dell PowerFlex Deployment Guide_: - For Red Hat Enterprise Linux and CentOS, run `rpm -iv ./EMC-ScaleIO-sdc-*.x86_64.rpm`, where * is the SDC name corresponding to the PowerFlex installation version. 4. To add more MDM_IP for multi-array support, run `/opt/emc/scaleio/sdc/bin/drv_cfg --add_mdm --ip 10.xx.xx.xx.xx,10.xx.xx.xx` diff --git a/content/v3/csidriver/installation/operator/powermax.md b/content/v3/csidriver/installation/operator/powermax.md index 0ebcd1ac23..781eb18fe7 100644 --- a/content/v3/csidriver/installation/operator/powermax.md +++ b/content/v3/csidriver/installation/operator/powermax.md @@ -6,7 +6,7 @@ description: > ## Installing CSI Driver for PowerMax via Operator -CSI Driver for Dell EMC PowerMax can be installed via the Dell CSI Operator. +CSI Driver for Dell PowerMax can be installed via the Dell CSI Operator. To deploy the Operator, follow the instructions available [here](../). @@ -28,17 +28,17 @@ Create a secret named powermax-certs in the namespace where the CSI PowerMax dri Create a file called powermax-creds.yaml with the following content: ```yaml apiVersion: v1 - kind: Secret - metadata: + kind: Secret + metadata: name: powermax-creds - # Replace driver-namespace with the namespace where driver is being deployed - namespace: - type: Opaque - data: - # set username to the base64 encoded username - username: - # set password to the base64 encoded password - password: + # Replace driver-namespace with the namespace where driver is being deployed + namespace: + type: Opaque + data: + # set username to the base64 encoded username + username: + # set password to the base64 encoded password + password: # Uncomment the following key if you wish to use ISCSI CHAP authentication (v1.3.0 onwards) # chapsecret: ``` @@ -65,10 +65,11 @@ Create a secret named powermax-certs in the namespace where the CSI PowerMax dri | X_CSI_MANAGED_ARRAYS | List of comma-separated array ID(s) which will be managed by the driver | Yes | - | | X_CSI_POWERMAX_PROXY_SERVICE_NAME | Name of CSI PowerMax ReverseProxy service. Leave blank if not using reverse proxy | No | - | | X_CSI_GRPC_MAX_THREADS | Number of concurrent grpc requests allowed per client | No | 4 | -| X_CSI_POWERMAX_DRIVER_NAME | Set custom CSI driver name. For more details on this feature see the related [documentation](../../../features/powermax/#custom-driver-name) | No | - | -| ***Node parameters***| + | X_CSI_POWERMAX_DRIVER_NAME | Set custom CSI driver name. For more details on this feature see the related [documentation](../../../features/powermax/#custom-driver-name) | No | - | + | X_CSI_HEALTH_MONITOR_ENABLED | Enable/Disable health monitor of CSI volumes from Controller and Node plugin. Provides details of volume status, usage and volume condition. As a prerequisite, external-health-monitor sidecar section should be uncommented in samples which would install the sidecar | No | false | + | ***Node parameters***| | X_CSI_POWERMAX_ISCSI_ENABLE_CHAP | Enable ISCSI CHAP authentication. For more details on this feature see the related [documentation](../../../features/powermax/#iscsi-chap) | No | false | -5. Execute the following command to create the PowerMax custom resource:`kubectl create -f `. The above command will deploy the CSI-PowerMax driver. +5. Execute the following command to create the PowerMax custom resource:`kubectl create -f `. The above command will deploy the CSI-PowerMax driver. ### CSI PowerMax ReverseProxy @@ -198,8 +199,8 @@ metadata: namespace: test-powermax spec: driver: - # Config version for CSI PowerMax v2.1.0 driver - configVersion: v2.1.0 + # Config version for CSI PowerMax v2.2.0 driver + configVersion: v2.2.0 # replica: Define the number of PowerMax controller nodes # to deploy to the Kubernetes release # Allowed values: n, where n > 0 @@ -208,8 +209,8 @@ spec: dnsPolicy: ClusterFirstWithHostNet forceUpdate: false common: - # Image for CSI PowerMax driver v2.1.0 - image: dellemc/csi-powermax:v2.1.0 + # Image for CSI PowerMax driver v2.2.0 + image: dellemc/csi-powermax:v2.2.0 # imagePullPolicy: Policy to determine if the image should be pulled prior to starting the container. # Allowed values: # Always: Always pull the image. @@ -223,54 +224,70 @@ spec: # Examples: "000000000001", "000000000002" - name: X_CSI_MANAGED_ARRAYS value: "000000000000,000000000001" - # X_CSI_POWERMAX_ENDPOINT: Address of the Unisphere server that is managing the PowerMax arrays - # Default value: None - # Example: https://0.0.0.1:8443 + # X_CSI_POWERMAX_ENDPOINT: Address of the Unisphere server that is managing the PowerMax arrays + # Default value: None + # Example: https://0.0.0.1:8443 - name: X_CSI_POWERMAX_ENDPOINT value: "https://0.0.0.0:8443/" - # X_CSI_K8S_CLUSTER_PREFIX: Define a prefix that is appended onto - # all resources created in the Array - # This should be unique per K8s/CSI deployment - # maximum length of this value is 3 characters - # Default value: None - # Examples: "XYZ", "EMC" - # Examples: "XYZ", "EMC" + # X_CSI_K8S_CLUSTER_PREFIX: Define a prefix that is appended onto + # all resources created in the Array + # This should be unique per K8s/CSI deployment + # maximum length of this value is 3 characters + # Default value: None + # Examples: "XYZ", "EMC" - name: X_CSI_K8S_CLUSTER_PREFIX value: "XYZ" - # X_CSI_POWERMAX_PORTGROUPS: Define the set of existing port groups that the driver will use. - # It is a comma separated list of portgroup names. - # Required only in case of iSCSI port groups - # Allowed values: iSCSI Port Group names - # Default value: None - # Examples: "pg1", "pg1, pg2" + # X_CSI_POWERMAX_PORTGROUPS: Define the set of existing port groups that the driver will use. + # It is a comma separated list of portgroup names. + # Required only in case of iSCSI port groups + # Allowed values: iSCSI Port Group names + # Default value: None + # Examples: "pg1", "pg1, pg2" - name: "X_CSI_POWERMAX_PORTGROUPS" value: "" - # "X_CSI_TRANSPORT_PROTOCOL" can be "FC" or "FIBRE" for fibrechannel, - # "ISCSI" for iSCSI, or "" for autoselection. - # Allowed values: - # "FC" - Fiber Channel protocol - # "FIBER" - Fiber Channel protocol - # "ISCSI" - iSCSI protocol - # "" - Automatic selection of transport protocol - # Default value: "" + # "X_CSI_TRANSPORT_PROTOCOL" can be "FC" or "FIBRE" for fibrechannel, + # "ISCSI" for iSCSI, or "" for autoselection. + # Allowed values: + # "FC" - Fiber Channel protocol + # "FIBER" - Fiber Channel protocol + # "ISCSI" - iSCSI protocol + # "" - Automatic selection of transport protocol + # Default value: "" - name: "X_CSI_TRANSPORT_PROTOCOL" value: "" - # X_CSI_POWERMAX_PROXY_SERVICE_NAME: Refers to the name of the proxy service in kubernetes - # Set this to "powermax-reverseproxy" if you are installing the proxy - # Allowed values: "powermax-reverseproxy" - # default values: "" + # X_CSI_POWERMAX_PROXY_SERVICE_NAME: Refers to the name of the proxy service in kubernetes + # Set this to "powermax-reverseproxy" if you are installing the proxy + # Allowed values: "powermax-reverseproxy" + # default values: "" - name: "X_CSI_POWERMAX_PROXY_SERVICE_NAME" value: "" - # X_CSI_GRPC_MAX_THREADS: Defines the maximum number of concurrent grpc requests. - # Set this value to a higher number (max 50) if you are using the proxy - # Allowed values: n, where n > 4 - # default values: None + # X_CSI_GRPC_MAX_THREADS: Defines the maximum number of concurrent grpc requests. + # Set this value to a higher number (max 50) if you are using the proxy + # Allowed values: n, where n > 4 + # default values: None - name: "X_CSI_GRPC_MAX_THREADS" value: "4" - node: + sideCars: + # Uncomment the following to install 'external-health-monitor' sidecar to enable health monitor of CSI volumes from Controller plugin. + # Also set the env variable controller.envs.X_CSI_HEALTH_MONITOR_ENABLED to "true" for controller plugin. + # Also set the env variable node.envs.X_CSI_HEALTH_MONITOR_ENABLED to "true" for node plugin. + #- name: external-health-monitor + # args: ["--monitor-interval=300s"] + + controller: envs: - # X_CSI_POWERMAX_ISCSI_ENABLE_CHAP: Determine if the driver is going to configure + # X_CSI_HEALTH_MONITOR_ENABLED: Determines if the controller plugin will monitor health of CSI volumes- volume status, volume condition + # Install the 'external-health-monitor' sidecar accordingly. + # Allowed values: + # true: enable checking of health condition of CSI volumes + # false: disable checking of health condition of CSI volumes + # Default value: false + - name: X_CSI_HEALTH_MONITOR_ENABLED + value: "false" + node: + envs: + # X_CSI_POWERMAX_ISCSI_ENABLE_CHAP: Determine if the node plugin is going to configure # ISCSI node databases on the nodes with the CHAP credentials # If enabled, the CHAP secret must be provided in the credentials secret # and set to the key "chapsecret" @@ -280,6 +297,13 @@ spec: # Default value: "false" - name: "X_CSI_POWERMAX_ISCSI_ENABLE_CHAP" value: "false" + # X_CSI_HEALTH_MONITOR_ENABLED: Enable/Disable health monitor of CSI volumes from node plugin- volume usage, volume condition + # Allowed values: + # true: enable checking of health condition of CSI volumes + # false: disable checking of health condition of CSI volumes + # Default value: false + - name: X_CSI_HEALTH_MONITOR_ENABLED + value: "false" --- apiVersion: v1 kind: ConfigMap @@ -299,3 +323,32 @@ Note: only present with `dell-csi-helm-installer`. - `Kubelet config dir path` is not yet configurable in case of Operator based driver installation. - Also, snapshotter and resizer sidecars are not optional to choose, it comes default with Driver installation. + +## Volume Health Monitoring +This feature is introduced in CSI Driver for PowerMax version 2.2.0. + +### Operator based installation +Volume Health Monitoring feature is optional and by default this feature is disabled for drivers when installed via operator. + +To enable this feature, set `X_CSI_HEALTH_MONITOR_ENABLED` to `true` in the driver manifest under controller and node section. Also, install the `external-health-monitor` from `sideCars` section for controller plugin. +To get the volume health state `value` under controller should be set to true as seen below. To get the volume stats `value` under node should be set to true. + + # Install the 'external-health-monitor' sidecar accordingly. + # Allowed values: + # true: enable checking of health condition of CSI volumes + # false: disable checking of health condition of CSI volumes + # Default value: false + controller: + envs: + - name: X_CSI_HEALTH_MONITOR_ENABLED + value: "true" + node: + envs: + # X_CSI_HEALTH_MONITOR_ENABLED: Enable/Disable health monitor of CSI volumes from node plugin - volume usage + # Allowed values: + # true: enable checking of health condition of CSI volumes + # false: disable checking of health condition of CSI volumes + # Default value: false + - name: X_CSI_HEALTH_MONITOR_ENABLED + value: "true" +``` \ No newline at end of file diff --git a/content/v3/csidriver/installation/operator/powerstore.md b/content/v3/csidriver/installation/operator/powerstore.md index 8fb2f30f95..ae60025943 100644 --- a/content/v3/csidriver/installation/operator/powerstore.md +++ b/content/v3/csidriver/installation/operator/powerstore.md @@ -5,7 +5,7 @@ description: > --- ## Installing CSI Driver for PowerStore via Operator -The CSI Driver for Dell EMC PowerStore can be installed via the Dell CSI Operator. +The CSI Driver for Dell PowerStore can be installed via the Dell CSI Operator. To deploy the Operator, follow the instructions available [here](../). @@ -30,8 +30,10 @@ Kubernetes Operators make it easy to deploy and manage the entire lifecycle of c password: "password" # password for connecting to API skipCertificateValidation: true # indicates if client side validation of (management)server's certificate can be skipped isDefault: true # treat current array as a default (would be used by storage classes without arrayID parameter) - blockProtocol: "auto" # what SCSI transport protocol use on node side (FC, ISCSI, None, or auto) + blockProtocol: "auto" # what SCSI transport protocol use on node side (FC, ISCSI, NVMeTCP, None, or auto) nasName: "nas-server" # what NAS should be used for NFS volumes + nfsAcls: "0777" # (Optional) defines permissions - POSIX mode bits or NFSv4 ACLs, to be set on NFS target mount directory. + # NFSv4 ACls are supported for NFSv4 shares on NFSv4 enabled NAS servers only. POSIX ACLs are not supported and only POSIX mode bits are supported for NFSv3 shares. ``` Change the parameters with relevant values for your PowerStore array. @@ -56,22 +58,123 @@ Kubernetes Operators make it easy to deploy and manage the entire lifecycle of c ``` 4. Create a Custom Resource (CR) for PowerStore using the sample files provided [here](https://github.com/dell/dell-csi-operator/tree/master/samples). + +Below is a sample CR: + +```yaml +apiVersion: storage.dell.com/v1 +kind: CSIPowerStore +metadata: + name: test-powerstore + namespace: test-powerstore +spec: + driver: + configVersion: v2.2.0 + replicas: 2 + dnsPolicy: ClusterFirstWithHostNet + forceUpdate: false + fsGroupPolicy: ReadWriteOnceWithFSType + common: + image: "dellemc/csi-powerstore:v2.2.0" + imagePullPolicy: IfNotPresent + envs: + - name: X_CSI_POWERSTORE_NODE_NAME_PREFIX + value: "csi" + - name: X_CSI_FC_PORTS_FILTER_FILE_PATH + value: "/etc/fc-ports-filter" + sideCars: + - name: external-health-monitor + args: ["--monitor-interval=60s"] + + controller: + envs: + - name: X_CSI_HEALTH_MONITOR_ENABLED + value: "false" + - name: X_CSI_NFS_ACLS + value: "0777" + nodeSelector: + node-role.kubernetes.io/master: "" + tolerations: + - key: "node-role.kubernetes.io/master" + operator: "Exists" + effect: "NoSchedule" + + node: + envs: + - name: "X_CSI_POWERSTORE_ENABLE_CHAP" + value: "true" + - name: X_CSI_HEALTH_MONITOR_ENABLED + value: "false" + nodeSelector: + node-role.kubernetes.io/worker: "" + + tolerations: + - key: "node-role.kubernetes.io/worker" + operator: "Exists" + effect: "NoSchedule" +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: powerstore-config-params + namespace: test-powerstore +data: + driver-config-params.yaml: | + CSI_LOG_LEVEL: "debug" + CSI_LOG_FORMAT: "JSON" +``` + 5. Users must configure the parameters in CR. The following table lists the primary configurable parameters of the PowerStore driver and their default values: - | Parameter | Description | Required | Default | - | --------- | ----------- | -------- |-------- | - | replicas | Controls the number of controller pods you deploy. If the number of controller pods is greater than the number of available nodes, the excess pods will be pending state till new nodes are available for scheduling. Default is 2 which allows for Controller high availability. | Yes | 2 | - | namespace | Specifies namespace where the drive will be installed | Yes | "test-powerstore" | - | ***Common parameters for node and controller*** | - | X_CSI_POWERSTORE_NODE_NAME_PREFIX | Prefix to add to each node registered by the CSI driver | Yes | "csi-node" - | X_CSI_FC_PORTS_FILTER_FILE_PATH | To set path to the file which provides a list of WWPN which should be used by the driver for FC connection on this node | No | "/etc/fc-ports-filter" | - | ***Controller parameters*** | - | X_CSI_POWERSTORE_EXTERNAL_ACCESS | allows specifying additional entries for hostAccess of NFS volumes. Both single IP address and subnet are valid entries | No | " "| - | ***Node parameters*** | - | X_CSI_POWERSTORE_ENABLE_CHAP | Set to true if you want to enable iSCSI CHAP feature | No | false | +| Parameter | Description | Required | Default | +| --------- | ----------- | -------- |-------- | +| replicas | Controls the number of controller pods you deploy. If the number of controller pods is greater than the number of available nodes, the excess pods will be pending state till new nodes are available for scheduling. Default is 2 which allows for Controller high availability. | Yes | 2 | +| namespace | Specifies namespace where the drive will be installed | Yes | "test-powerstore" | +| fsGroupPolicy | Defines which FS Group policy mode to be used, Supported modes `None, File and ReadWriteOnceWithFSType` | No |"ReadWriteOnceWithFSType"| +| ***Common parameters for node and controller*** | +| X_CSI_POWERSTORE_NODE_NAME_PREFIX | Prefix to add to each node registered by the CSI driver | Yes | "csi-node" +| X_CSI_FC_PORTS_FILTER_FILE_PATH | To set path to the file which provides a list of WWPN which should be used by the driver for FC connection on this node | No | "/etc/fc-ports-filter" | +| ***Controller parameters*** | +| X_CSI_POWERSTORE_EXTERNAL_ACCESS | allows specifying additional entries for hostAccess of NFS volumes. Both single IP address and subnet are valid entries | No | " "| +| X_CSI_NFS_ACLS | Defines permissions - POSIX mode bits or NFSv4 ACLs, to be set on NFS target mount directory. | No | "0777" | +| ***Node parameters*** | +| X_CSI_POWERSTORE_ENABLE_CHAP | Set to true if you want to enable iSCSI CHAP feature | No | false | 6. Execute the following command to create PowerStore custom resource:`kubectl create -f `. The above command will deploy the CSI-PowerStore driver. - After that the driver should be installed, you can check the condition of driver pods by running `kubectl get all -n ` +## Volume Health Monitoring + +Volume Health Monitoring feature is optional and by default this feature is disabled for drivers when installed via operator. +To enable this feature, add the below block to the driver manifest before installing the driver. This ensures to install external +health monitor sidecar. To get the volume health state value under controller should be set to true as seen below. To get the +volume stats value under node should be set to true. + ```yaml + sideCars: + # Uncomment the following to install 'external-health-monitor' sidecar to enable health monitor of CSI volumes from Controller plugin. + # Also set the env variable controller.envs.X_CSI_HEALTH_MONITOR_ENABLED to "true". + - name: external-health-monitor + args: ["--monitor-interval=60s"] + controller: + envs: + # X_CSI_HEALTH_MONITOR_ENABLED: Enable/Disable health monitor of CSI volumes from Controller plugin- volume status, volume condition. + # Install the 'external-health-monitor' sidecar accordingly. + # Allowed values: + # true: enable checking of health condition of CSI volumes + # false: disable checking of health condition of CSI volumes + # Default value: false + - name: X_CSI_HEALTH_MONITOR_ENABLED + value: "false" + node: + envs: + # X_CSI_HEALTH_MONITOR_ENABLED: Enable/Disable health monitor of CSI volumes from node plugin- volume usage, volume condition + # Allowed values: + # true: enable checking of health condition of CSI volumes + # false: disable checking of health condition of CSI volumes + # Default value: false + - name: X_CSI_HEALTH_MONITOR_ENABLED + value: "false" + ``` + ## Dynamic Logging Configuration This feature is introduced in CSI Driver for unity version 2.0.0. @@ -85,4 +188,4 @@ kubectl edit configmap -n csi-powerstore powerstore-config-params ``` **Note** : 1. "Kubelet config dir path" is not yet configurable in case of Operator based driver installation. - 2. Also, snapshotter and resizer sidecars are not optional to choose, it comes default with Driver installation. + 2. Also, snapshotter and resizer sidecars are not optional to choose, it comes default with Driver installation. diff --git a/content/v3/csidriver/installation/operator/unity.md b/content/v3/csidriver/installation/operator/unity.md index f11b998c2f..93c0bb0f2f 100644 --- a/content/v3/csidriver/installation/operator/unity.md +++ b/content/v3/csidriver/installation/operator/unity.md @@ -19,7 +19,7 @@ The following table lists driver configuration parameters for multiple storage a | password | Password for accessing Unity system | true | - | | restGateway | REST API gateway HTTPS endpoint Unity system| true | - | | arrayId | ArrayID for Unity system | true | - | -| isDefaultArray | An array having isDefaultArray=true is for backward compatibility. This parameter should occur once in the list. | false | false | +| isDefaultArray | An array having isDefaultArray=true is for backward compatibility. This parameter should occur once in the list. | true | - | Ex: secret.yaml @@ -41,7 +41,7 @@ Ex: secret.yaml ``` -`kubectl create secret generic unity-creds -n unity --from-file=config=secret.secret` +`kubectl create secret generic unity-creds -n unity --from-file=config=secret.yaml` Use the following command to replace or update the secret @@ -81,9 +81,11 @@ Users should configure the parameters in CR. The following table lists the prima | ***Controller parameters*** | | | | | X_CSI_MODE | Driver starting mode | No | controller | | X_CSI_UNITY_AUTOPROBE | To enable auto probing for driver | No | true | + | X_CSI_HEALTH_MONITOR_ENABLED | Enable/Disable health monitor of CSI volumes from Controller plugin | No | | | ***Node parameters*** | | | | | X_CSI_MODE | Driver starting mode | No | node | | X_CSI_ISCSI_CHROOT | Path to which the driver will chroot before running any iscsi commands. | No | /noderoot | + | X_CSI_HEALTH_MONITOR_ENABLED | Enable/Disable health monitor of CSI volumes from Node plugin | No | | | ### Example CR for Unity Refer samples from [here](https://github.com/dell/dell-csi-operator/tree/master/samples). Below is an example CR: @@ -95,18 +97,80 @@ metadata: namespace: test-unity spec: driver: - configVersion: v2.0.0 + configVersion: v2.2.0 replicas: 2 dnsPolicy: ClusterFirstWithHostNet forceUpdate: false common: - image: "dellemc/csi-unity:v2.0.0" + image: "dellemc/csi-unity:v2.2.0" imagePullPolicy: IfNotPresent sideCars: - name: provisioner args: ["--volume-name-prefix=csiunity","--default-fstype=ext4"] - name: snapshotter args: ["--snapshot-name-prefix=csiunitysnap"] + # Enable/Disable health monitor of CSI volumes from node plugin. Provides details of volume usage. + # - name: external-health-monitor + # args: ["--monitor-interval=60s"] + + controller: + envs: + # X_CSI_ENABLE_VOL_HEALTH_MONITOR: Enable/Disable health monitor of CSI volumes from Controller plugin. Provides details of volume status and volume condition. + # As a prerequisite, external-health-monitor sidecar section should be uncommented in samples which would install the sidecar + # Allowed values: + # true: enable checking of health condition of CSI volumes + # false: disable checking of health condition of CSI volumes + # Default value: false + - name: X_CSI_HEALTH_MONITOR_ENABLED + value: "false" + + # nodeSelector: Define node selection constraints for controller pods. + # For the pod to be eligible to run on a node, the node must have each + # of the indicated key-value pairs as labels. + # Leave as blank to consider all nodes + # Allowed values: map of key-value pairs + # Default value: None + # Examples: + # node-role.kubernetes.io/master: "" + nodeSelector: + # node-role.kubernetes.io/master: "" + + # tolerations: Define tolerations for the controllers, if required. + # Leave as blank to install controller on worker nodes + # Default value: None + tolerations: + # - key: "node-role.kubernetes.io/master" + # operator: "Exists" + # effect: "NoSchedule" + + node: + envs: + # X_CSI_HEALTH_MONITOR_ENABLED: Enable/Disable health monitor of CSI volumes from node plugin - volume usage + # Allowed values: + # true: enable checking of health condition of CSI volumes + # false: disable checking of health condition of CSI volumes + # Default value: false + - name: X_CSI_HEALTH_MONITOR_ENABLED + value: "false" + # nodeSelector: Define node selection constraints for node pods. + # For the pod to be eligible to run on a node, the node must have each + # of the indicated key-value pairs as labels. + # Leave as blank to consider all nodes + # Allowed values: map of key-value pairs + # Default value: None + # Examples: + # node-role.kubernetes.io/master: "" + nodeSelector: + # node-role.kubernetes.io/master: "" + + # tolerations: Define tolerations for the controllers, if required. + # Leave as blank to install controller on worker nodes + # Default value: None + tolerations: + # - key: "node-role.kubernetes.io/master" + # operator: "Exists" + # effect: "NoSchedule" + --- apiVersion: v1 kind: ConfigMap @@ -118,7 +182,7 @@ data: CSI_LOG_LEVEL: "info" ALLOW_RWO_MULTIPOD_ACCESS: "false" MAX_UNITY_VOLUMES_PER_NODE: "0" - SYNC_NODE_INFO_TIME_INTERVAL: "0" + SYNC_NODE_INFO_TIME_INTERVAL: "15" TENANT_NAME: "" ``` @@ -165,11 +229,11 @@ To enable this feature, add the below block to the driver manifest before instal node: envs: - # X_CSI_ENABLE_VOL_HEALTH_MONITOR: Enable/Disable health monitor of CSI volumes from node plugin - volume usage + # X_CSI_HEALTH_MONITOR_ENABLED: Enable/Disable health monitor of CSI volumes from node plugin - volume usage # Allowed values: # true: enable checking of health condition of CSI volumes # false: disable checking of health condition of CSI volumes # Default value: false - - name: X_CSI_ENABLE_VOL_HEALTH_MONITOR + - name: X_CSI_HEALTH_MONITOR_ENABLED value: "false" ``` diff --git a/content/v3/csidriver/installation/test/powerflex.md b/content/v3/csidriver/installation/test/powerflex.md index d5c3d106b9..60890928ed 100644 --- a/content/v3/csidriver/installation/test/powerflex.md +++ b/content/v3/csidriver/installation/test/powerflex.md @@ -6,7 +6,7 @@ description: Tests to validate PowerFlex CSI Driver installation This section provides multiple methods to test driver functionality in your environment. -**Note**: To run the test for CSI Driver for Dell EMC PowerFlex, install Helm 3. +**Note**: To run the test for CSI Driver for Dell PowerFlex, install Helm 3. ## Test deploying a simple pod with PowerFlex storage @@ -91,7 +91,7 @@ The `snaptest.sh` script will create a snapshot using the definitions in the `sn *NOTE:* The `snaptest.sh` shell script creates the snapshots, describes them, and then deletes them. You can see your snapshots using `kubectl get volumesnapshot -n helmtest-vxflexos`. -Notice that this _VolumeSnapshot_ class has a reference to a _snapshotClassName: vxflexos-snapclass_. The CSI Driver for Dell EMC PowerFlex installation does not create this class. You will need +Notice that this _VolumeSnapshot_ class has a reference to a _snapshotClassName: vxflexos-snapclass_. The CSI Driver for Dell PowerFlex installation does not create this class. You will need to create instance of _VolumeSnapshotClass_ from one of default samples in `samples/volumesnapshotclass' directory. ## Test restoring from a snapshot diff --git a/content/v3/csidriver/installation/test/powermax.md b/content/v3/csidriver/installation/test/powermax.md index 9c0bd6109e..01b87aca59 100644 --- a/content/v3/csidriver/installation/test/powermax.md +++ b/content/v3/csidriver/installation/test/powermax.md @@ -6,9 +6,9 @@ description: Tests to validate PowerMax CSI Driver installation This section provides multiple methods to test driver functionality in your environment. The tests are validated using bash as the default shell. -**Note**: To run the test for CSI Driver for Dell EMC PowerMax, install Helm 3. +**Note**: To run the test for CSI Driver for Dell PowerMax, install Helm 3. -The _csi-powermax_ repository includes examples of how you can use CSI Driver for Dell EMC PowerMax. The shell scripts are used to automate the installation and uninstallation of helm charts for the creation of Pods with a different number of volumes in a given namespace using the storageclass provided. To test the installation of the CSI driver, perform these tests: +The _csi-powermax_ repository includes examples of how you can use CSI Driver for Dell PowerMax. The shell scripts are used to automate the installation and uninstallation of helm charts for the creation of Pods with a different number of volumes in a given namespace using the storageclass provided. To test the installation of the CSI driver, perform these tests: - Volume clone test - Volume test - Snapshot test @@ -83,3 +83,91 @@ Application prefix is the name of the application that can be used to group the ApplicationPrefix: ``` >Note: Supported length of storage group for PowerMax is 64 characters. Storage group name is of the format "csi-`clusterprefix`-`application prefix`-`SLO name`-`SRP name`-SG". Based on the other inputs like clusterprefix,SLO name and SRP name maximum length of the ApplicationPrefix can vary. + +## Consuming existing volumes with static provisioning + +Use this procedure to consume existing volumes with static provisioning. + +1. Open your Unisphere for Powermax, and take a note of volume-id. +2. Create PersistentVolume and use this volume-id as a volumeHandle in the manifest. Modify other parameters according to your needs. +3. In the following example, storage class is assumed as 'powermax', cluster prefix as 'ABC' and volume's internal name as '00001', array ID as '000000000001', volume ID as '1abc23456'. The volume-handle should be in the format of `csi`-`clusterPrefix`-`volumeNamePrefix`-`id`-`arrayID`-`volumeID`. + +```yaml +apiVersion: v1 +kind: PersistentVolume +metadata: + name: pvol + namespace: test +spec: + accessModes: + - ReadWriteOnce + capacity: + storage: 8Gi + csi: + driver: csi-powermax.dellemc.com + volumeHandle: csi-ABC-pmax-1abc23456-000000000001-00001 + persistentVolumeReclaimPolicy: Retain + storageClassName: powermax + volumeMode: Filesystem +``` + +3. Create PersistentVolumeClaim to use this PersistentVolume. + +```yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: pvc + namespace: test +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 8Gi + storageClassName: powermax + volumeMode: Filesystem + volumeName: pvol +``` + +4. Then use this PVC as a volume in a pod. + +```yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: powermaxtest + namespace: test +--- +kind: StatefulSet +apiVersion: apps/v1 +metadata: + name: powermaxtest + namespace: test +spec: + selector: + matchLabels: + app: powermaxtest + serviceName: staticprovisioning + template: + metadata: + labels: + app: powermaxtest + spec: + serviceAccount: powermaxtest + containers: + - name: test + image: docker.io/centos:latest + command: [ "/bin/sleep", "3600" ] + volumeMounts: + - mountPath: "/data" + name: pvc + volumes: + - name: pvc + persistentVolumeClaim: + claimName: pvc +``` + +5. After the pod becomes `Ready` and `Running`, you can start to use this pod and volume. + +>Note: CSI driver for PowerMax will create the necessary objects like Storage group, HostID and Masking View. They must not be created manually. diff --git a/content/v3/csidriver/installation/test/powerscale.md b/content/v3/csidriver/installation/test/powerscale.md index 7d47368830..96dedccdbf 100644 --- a/content/v3/csidriver/installation/test/powerscale.md +++ b/content/v3/csidriver/installation/test/powerscale.md @@ -6,7 +6,7 @@ description: Tests to validate PowerScale CSI Driver installation This section provides multiple methods to test driver functionality in your environment. -**Note**: To run the test for CSI Driver for Dell EMC PowerScale, install Helm 3. +**Note**: To run the test for CSI Driver for Dell PowerScale, install Helm 3. ## Test deploying a simple pod with PowerScale storage diff --git a/content/v3/csidriver/installation/test/unity.md b/content/v3/csidriver/installation/test/unity.md index d675756696..95998ad511 100644 --- a/content/v3/csidriver/installation/test/unity.md +++ b/content/v3/csidriver/installation/test/unity.md @@ -4,6 +4,7 @@ linktitle: Unity description: Tests to validate Unity CSI Driver installation --- +## Test deploying a simple Pod and Pvc with Unity storage In the repository, a simple test manifest exists that creates three different PersistentVolumeClaims using default NFS and iSCSI and FC storage classes and automatically mounts them to the pod. **Steps** @@ -26,3 +27,13 @@ You can find all the created resources in `test-unity` namespace. ```bash kubectl delete -f ./test/sample.yaml ``` + +## Support for SLES 15 SP2 + +The CSI Driver for Dell Unity requires the following set of packages installed on all worker nodes that run on SLES 15 SP2. + +- open-iscsi **open-iscsi is required in order to make use of iSCSI protocol for provisioning** +- nfs-utils **nfs-utils is required in order to make use of NFS protocol for provisioning** +- multipath-tools **multipath-tools is required in order to make use of FC and iSCSI protocols for provisioning** + +After installing open-iscsi, ensure "iscsi" and "iscsid" services have been started and /etc/isci/initiatorname.iscsi is created and has the host initiator id. The pre-requisites are mandatory for provisioning with the iSCSI protocol to work. diff --git a/content/v3/csidriver/partners/ophub1.png b/content/v3/csidriver/partners/ophub1.png index 5a728c655969dfc29ad35140fdc541f354e14030..b86e59cd20abf238d6978cfbc8bc08e34cccef22 100644 GIT binary patch literal 360494 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

k3 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

oZ5BF>$4?*OV$38ng z{V?UkRRP|o2fy_}O~&-U_GV8dS~~!RWF|D4(;b|RSlH3T_ZqgUb&_W*didc=+=%2( zHn)gBX(Mjkmi`RuaVjO^QiM-VvHuYgtjgL<)gtvBz*9}ir*OHvRz z+92P4=C9eVkuj)`h4rqtO^f>h+%pFTrpF*u338-6E5RZO5bSM=_RdO#+833=-`^H2 z`dsIKyWhjxa`8c_)vWd@Q=n1U{gz&mPSHmXO>(WNPc7B+YfnZw zEuCI9Z*1)_cf&GbgHK3rd>Q)M$UYJ<4%Qh~y2|d#{lu+-L07`Dqz&`Q47H;6W#iZU zYWI65-k5<~UXm_WC)#_EC-meAFaM0{C$k#>QOkO}i=-vq`uN>f1~M2s>cu&jC2uzQ zH{jn=!Rkp1#Zky21f@GOS~Y9X>O;ZP^cHZ2w}bL3M&y$9z*324JAtX(3wEg<&k}bu ziU{snpUV3m`Y<1gZtWI5W59%>$`LgXbr6twcVrM2Q);_>|F%J-y6k zGvI*_5yh66>zF7de6%a`ue~a zx00)80G5$YrtFPMGcRQF&vtH-Ib8ekaE#jk2$n{&(G(1%ER&zW0Dz>$BjqaJz>z?j>aU2G(2JV=TjHdJcdgMvs8Z_*a%Z`bz;9 ze?&JEe8>7&%!9qMxUqvFb4J+{X&=howC+kBwKQ$VT~3v8a{QPuym< zWFbW#CDDrH7qZTgPXe%ewc`7Qge^QVNmXZx{m5m2fX7x$4tAcdF>nL~G46#r@nQR` zLe}+uyxSx%b)aqV{A_x~r(95uRdSZB+p$QUib6~ zJ_^RE7T~uJxHx>A{%QvVb;JhUg{IF zh!e~zv#Jml%tH)^>e+U)B(r8hB0pY?ay3v2^-V$-h$p{2PYPXKUx~DPNWVIqtSzme zkN8!Kb319*Me-P2!Eom}f4nM0Z4?Zq+!M>>C%9*1MdrFp8sO)|yXK6|faq)hl+I>{ zx>|qYkk^nuok%QH7Hxf)ia{+g(}`4Ed{N4#jqcWFA9~UKKG3{_LR~n2l1+U1EZnzj z*3{SgQ_9guf)yVCh#7kJ6yK}Av3BCp1n9^uW zzS*Zf71C}%I-4H{qMY~#{8291)b5FG*yS5+%+Yy1_MOFH&Jf|D+ z5}gK&CYVAzKCcx)q1->^bzr67+1KSynXAsc&g`O;x7BNKq+?t@m+!9KQ3k%Z+o9$T zE>)_VH`iZSnU(7IdeKSXPOSjQF}s3`-C&E~%_N|Z+9bKeMx}3qSj%&gMkNzMyCe+%d!oa9q`K(j%$5<*OdG*AvI~Zpmyf@c7pK z6l2O=2*@a;abB1Ucbrk*iogq-w56*w^$Ud`F`?~Q8&0!PiNZ$oL^y}E{2Z}l(7f8g zJBN4A{kvBF)kn~wC&CYmqF+ALM)(wG?;lJ!^9fi3_#yD-8KVSfIQ+cPdhpXqZ2fHQ zH6ShHxkyE(qXl|TGZ7jIip+X0@f6Da2#TyuX+p0_($TEU&+RxgH#L$;g=+_LKe}eA zr%DN@|MU-5s!lk}c1*N9Mn4KoF%F5uR@nk9OiIum8A>&nupHl6GH|nEERh7Xzdis@ zwBfib{D^Vj^sAukGPUuO;z@gQU}H8<(r&M;2uUmJ^-U`(9^aUPH%ab9j_4Lf@4|gH zNZKjkcC((WxE3?qOvc6)hND@=$h4*T%uCQ)J^`@k05i>INn$IjAXpsu6_-BW%T5Xug6*(G28n5NF<1*Yz&ao7=gLgPXKvo>j22xHYqnr#SkLLLh~F zznz3p$D}7}R(Wa&{CilNQ-vpAjNKHoQQu`lb|L#k!l{y7li`{E^#o|KLj5;9@E*7pP$?Vtfkge21uE!j>`FCE&NRlUJ zDi*(Bn!yK#INmp_YWx}N3*e&Jj{`BCE3oNM^pjy3pZ;ND52GpSnHMy-vuM+ly$Q+O z6(6*pEZJ$Gk`rqWN9pJF%!B4#!4*0<0$>dmKhJLgVfM7>wFnSO<Mb$F{@-f0 znPqS`*iYRSE(>BRM}NK~l<5FO0pK6=4D+BOF+8!tCkH$flYjXv#9v4qt|#k{03vxp-hY%K9?{p;_FDED`S;hc!AGXCST2WwQQ0w*(Dzf`qol$}pL71Lzvo@6dBV|VyNl{ljLO1+0&(n>vXBDfb_!ku3q z%`I;|7FdVhW^y<_ycNJ}!Y@YS+{s8tG)(wN~r6NGLye|AA8gw`qyHWbi^)DxE z_Ke5nf<-GJ6~@W>Kkxea+(``6z448XS`X}T7$!2Xt^@iKB|-V>4=I_HS0Q2`Ljy5# zY~T~wbDPCkG-GCGpM)@09&59kp#iF6!Q*F#g@)nigLNy~~ky{yTX6-m{c3H_iQ*&LHAYlb?kBd`muM&eOpc$n5XaKVD>MMTo8EofledZ1so%Uelu5{%(1Eg+hf7Ct2pJOkg(5(pD_~& zYxv1GX>G558hak8NAt`>ym*l~$OjL`%YtE|&z9s_+5cYNg4J^9e;eht%3l3v= zj1&ZhpD3-oWvA3jG5Ce{AX_%Aaz*Ux*FlBP3p4>{-bUx%xX$;P(C~R~7@QtPhr6N$ z+<`l}w2m0JrE9DVubd4Gmvcz?shxcpAiM?6EC4eYcrcuw*Z99IxiHZZx9{E1Lcg$J z-AjOyfi_NRq^pPqDu5Je6?q8MkpW$Jd|N*cWOoda+k*r-zu2qj>@XspB>0+K z8ga|tJ;n}6o}T9#_%xVT;!+Nk$xr6T!^{{F<;MrAZlEKVOcyjSuG0f4Rhmq?Hqvfp zJtmeE@J>7!iVZq(ln^;_2z|5eVIfNUX_)voR;r&GDB$f_;7EPK&r7B-H;BsFWSk_v zaIY_5v|z8l^R2{R z(9pLCU4gsb)5HyP8u%5T?8hd!Sp$~iuMU8bTYF=bxB=wrDz#pf*dUh=%RrDwwlbx~mDABo-zbbk{w&YF zH(f`|E=N*iC{JwX2p>)!I$@oA7zq4mrEc8gtks%+Y_Pc!yw>Ig07zKgG8?wwjutR@u#X!j4_ ziv>+TGXj&1A8Ge?>%Aj$7NhWF*Pky?!8iz?|QBKzRo{AcqCl39lFpxrFU+Re6JT z&=TMwPQ~%L)|!#HO=!1Ps>UVnrp04v6?=oc2iRkldzZeo(?R|_@r=;yFdy!~ds9Q+ zpE5g^EWJuOndEPBQ@FYk#3nt&Pl3F>ZMQTVA?tKY@6mUfMzEs)bBM=9{3lTXsj z`G;<*FH<}JFn2b+Xm7MD@R2-d30zd17iF-yOks(*vX+ItC&4Vs|L_sASY*!_mx$|m{NPh2FTd@b{Ooj(B54E0+W-5i zy1uVXfRgQ-(le17&SQ4wdtxJZUm7e2(Qm#fFIx0Dpr>@df63>)2sA5%R&@F2!0YUq zFz*_rl%sR)H_DQaz9E7U#bvM&KHhd70}*zNs9Cm-D&Uceb8d1aYPI&(J9~Qru1!r( zq)A6DpqVygE>!v+Y#P$CqW)obIuwY|n>^qbFxznb^9h>(lc|Gyek&pz)ER?{)2^c% zmUQ8vsOtCNG?M$3p(Hs_)KznHkLASIYOg@{6V{|ADLtVu5Ve%nVjggcne6s4^+bp~ zKkf%(bmL?xdS~4|gY5mwmG0Lf*;iJm2$&`G9GbLn$3-9Ak^$7z5qc(uw&jBEq z?^sxbGh^*-lOJ|tzi8M9JDD}%&H1p7Ca7L`iM#gOsFN4YmD|${+o)t2Qq)~p2xXzA zjd~T(jo)2mV zaIQz4nJbT4w^38B3*>xs(G|2)P%N44nV40kls~=;&LF%mCN+N}L37O?+X7ByF3$*h zjZ`sA^HMCIPNQGVG8Kdnia+s)DwU(s(B=VQ3B%_~cGg9KF)0>mArcbt(~69tpi9=( zVPLmlU@oFO8PVszcxf70b_ISTssuW1>P7U3?zvE%Gp#*uKb#mlC_CG|cYV#)ee1bWsAbi?Z-TH%X30t7XPtUsNq+|L4$ zSP0M9)d3uaAfyeXwaEiE#r|#N%|M85g33z8a%gl}mgGWoqM#}|LrcBljNeLi0=7JA zcaZzpsZ+ok!;%)^O^|^IzQv8{37#jg=zQ<5Q#{+bE$AVc=D@VhX{B2B*Wu|xkR&8P zyc$$z2RmeDx4g&UK5E%o{@Xfur22CX&(DtP^K_$yKe~;^D&YFAtD7wrTJHiuy2!q05 z6~5s;0?QAoF{H8kKtmVSf`R!~@uAY7+g&A-4FCWffte+E@JlZ*%{a`j+S^ zYxZ9KQu%q}|J>U9g4e#T8fyxQ$p(1ob@c5PF|)HlZRb48n$cq$ULe_FO15nOaDGd8 za$;qnL@d51(ytr@pcKO%r9mMYg+IV#3oY2`sy$kZGN^*1Bf8AG-P8O9PsVjnpr1!p z{*psqpV*a5!eydw1RQ&9%@wzuO$|&vb39=uNy!Q~J4#2L`G_;L(ESZ97#m{BejH@b zT}%vuJe2gJe4~1UR*_>}{Is*8+c>F|jmcK7H+=zS1RVG@-OLh~uA~W$96=kYIR>Z+ zkWIe|{E?PLAf^Ep^H#5)HDvf#q~*NH95BFlcuV{-3luD7G>t6FigEwI&hjphLD$bk z2gGF0rMkXk28fhDC0crHkvZ~uTq~K{w%M)CW^&p$7RhigiC9C4xRDL))1HUsrkI4T z>8eKI!Y-?|*y2&EtI|hwt1~=2T=h^pVwv9qdrS+_r>Pk*E67bVM$^@Fc$WGn?J&6_ zl&=R_auRz90cv}PYV))RfySTR(^L>1f$zXZ&+GS(D_vT3ab-7rE=$>75S%go^t zT)CReC>Y(|)#QWkAp>+bVH~l7_vf*R?y(;jzc5@89|woDjG0ykyvIj!YXDhFS98Op z{!|mI>V}gU#NIDX#>V$ZO!k^l?1<9F4QYW5w%^zvFeZha@j1P&)G54`eCa>*Qyk@w$E z6f*HEAB}J=>IhXg`f%SoZha0Q`gyA0&wyvET4gW@aOM7twbZW7ANxp;P5#a3C#v6A6GF5ssU3$r43`x;g8dr4saMq3%@mXif4g@k z6kziHMY0`CK9U2dEIdc-$6w@=EzdzJeA;)AyrbMv?L;pL49fc%CxM1wAEvPES29Mg zi&R0gLx{ER(?Ikj{%2Hy+W<;eoZ%9+=X|0}Vu z8)Kky4m{HyJxEvc!vE zdT&?QH2@@>mQ{!y`)(8CMr3~QJR62%D+37Sod#7G1M3ifOBMlrc9L2~}_{nII_gxwRnMFH9Q z$otg#>{~7E+in<#j?&P{(UM2l2&TkgH!?ssWBj8O8mh8?s@l%DnLeze>;Oi|cf>l9vRJ2tsX z$y?32BRJ`xM7DD6(|3Ed?qo0X!hv=uzcjD#D~e?LzKj4<$M`cx5#l7-%uE+_4Fg%g z4XcstlH@+IaAlwmNGVRRzIZ$#noAqT<5$|Xi9NyN=deatcj>tR8V|9HSN8@Z95T0? z2+tJ2hohIbRQ-(SuUcJ_(j}`_kNK_YviM{6ZONf^(YD84q|F*WG>G{YW3akI551Ax z5ECS44qzpW2w#7do-K<;=Y58eEqUUP`~>%h;-OJ_WvQW;%9ICE?2H1+3tu%V*>JJ8 zpF&ri7aA20-AZ>UQ+Mw=4Qw&y55BIyy;zC%Mqp7?Q66({meN7bF1z}EH(V6 zLTXAxYfORQ@zyX2_V{9f(fy^G;FSo5erWsrs*&}UlmG`o4aJ7TgwM`|;aBLi;}S<6 zvRJ(y1wZ$1xWsU%3-aSsbNWiD>5TDw@$A6jo&bT{^9_r6EEfDhiY3Ym7tc&pmK>Id z$LI!aL*>I@UH;t{F83oWCX{8++z?bSgyCN`-z$YI_-PhIghX+lGV^p!O;?>sK4qKu zRR~N>aN{Ns+Zc*cM^&MnbYV!+r2ZuP0r9!p@Y%*f>gOXnZwzhwO#>9CQ-9NU&Jx1e zLJT9YJ(2vpLDJ)41tIGgp7t{J*c)E|T79>-6(4Zw@YwtVc}!A4ALZpZ-HX3<0_uCv zXT`_jW4x4?FR0`rc3#-b?`vBZ>K&C1myz4;In0-I#%E1sr{e$$n{qC|eAXq_z9^gF za=ED-IV(&&R|viicz$59AKP*)cqIi3!catd{@={t0KN`YjC_D%gWtuu2L{jzFx`|F z_TZJJQ?2X(Cjc}*`A&d}=Vt8DdgO}N=dx3ZLK-C2!MfOr6t^yzsy)xP_Wx*0%h4LH zT7)c;z2vR+-}d>=Vv6tAgBXdvAs_#J9@)yV0f;Uo(CYZP$Hbj5ELfPm?FFoW|KJ9D ziFynL7yM0KG`)uXlm8QzSCM|!AXs)|Dl?$pE(yS&fy?O}!8-T*u3wMPkdhzgF;2t4 z9xeYdGHSPLv_1NA5}ZUDruI9=wE;P96s8$e(4M7+$uvpJ%;xpUV=E$>k@Y-gOY;4J z%p@MbHFM#1^M^=&b6W`~Xqz6`gl8F}I1< zr0Mq9n^`tv&WZwiUH3Bk(7MVmyW+bNYbDAYw&)}|zeLsf7ujSAW~Q1Ya^@ZHaO?Ct z?rLR;+U#(wQiT>ET+M|#HlB$lvF{VVp;)R6tzy>{vv|;<}H~s z1(^C@3rw#)kpcfbZ2_#;F4S4YN#fz?{sNCdUG}_ZO8<t%nn7$|#etB+;PGnyT zT7Z%y3vn1DIVI3}e=6VluEidu6rM*56ug4!JiA4)ZpSzL#4O%}zMqdjW_rgg=XiFVwVy}?oI z4|{zaZE^7y(dVbp54F5pUXdR{A*$OWY{2b#hH1v^cub5F)A6089reL%FxUeo;Ee~e66t#{6ieq9R_bQh zeIyqVht6!N%@h|Ghn?$Pmg>icKE-=qKM-5C8WuCU5+=KDHG1Wfwi#+|^zeD55l`$! zcMG0D$5K;gS_Y4m@8C?^m#cBclnd0idXeTbeiW1&_D@FLbP9ScV3qck9ty&a77&;< zKQn4EI2u+R9kHvNTEZ{|54fjui1!*wL?P<|=@fOvj-bVOLh1;?5yH40g*i?#4!R=O z)@CF(-0$)vRKPC(wS3a$wq>C@N(Oy4o^PLwz_LYSu5zKjU@!Tj2Zbs~u1&=>0}P-z z(M6{UxM16kiZ2hf%@$~Tkbxu zB&`Jwj*z>J7N0B#81{KEtnB^`f7Sswz4L|&mKsi$#{XqFMPQ0@ZsVUggH6*o)aRS6 zA>9Qel-&b{)+_yd#^T_BUuhugC#VeIIeZsteb;U+DMYD}-fRQm{FrrZiigv>qtk!K zWhw(p!PEYqgp4l8Qq;B2N2)=<=uOETX1;RCQ!iW(fJvt5j}1`Gw|!~zhLG5?&xhDL z&u2l*mIREG+qRpzl{F9)=JSKRWaf9C4h02qscQsbkMgaD$1WMweg4j_g$Y?{3FI?N zF@@jf6IJ%>v^=R4IoRju2U~oODF`|KE8N==ngXQs+kky?mt}b%h8LTGq4tzpm)wwO zcC7m+Dif!!MccwywMdMO@muXX0x0C2oWN{8JAV`DU6He7O`v6 zffaSQ&vyj12wQS!ie+nJ>>#(MnKD)xd3OVCxGphcmlppB;w}jy<|@50oWKToFsi!4 zTD%b+O)6~SmeOpEZ0q3CsK=yC?%K149Hmsfn?@nleS+=x%@){_xlWqM!5FY`*P(Hm znpDBq8AeAVmt^Sbh3k)4<N7<3*7#{8D@<{>>LPzgcH-V>HaBWQjFQP& zxqPl?W#v*1AA5w^dW{nopu1dLLP>^m zGa{)^+Z{4CX3H@I&V)UN`!K^kdS{*5bgAzCuI= zSiINY_Gsm&@yqApMSe23Ecp_$7hwMHa^bsBwO0do`g;P5y3= z5<-)#Aa@q^gPHS&(H!jgFNHv8VosO+7zT^LSASk7O3KA|VKg+~5L zEHX-umQ)VMZoESWyWbN}1%E$_^9}o;2^uDHqng&TpHlXHYi%cw5q!*B4BOFGt5%RC z1W{JP+(m9JX!YlJLgH+zw*}K=p>r4Yo(OyHp47Gk+7U}@=m+Ya#gQrNBHL*c z6&^++t*pVbG&c}GSuatN=(We1*|x%xS)jF=HD&(Fzaj~G$M^=2%NyQ2Hy3Jr=^5b$ z(J+zy3fJ-d)$|5J^`1XlQJ?N&gpHQM5P@c~WqiM`?;H-(TD~#BX_AdSJ`>BPDrdvj z7=^i99No6(aN|N=dWdP`ydnwN7yL6g5M+j@IUa?tc?VU#^rmk0((Eks@*}Gg03S7{ zu!~uy>yX`2ckT2A3r`9&Z$ia~U!Ffx52aw0c_nm{U2ci9suAQRCGf&q3H$=e(U&_) z^6dY3NwBRt1F9-{M+SsV|NIYAuU93YO2;B^c1aD~0texO5G4`vw)CNtf^Z+v^oV`X z>1hjxYA6O0^Wid}BY-oqGA2DDnP_R4;k<;H`bX6(5&gyGJ^2sB*AYUuoN26H(MqhK z!tLoIpdEM74tIS9NCY&Cjxppv9iDYR@hBYjZ)`b#ganADL)ThLIYELVmbwdn>H8-e z3;f?nD`&624I9BfTQi&8C~p+oDGc#R0c`xh9UZ^ z$90h&8U>;;j}>?bxnEr%uo@R+3t&(_ax@vhATO@9y=Q9MpA;d{GD;`R8$4W)U!46F z0v=2@zQW&r`V%n58=mUV%rRy-=Oh{ZZ<(vhP$BR?0=!uHIftj0_m#^V-0jcgEiZz_ z3$5w4X>FaCPf)#7j&|?lPu}$SrfC#Iav|x^PUCzv^2!l>Lk?Pc;YWQoov556xO&6D zB!J2PU>~#vTfK60^^c&@wS*_tG}yS^z}Tp0EnZ&-c>%1P#r1#*`oKOB?sx&tyYu;H!9xEP=bpd_#1i*6W*{yZ z$~RX@=}JW)U#zLkl%xG?1J-5e{q_tx8e}>R4AqWaitbh92C$4QCgQ$ZWlY!H}t5>!YSD@LQ=UH_ocWzC;UC_M-xTI z+(Jk~(K#qf(8VB^^Rp0UR=@<0*7eX<*MOfVRuj5xe5vnYg$Hcaf@$V6L=fa!`PX=H_{tukC`{|cZ&^$D z9-MJ_Y?Q>$`a5<-?+W#vqVN-=^QetC#-Zyfb%FS;Iav2}qUo*u@`U`13P@&hfs>*@ zY(CM-D5WJ4FO<_Tek_1rV>s$gXUTP3o_?mmTKGfcbZ~)L^b=QDt1AgUbZqrT4a1kT zPH0G1{u^H3hBR*k+4XPoY=L*vaNi1hXzR;#0)mH3q#T|#{pw$I8FHc`MP*;8ED#Pp zhOvguvfI5+u=)M4bIyju?} zLrek*K(ll3O(OJ_XVojW6bq)ATGmNS-XQ=K-V9=#uS&q|hD&{MAOG>8=vI$qhi@62BXjjWh{-HYNteN=pYhjfi~ zSuP^QR17eFcSnxy$bkS+mY`bqeS>?Wf+vbR{_Nrx0Ci}u5xAmqNhp8@@}JdXAHO${ ze69kp8~hi6>v1UGYYFhBq^%X}3XX~1hc15aRKtiD;p+c739UbmO zG8{!NbM_}`qgPWRV_pnPb{l3wC!jIJO3mEB=lj&&Q2;^b=^30|();v0^d>y~> zI9rKqk6hKIW0^>=)?KYN5it(Jn0~Yv$Bi}Xy0kpfjyOr<7Ph(t9Dn^WzWzR$Ua#GE(q)TDpAX^xIn? zhD$^p?T^CS;X!$<6#0(X6nqlLsZ&)pUo2W_czH(Ic3c#UC8jjj{n0YDuUAu*m{d(7 z)s9+GEZwHuCsl2PP}#i?8aBpSWUn|-O2=o}`I=dmXHziWUajQ#F72E#9->dI$Q$+C zM~sIjAzk}pj&PzH3S&ECCRL-*i#vON|A;hT7zHl`+2T2Hx8e#xXglnjgb{n?8AYKJc)W^r}eIplWx6bH-8*&+)C?}*Ksm|eg0=ka^`B9;;FS}$!eq9MsR%&_Y%X3kbrEB&eZs=<4L zRO|c0qe4UNv+Ir%NGX!mkq_=Ac1OqbqqdLxL67!j1`3RGNb~M&{Sa5Nvb%&`<;IS- zA?5+A^=@6RT-wB}YcXPCt^SD8*S>}2*U6TQAz@7;$JmwFs5%ad^Ml!g$Es1*fS5qI zLtf%p#!!)PaV9WV#!Foxr2N6g7>rhz6e^?AI}d<~es8E;fJHkn=UAUFwD72nohQ^V zOQZ7OhVUh{-~zP{Tz8`BdjsTxFMW&_>LpuF+f=^?Oc)-~oCFLEXZyP_J$7BJLu0bb z1(fW}%72{UcDKA+f;vd`8=h4WMEOyn-!wwPdEA!&X{qs#Ds~M}vx#s1~<8wk+B7jVN`|g@d@$@_CDvF6t71zKHogcGMGp`gE_u40X zI8PlsukLTMVb+@8c>TX(g$-@*^H&|~4|y$&Mb>$BJ|B>u*4?47St`tbIv@48^JN3X ze?1CVSA|;BCxU}jSI+prAd%t8cYD+Lyp;ek-zmdO;>wfdi{O#Nn>CM1L~?#_Qtk~M zu(9n||2uM+?4rG5Lfca9X4n#TX>=;1^Os8;`06{(yx9v$0xMiz{Z(y?DN<5{*DEwI zc-`BP%S8YNV&Ys{#S6EjBU{8~{01NWQs2Oewj}ZSfL8AV58k|a!Y(PG?QdgvE?7tU zSXpOhERLr~oYDs!EMSr5O_FlH)Xu2UFB*c$?I9i&hjC5AUqwhCfKl4-QiNm1u>OjC zm`g3g@0Pv(2M{L7Nb&9Sg{{8?by$c8^h?M$;XC(|vUB1Vzv^BD1JeD#a~- z|K&}2_=qW1bF;qo?EKzSwq{Tekb@1 zkXaTb?NO~#d!8&>YfCwvpzcf(%@GyS$l(p9zswzCb zJ!gzV5@2#dw)HQVfk;o(HjTfv^I1o-X)}`V?^|uwYT$6}V_<|yW7#R()Zkaj zH_1-wx)|cRq`9(05%f8J%(y{)fJ1+&lKDi z<#z<~IT2n>W{oXBW6nMfv_*T2vPyNmW@JjdC?z2l$h0s`WeK%@wWKy>wjeq4uMkD| zZ9^7{Lc^#w=dHwpwAj(P;?U-@TJaJh8Vsl(l9pSQ}$3w66tnrxhT5M<5|PpqDlx zf$!UUgmvGPjpp*(ff^11wtzn@pw_xlw!gT zGhEMd@aV!CC+a$65;?NbPQZK`&tKVy+_|qmU&qFk{l{XqK8Tue&sRO8CS6|bxXajy zudZwdD91N2I~C@o8SNj|Me3jY#Qw_e^rFyhBjL(IRuLrBqB{J}0=K2G)x$uXrbC!G zG$+7eA6u(CxK3R~al7XLQ#pU(Da;B66;ge!x=-gr@Clg{){503&DS+(WQ~@cuGbA# z-;W#IbMpQ>Vxa?xTdWDHg8tcU!lNKf*Zw(M)KZeuxpSCTiK?p0(=jBM7Eaf6I=g4; z^7=8GRo6o~up-0cX=6%S#Ydh6BuOLQl)Nn(TU(_FLjK5+GBvk$?fTr+#p5xxHxr@i zejGg=0hssO;MLtc2-0RZ`|k`ZFF|^hgi%S-o{VHPtO5$H7pu%+BT5%*r~~v`Y;V@W zsW5R~#-sj>mV#-&Vxy2Q%>5Khc7k>F7b8Mo)x;=CM}ug2)6Co6glff?RGw_3vd8xu z-_NT5Oq8-KJ^^Q@qvhA>$bn_xNGbu$glDWff$Pr^Z=^2hx)UuL)xkctAbHZ z33M_9|LDljuCOEDoGJjEBATZTzWqU3p*Ua7{VWC&ssOk!r<7596*!cZ9ZApQm?!+I?Vzm8<+Le#2!=_U~kn1XL%n1VK@!zSbCRjCT&&1EGKa~gO!HHn}{ z3w2OCp4>ogaP^(=*mj3cs?Gd>+e>zp_)Bh-^Q>VUD>ps*8Y9FagIhsMV+juU*#cG< zV|%CI5@8O8TrZ1guS2meOMe9Uh>K@`mfqRB9JqEZXqegRd%WP;>`2RFrBeMw%Uc^= z6a*);5v}z!tfBmw4PW9$vSYF(q{v9`{i25vC$skxn>(w_`A+KQ->#~PZ;?pa4}mT^ zS2Cp>O}6FF#=9f>UUi_q_tBA&-}5^QY%QUT_{Sw)dq}fWb#R?7!|^56{92H_G>kYXAvWD*5iS}>T817qr$40}YUes}OkGX93&lhZLK3Gr zEbaCCtZR$5v$T!nV{3-@EtvJLLRM15o>cC-H%GFN7E9Mn5j3*lZ3*n6kp=8!+^2Q2Tv*nz%szw-qAS@T z2G;s6LCj@!Imo~09ZH!q!Rg6+vFxk#l6nXJle|nO1b9me6sIFTl47`gu@-go$bCSQ z*qq{mW{=z%aiTB4vqKkrDfoLi8@%;fW2yG}~&XRwl zd4h^4I>@5=B1$&Na)J7ERL4A5c-s7!+c6ch$ZiXJlti<^&$VsbH^xgVa+pR9hC**B z)!gE$tVLzlh%8QS{QK=iCYwremTVE3^}nRErM^oy+oBH=ZvjiO4D9nxaVhofmsnzZ zqZ1@mp#gW}J}evvnO}QI`M@Nl^DZI==9+%t?e-~h7J;qXTkS^KPW0mCX#b$jc4>iw zW?g!1?UF+`)z7RayOlz zQftmNAt{)~r@bDol^dQ-lzaHsIi>j53+F=vdxzy;c?61k!xpP$q-#E7@eFuRL^`r^%>HwI;@O{ffW~SY8lUBw9(t3b^h zp(nHYn^6p?6OumxcDLpqpB%5j76E1bVoT}IWskrtKxm!u7EOK5zo%*e7*2u24Ny&m z)3*1F+lOAJj5e*QX=Y_~DDubOtrwgykJAC!x_US8bp=4G|A=Q&oi{2qfD)pMxZdzv zHjG`8+fw=I_Z&F6Bh~Ot-N4sln_pM|sAh!6d2*`DQCrJ&Y4N+#Ty4gl8J`ODFKB*` zI~?Ux*RV3e88cFhD@yJWSIRa{x=tWASIXw{_~?fizwk}JXGM*MB^u!MONFbtto$Wa zuCMRG6b@|kL!6}Topi6sk|h;N>*$WBz!0Bq=?MUpO?(2`X|M2Pmjtfig2HuvaWCgr zJnfB;&Ye=P%$gohP~?e?K{{94m8Xx+5$rIJyVeQ_BURhEnpfAyb2}B@QqvYK!@b8c zvEVjvD5puloQgl2Ws`LLR__2fI!UhOQ_HV5MVHF6yjD@hoENM~_d0t?%Pa&fcgdlB zBU1|27GWWW+Dnpiod`-zl(KwU5=0&a&+3c2E2c}j5;o$%M77}?yMf~TJ&&~__xm?m zgOCUnpuoz$p7=dFFu1Gz66ZsYpCQY$esjpk|e z-M8d9e~RAyW0Z9lu|9O7=~m~#=HE*@q0^&1-Z*#EUK7p2ujUqVi)O2a?#tt@Jx-?6 zAktM!==3+LXb9Kanl=JtnuV528CG)=d?1-tH>M>psUOW&=XPV=PDP* z*=@cn>OYjf^0 z6-5|c^ZxXyCvIO| zf|-G~bKSSP2ZDcI%Re{zqpSuwYiz2c`@2`c`6B1c@RTNp!#ee9TSlE?P{EQ0IYjs_ z&f`3ac?SGKU*78JRYWl&LU&r=8LiFBM562cwegI6mBWb^S40cGjvAV37eW-Z4#gt_ zMo2b@HN^0ZPnAX`T)WiYw>O5bi-ePupBR?eZ29TIx+TvYxRuQ$x$ILG8BB=mKxm`2 zQA?sZxX;oduPUaW`6{O3d}h2SelOB261#;JvF3l4yaoDy7(36Xrn+z4YX~JE5I{kx zp`##(^qSC%3W^P+sdVYmO9+9e6d@oTi6CG>DT0lT)S%RW(t8O(N@x;D0^IHU{?EDR zez4m^d z#qtJ&u=5dmDoKt4hcuVNNqYO6;G8he#418 zrw(_oc^2W4pbbOku*K93?OUlG=IL>tmebFySZ0r_HaWl6zl->JSKArpyS1vTM74aV z)_)`1S2#9>%hh0sx4-<4_@7NGKSJLw&6rgteuc-zVnwUn^Ef)Vn=!`7>3yDD3g~5_ zB2UAhiMYL^sa=J5hnM&0^StCy)YxSabtj+c;MC9|)=b5isZDVV=DU&r3t!U7IDT2rca`c(>6#`#hykv| zOg5rHougX77l%(R?MYv|_T#RL>wh`PGHO*IQ8sTE2YESX1{rlB`b0dcL%Sx~v34lj z(JyxQ8rhF6#_4W-kTjxwo_?MKz5k-m4Z+5Ob<=wt&0uZu6BpRFb_ZfsI&S3oXhyG!O(ov2$rO5j0O*kz(V*; zYk>4$y(%=0zs2;+=pFKjfgx~it@Hae(8JG9L$VH;iV;j6UZ-R;wu&bNcv|qoDR6u4 zNyMPcTki>eJqr7XrZYB%Vp#2Pckx=LuE(VA02gLm#C8RzH+u&`I+kkz!Ass*f=Z{F zaW!ZIS7c-B?l6CK@jU`+^rsMH!?FD7%)>t^6|!Rm3~_bQSK*|N0N`q=Tg7tnAM{{% z?n~kHTAsX1F5nkM#yowH1Y_Zna#6IGjtN5Z?&NSbQYp3 zG1wRyT4QTRQ~Iu#Zs@e;N40Q?iQyiUn~gqRp^&_BfZ`6iX?M8m=24p8sPKss!>$=3 z6KSD9uRz4mCn6)a`KcjpWf@m?9K@m#<7YngMqY?4o{Vr*m8&4#si}*Tgf6(3@Wk!5 zBbyI74_}7K`bizp%Pa?J`X35BANLNMiDcgH?oqwuC#1}|z)93^xLD6C-RHL+B`o{B zJjOlt(@RSA)*+4%rvGr_al}F!cjzC3lsmKYf1B3D!mr5LJTjLvFWoZ4 z9ip|q(Ff?8*K&DK=@d_fmn+NzZ3O0Vn2whT+w|ZK(7{FpNt1cPEgC-z+{mp;dZj%= zojl%jl8zP=zTMs1n4p5JzZ-qu;_h8i(gz4 zZR$Aq)X_a^y%;2LG;;q`r*`cdsA`JJLp#M#I3-RalK0Y+XBM#93Or1DflfNe8aKh0 zaY{mUuLsf*dx)!g<)Wci0t#hWrpK?|t>4Z(B^>IzKJs#SR?~pA+AKa$9wh_yug(&z z{hH#rgVW}TWEQK$go&04AEudt><@cwCn_--)t;=wkDaVx1b^Am$jX)zl+LM;h~)9^ zQa8%OYONpNd1YVeLkx#0?e{b}0`$T6rq`c$vWbEpwH)1t9tU=YmLf%Yyq{ zzI_Eerox-A*DQzIX=ImX4078OgdE<{xoC*jI*y@jfF}*0`Fu%O+uc`hSAOHC_b@qo z-MRq*(}{9Et9Nt@0>QsLw9sBz*MCBGT75SnW;KarNWw(*A*QL^l(*sNE73!{kfVxu z>2crbd#Q0`)u>^Tok9bjw)tk&ev4rgW?yh)(uB`HD z9{-sbnj@ioozNw5kMrVH7&A`ylxXz17i-?t0ZQH?^NzPQG$TyV@n0j-%f_d)_|6S4I1*8PzHqc<$Qzt+eQ zjr##*WSK$=-8%F<>BH~&WRZ2ZHFY`q{sNnDiIigq>tb#ZsPC0cC`~?$A|ArLW$o*N(hiorhy8Pf}s8Al|h=?uSx$A+B z2=A@ect`%`vb~>3`dP5D6!D0BY#k+sp4!(&8k1^g@z3>qsv|hQM+2uMf;2#>h|2lh zDa)t_*qY5pu|z6f@oS!%y$FUl@DyCQmcn<7cy&WpT}tPTLcusIs@??81ZJNa5B@#k zw0UOjg4U5dy%C9*3jlQrFM-){vQ3;x{YFnq&$7}yrv`U zS!r}7Z9Wfn*E+jEmU#fIBEjcuDuIsj)rq|)M)qeDcahTg zovU(YKz%TihOWOFfEX^dd4gW@u!yl#C6HeZK-y@wkaVQrM8%ZKLD$!@b&)*g@*HyP zDb*3w#Mbt&v1>a4`*kQ|is#py2L4He^ofdnhEay^&&0t`(-5So_^G2O(=(MNJCk)a z$w;tq?zKNszkNm=e=;c zPx1LYlSA;Wi~b;WRmS@R@JAn)?z*L617p-Ta!UNE^~9nbBT{! z&(`l>9o(f#b0@`8!oJFpwds@-zo3V{qglZOwy$K8j(=0G8nfnMa-sMz2~ zkbr{+5ps7YLf>}^Y8ayB^U0l&Pyvga|f@AR?icr1eC z?v-(q@y={fl^!hmN1zbAMN8Jfe~F(LF+5$@oFJH0u8AB#Ot}jt29EACG>ccX)+&WWSRzQcjbyk=o)5P`7*W?_Vi&JeL57{ z4<1d320uf{UD-JFY07F8V37?RQNJg-#L9Jiw$)xSSy0vtL3qNGdq zAM>NAtLdo8bwUEL_{rhQb-bF|+6VCFp zsR%e-R*Cjq$W^dBRz%Tl>3(JO@J&gO2|ItbdSP% zK%eo9oXQ>y-hl1J{*jk<2k8%WYUHyuUEecUKNDeT1Ilo=f||ktL7VlrZWt{E??<>k zNke?$VHr*%gXi$?A6@JUn*U%o7m;TQ>r_}TM&B*e;87en=mQET8&u0ee{+cw^2{7Y z)ioIN8)nBXCD?c9`mm$v5PcP3A3nh!NwSZj}Ldq-Hwq*$nC?$>Fll}qLf9{ z)V^2)b4Wi}=!`P+!Zm7~=2TWMGnV#I2tf))ulg=nSFJ}Uk4)pNhqrT?vl9|Sl zoF>m`PuFqwuG(t>0Y?zpo@%O&#i1cY3+>)`12nnOW}$>SxTX|KtRyG(?U#`voEb$X zWvS(rKf{uVu`Kg7i>IlL@ZHh9>JVN0MXbn6W}8!`Z0W&=hWpb~`vIlz0IjRITSc#jjdXJbp_reL^>!9YM%4@JNWmnKXkKaHo5An;( z0N34bXS9Yyp}M<4l8L{yucZ=)WzGU`l7>yeDXnu6+@_-U9Utc)NS!O+58l`u>lrni zPIRs_*EEi+e7kG5a?Lq?;O$C3MZVZny!3!-<R-maKf+Aa6sxk}dxF%8prln2MGD z7^216+`du|c30Uo7CzwV1qFN*Gbx4XUeDw9t%WVg?Ks`Do6I|y$kJC5WzStaUsx1d zTj}pgv?_|n8$irTG?8z%BD*e$yhak^WPMd1@Uok6a+@oNHa=q&9z~1I z&+$EKwOsyVc@Wx0jvCx4)0c)K`9$?H=do4L<9n?N4zYSLnT>4qz;`p*lHZ;Bqc&8O zC?z=8AFQS)IyrM=+nL(UV1jApuyIBVJlOWQvk}Xb$g_6c4tCm4Noex2gzpC4R>Q5f zf)m*jIew)XPDbY7!-RQ_Q#eRF%_1eD7w?Z%*ZAA-^~xRG--$EY9`wyU;tB%IQa#|| z`G5`R87Q}AGVV9+ZNfVBocMZ-^>tqxDm0TrhDAyu6|u*$v4rhwFq=BaT(-ro3urR0 zW15k8vffzG$I+(-YODvo-0QXXmhUgdJI+5gQ)!>7uqPg&h^SmREo@}W`Vc)5KixX% z8>x`>OA@*+JH?)^f86(n#f__+U9?o0Bu#`Pg5Bi%L*3X!mc z%pu8?FH%>(e0);=zXGd$%sxvyA_=%sKSuQQtYC8>>$!Wn&JrnW zpsHc`RFKFf?QT@29TbzFh>chZ&|b%WH^&i7hFIQJup1Uz?-!<)>j0{+s8rWgsw^sX zm??J>mEd`X&!gz05$tYU+K{jt013pa%`-{1 zuAo^lKnp7F=$<GHB!`5MtYy`Vu#l-!_ z$;}ci*vW5FqJt|XjEVt5uc6fANAGO1aD8z4zlJDb?_rx4%~})Q&9>8EY?)|;mH9v|ltnCQ6an(^N~vRW)^LvZ0hFZjz1a?TL6E6izI1K0 ztM26^lU0V;V8JKR7wRer>^iIDFjKMtxp1kb+6t_1y`bRHr;1JN8uPk7+!<0M2^*i?4 zeLneDLH=%B68xBW9=#X3BgT}hskGsJGv{89QY?eN@wm;;PJd-ia9W^&y^U6{ZtYXJ znjPnmcZnISHpBvC&u*i?v|OQ+ek}!2^0P(d{43=01n_bb4R4?D{yM3cpD=VeoU%Pm zYOGicLT`-J3y>yUbu7qOeE<342ud_EPk2y=6-$=vO)baO`9eFhfOS>A+~5iM{N$4z zK|H+bS2r>^f7T?oM#EZg_B8eKMwAVtP3&=Uvj|Pp+uFEb#dP7yIds2KtObNFDoC?R zz#(o)+1D+UhKbWn37=!bU^n&}CjHy1HT;uEH#CoYe%b@$t_I_!FFC|EozL7d(~ukS za*Yn%>|BQ10mG+oJeLYS@x&2lgYrUYA~}6erqK$k#boi?MJ7_?T-_t`iN+f9&&!W->kL!*j3=i=#{D=*tl{bot#7|bK^>h2EnpGJ z)gtY{oa)LR^^*z^YDItuK~>-w%snm)?QVsLzHA1f`m1`@Ca@L2S1)xB*K#c%mlK!H z$VQ*z)kH__um{Zlj&=R9y&gWHV*j;J9_=R=B0DRnNZ#Iws*>VLs{C;0S{CB8o0;Jf z+5+Z%zTlIR%)5Xs(~+)Tm}!w*nX4FNRoCzW(m!j|6q_)$&_r+wOvC3qbcPq}RfGMkXcJ;za^f_f+4xAavl-qyOn- z8dq|A{C*u!ui9Tfo7fyG_58m6F*FHO>on}?+B?M7xGmlHjz`7?7`Y`C{n*bo5G{jl zt(ti)VZk726K#%lg9v!9zNsck^V+kaYp{@$bN+rh%S^2ES}_3%1x^sF zRXM%li(myO8YcwOi$C|WpL@k%D!e51+0F7I^q-4g{JsMmPPy=^b<{hYNxUjhucu8U zKGwf86Qh*rt(3N`)aRXLr~yZQVH89eOgc_By*_T9uTyRj>uc6QozW za8^i9%$uK43@|$PVn26WhFL2!<<#8glNPc}BeQVNVW%1O8^OSmnODX*$JxR7j}R>} zfaJsng7*3Gb9BDh2$j3#wdCrW(}(v~hsilfA_s;)|7`w&PxPX?O(@VyJaOPSNFW0t zlxkZ26<*gfK^+yTV}--j_?|fH6kLgv3;FV4q@eE-7e_~~sQidHC zVU0B*Y^n3oX@HT@B#cd*0xJWcOVMvYoXn(%7-1bTN8L{SI(5$tf$#(7h9Pko)Pf%4p z;mCXqy=JiWQhhwf;kenhlOwM&piBSAq2nr-zR~pc2{nt7P#hnz9a%^Xgc(mAJ-6I+ z3sAvuPC5nJ^@MtjT(-9$CnXnM$YvYX3)uWK_?d?Ps&mfs*evHah^XBMk@Cb|Egh3i z?5HJKQRxM6N*wyeasQ_gpT?8PfQxs&XdB_il^-kEsvpxE3+D;1c;bK^22+V|mM4tv zRy#eYVrsTaIiBq{(j9*P$$nFl;2~i$+c%PU%=e?c>7IC<&QS2;YP?zHxWB@Nj+S7B zKSrhc%b*+ef^em)R^;lRLE4~o0}soj+^ugPteZtT6yb?1RC)P>?NFg-3WGKJu7sfN zrCmR|Of98p|A`#hdIv%8U-IvgB z4@O;dcckGQQPWRr=!e*DAkl)U31CMKg`zU80+TrpuSwKIhHy?gjzci;F$3QIeU)YK zT)8j{lV-9}Puyr~DdbaL`!%r#6P1yN>OT9=zvm)S&Z#SmbG-@x zq5scJ!=}cE$ijmc)#;^>9X{nRgX<2?f_5)z#EW~u{9AhSjWHkm+fH}!mHcmwN*ED?UN~N4A^PL3RxHd( z@D;EA%*da}-tkSZUKb72xNNZfOZPlbb7AF8(!`AyOY%bhjI;*WCH;}2|8%_0Sv5$? z3eh!?h?$4V@FNFm!`4T(6$6xnKNEiwN+A+vEB9f}C#NdO^XY1#LVviIYu29#vaI2f@uLB&jB zRSc?IlWTNU{;#F6u$~RoZFJqgPW&Wk+w)V>_HB8{p(!9CVM!l&uU-*WF-M`F6+B)g zjGVj04Kd<>sb%7PEh$BlUB=Aw`SD9E0(ei65%&#i^%Oi_jEza$q0apy(ozf?bmp&Z z6NWOcRehOeqz}myp1dAPlG*qj0tg9J=um7d?>bW}8Hp-Q8A zuyL)8)<;ZBt%ac3F!w21)5-Ya3eEt$=a zya)!3%JW5vP>i23Vt>{3n89>8hKm4i@$(1p!=>*O6>&5v+**d9@d4b@7--kX)5%)& zj>p|euHA6RZ5sZ5hjIfG`!9JIs}`@xq7!B<3WU~$e`%rp z;2jFnKEwvUZ#u_8hjMFn9$B7k#b5An0zcf>dm_8 z|E4vh4?YPo3`lx&^tuNbt~Qz2*MaqIy(90rd6=TA%*iHcNMv!s z?>n4-)3?$#oqM&+A&T5ZRE^`a<6PkAdqOjwHskLK0{JhoFR&7yY!pyt_C4*5vwCd# zM7v2*)fO;qRj<+EsO2w%oW*1JsmbP9oV^S*BB;cG+(QwZiy@zC=$M~*fJ2C(-D#{; zG6;-Gg9F>Fk_2CRhOVX&m2R?$;0D}!$RD4w>Mw=-G1&XMgcYwj=;gDQhIaAR^2upl zkTx{&xdLN30hpq`nSwbM1zL@Q+6>$9C}$2Z4k33PCSh$p!@uFMGqvJWvNe^(xrJOF zfh_dm7TLQbO}RUn1B*;|fw3Anqq~{gJ-cJmVVBxa{A}NDRS=rKr&DqXwhnGlVH&V;)zMa;Fcg)320AiA=6T!c|nK`=(`5u^-oRoZq#`FQZT+x%klIq<&(We z@U#HU0-y+_6EYAFr2DZ)9hXCYypYZp&wrC)M2I?~hY+vTOM|%@@-r@%e`F>bI1SHI z9rkIYkj?E1!e>d~2~e8tA%`s3TY?N85>;>KDuLPdX}2F^^AqggAE&`r+kX8Wn7dzh z;Um0cN1iU5-irL3BeVHnovWXT-uU5TKY(><79?s90vh-KGDQWLgb+Mrkxm~0@1?#|=9AeXHY@Rpt^@l@??S`U z9^(E(a}|#y3#&lo*!@pB8G_=Ii^Ozala$ui_2W2Pq*VoWfgK{VDBl->h zbR;-Tu|z;w&WLG7zwSq-j3w|pUq}D>34Cr4(V`E(S1Z$N3nj|f(9wi!_CwQ(N@yH! zl3w}i0tWZrPFj&dJSgkoIQZO(7a#q&t@vMa)$*dC(ld?ploTHO!3NG^$UzA0oHn;l z0G;$D1ht10@843V{>o*Vm{lX zZTIFkp8#d;coF0zJ!E~yzmS=m5pT(4(e$N2k z@2_-w^@5U!fTF-O$6?c+0;mg!&{rptGY{{PDT{4hl z>#%ZRV`JAfuC;(Y+7K3ZRPtp$%AY1j?Vq&IN1}LTBFn3VU-7U|c&wNMwvauhz$;lr z8|9Fyha(kuS8#|e4SR#(pkI}~%-nNoMA-_j3&V(Gn+=}|-FC0nb<6$uyp!9y^vLry z1+#}>J|T8d^7pZr(<~zez^_DdAg2Oez!CWVLzd)O8iEou{U{s18 zC$csKhX@oF)3!DzsI!&X`{Jj+!gVeWAJ;&yeA_qR=oBCG3h6ZwQ{1*BX4u=VDbgJR z1&J1n$t&QNG369BwQ7^5b{yhM*JGDc#O5Gmi99+~M?^Z>E5t&|;=xa&qznY$oOn=r zA{=!rDdX{cc?vx}RpvyW2}pY9DS#IugYO>)m*`WD=l@Ep>oGYLbN||coVrA-Q$g?X zFK3^X#b!TO%Tpe_B{KU516{92zn!&!v4(&oJwXS1zSesq7O;>$KN0uCe=>cPqb#D5 z+xvBKfL&xKg99878%OnzlHQd;elo<1dmh^#`~Exue{R4!o;y`F2_(wnci5pc!R2hk zzI7jc9&|hn`1&L8_2T8+d9JlPa4V6DisKTPbV8@qYjeB&yM+uSV@-t;Cnoe=Ko?1~ z6(iodcN>y-2%+a(9gUujj#a5?02_*_vA<-Cd%$wa(!A5bI92_NlgV$Ta1%?0hxPR( z54t|?2BrSheuOUmq)F-DJCNVucr27#st<5Qm0e@xVJt#{jH8tSgxz=LaU2EX!S$|q zpxONL<3Eh3=~ zNhSINZ$I<8ozvIpGl8s?bi&!?cL6N_e@JLH1VbohRtr!|DO(ZJJGCah@PQXP1b+58 z8W5S0lQ*dXDWEd|ZB=^XN7_T*%Pb;}28T~$I&V_gb8WhokJMlHMdQ~6-m3H3M7J+8 zhk3)IEW^*w-yEn#7K^h?!oQSmR?1P45n7JiGCS2FeINe6G|B7)^0{~=#ZZS3yGB2Kqo){Mn)-W1YPu|j-*JH!%0 zH~YS%x3nY-30Xw)^@uPYajwn+4Kq3@q!g?Vbm{_XU)Pul$>$6Q8XV&^!`|gPX2Zvt zlBe)N+_RyktW=?oOAX5rwKx~LSh^&2iOmPD5ql$5M|)@uYGhM` zPuz*s*tgtq;g_EpgC0u3RbrJ%^3B`NUqn- zQF5*uI%a_TM!gasZFs7ItWG_#)Zo{7IUF>J$mT2ToqFQQOI9&yZTfN471Be!dCTW6 zJB-(OOZT+xL3?$830N3VRNuMdToQSd#U5yf8)7+J+*}rx-nl`|64u9^^);P3_aWc9jYvIQCm6FRzbyNki>J zrunJbqCp#Hst*=*%18OS*k~-;okHE5VJ6e3ObcEqNKPLQRJ{kU;myUi2*Krtcabft z^i{qdWT<7_#kj;%)s8^(^*$2#oPYlEhx8~1l4T)*Q z%ArXU{teL7!1GNN7H$^uqGkr{yq_Tchr}f2gzY6Z&~2jTeP z+5J(i9i4AQ^CaN`T{!|mx9N6I;xwD@;|#=?02bOD)lWDDVJ6*=qNjx|!X$8~Ic(RmM*!}BBue{b*}ciPc5qj3TX2%C zjE7`0{dP)Vdn2MtXRnpyk0MG>E3@TA);bW2_t%iGojCA9m*9shmV}9&GlU7bEEw9j z;s4}Fi_)!mNJCfL!jfQGw>U7+rr`A4?^QA`zs^XsjJ7$v4K4dL_$_lbLZ7_>8_}kJcx$4EVCA+Qw^87cVRn|H@@q=u{2^SNO03i)8!QHDAW`%6-iY=*KrP(=$$rx1`sL0-tqqosJp-FgUxQx%52jR*)#JaBQuChT%hTb&V6KH< z&*RNibAT#EuM$Yk13R;c03W6jv$`h}Q=T7p>ztw@uVVi5;D+A6+$Bql%!HImTZ(z6 zaSI^HZ%)FXhWsDVJIihQB&Dm%Rsc3y763Q|k}kJxZWg4;hpx$d?#u>&rQg}ma{zT| zrn>d#EGcU9X^(tx$Gf1hu;LiKo&j*AW z024Xl8T#J~n@j0_YMB|Uo3AMW{-4t~#5 zt)Zf?$VE$?7y9D#&-joqqA|d=;2C#1DLo-Y!9|r7^R&Zj;|U7*>}Tg#HkFpX>$q-R z1Td30k7wt(JaKyZrpf7IaKZo3regonrroB$uj;#s2_gI&GF*;b!adrldpI4wz2Ru= z&9u8T-Q>GVP&E~HSaDTEx<1qk`xQOoj(f%X2h0RLjMH*}F-hA;YsYB216~bpIT-Kj&e2)V%S_Jp z-Ao5M#x>AKDg3lK-O^#jPq ztxNC#)YT5Bj~qFkHl&%xxsc;W$$3e2=)-v+%8S~|tr5cMr0}Fj&Ac1#ISh$0@gnrq zp`tpxf zK8~f=?3+v2dVOUl&LBlKteyL7^r+4c4-zJcuWy=k|9nH)((sc$rJI;hk$VXqXOy!4 ztFQab(GF)1svU`zd+C`}y@&-)5GPRNNYHum!th~sqsdJ^=yV@G_{{oKG)oKM;R2)g zy_YMxemfT~DFOJb@DCJn-}^{ov#;skXWnRK{8BW%a#CAe0kDskwfyBX&t{|CD9DEGJh5;p}$q$2L3}1$ozgbh$J<`~2pBY}-;%szX zx33+28hh+c^5-nlwh%QvY}5AWB#SF8Z4Dd~*j%Ha<>dg$Z=ei*?b!-SL5u^(UFf=S zL>_3lE*&=PVh>YJ(D6|d*QqZg^n2=$kO4D$in3mQ2Rk%0h2Fo}qo9&1#`x=;~OOe1`m$;O)A6mO3=)N7R=0$8fEMw1_~Vso3NLlspn&&v&TgzfW^@ zgKK7zg!^e@76q+Rby8Qa5O-kl_3=Y2g#{5NOO;}h*BYqVIg_X#6JPcvmEzkksrbxy zQ~?&k>A6+(pj?cUUP@=E>L+^_oq;n8p4}Cx7sDnY0ppnguD##Rl*^ilr&2K$viemg z|4XuarG_u{mt?1$fAQwN{uf|o^V!+_$b%OVphj477>^p`2HIzZi{|m-IJid{cZ~7N zz+>^BQfu%3C*D=`w-1jam@dCoa=&OKX_)AA$8tO}xeg8NRPT<@7&&kVq2U7NMbARz z_-z*>0peZEKMp8)D$ZRp?g9U?i@PR1&EJfY6U1Egu6w$uo-pxgTZLCo31<1$=cClW zD?$oH-DzBwNZD=jAd;gdlPjP8wW$^Pix7>0bMG4&fMSmW6s!JN!M~PqKVTUvuhJ`R zMx*s$fk4CX4pg>rZ4?GYxRmeaeYneTsX*5H_g(GR#qTZhf#!`LFJ>Qnh}h^{`QX!C zckaGiVU_{EEx5&`C`*sOu5&U>|JbO7aMG7SW{^9vwY9v}q=P1QU&OS4v+7%=6PG}{ zknQ_`;t2qDv(`v|bLw9nZoz`D+YLrUG7!(PNji9yA<(hA4|Y&JYI zzA5CFYGF39oaSn}_|qh0;|}5)9~6uQGHk2;fRcwTBs<+%F?@0v&57O<*O7FwyyyjK zwi0J_HjCbVMf;G_7(t;t=M;|A`W-Wy9|G@-VVTq?4K=Hb)!5Mm_YRhoMCgWhZ72F@ zr~@;qyWR|Prswv&2>oaMw$2YY{U=>L zv^edc#%rq9FQpgqknz6L`<$&ki{aUimGWqq2T7-rQ=Lc*_~J``WzOlW0!oCw)YKO z*MArg!vi1B+_CvI`>`m3GSj6pi-!jaMaoaV3Gm~G|@5n8x8b^ZTJqZ_Cr?hXs<6Lv^-0fljT$-@29mX1-dc{zQ`Yyx$kqd zf$~>N$$(WmLXDK&%6UvN0|`2}Fo3Uqkp!s|?tkh=0T!_}CCj6m4=wjYx^eiv*pKvf zc(&T%7wQW<4zZ53&a|HWET=~1d_R5EHGPn*zkYo%2w!mJe8R#J7`=W^+%lZ7O+e=xzdGgt^3p_o1;n8QT}R}*yri?qrF%A^!HDeBN%NyKPR?2 zt#fQr4do*3272>lj>ff6$v0J)2TY2R)|kS-cmIaBgJdRn&BckoPuQ?RfDpyapbRt5 zKC8isy zV6YbiOoae>xBr*&MJnIQQHxB~iiCxSdZh_Hnc?acsOhW%a!A^}ThgxrcTHO?^3zYg zxb!!X@ZZR-tvm@+{~d~b5DShu!3xl(lRDjrK~#Jv1kszlmL&&YP$Y$&658=B#lCmn(J#fIqar`pTypTY6JN3SAIi zT|VclHy8Ph@Z+?%H*A(FrjeqQY!w0Uwtx>&4J9lpd4Ip9}SB^h4S40OIRe%5WH%93dZ>Ld?GT_xh1Wp5&3@v z>9cMGqI<+ifRigC9n8i*q%r{^K`iSdt-0ai#u;D&4K8LoZGqoN!%*k z_aJ=+(Lq;C5jIUnwQb~>yrOcv@k z8h&_l+AX)oCCX{);C)~A(evbHO=G!WKb^oA6Oh;yK>1X(bCX;sqZ?5Jld)t=W6)-; zVKxsp%ft3wHa&n7x+OQ;a8NW4OW_@KyRsD0Cw&wReT_0ZgKbJ!vR^&8M-{#PFbOUgCaLpV)ZIsk=62EHh zG<=(V+v4?RIp7n)BL`OzOM?dL(xqXs@`ia`w!zqj%5_8VOM$rE8p`!)?_l_*P$*5I8)+@hvR(RZf6M{~h_R>xp(x)m&Mnb9 zJf!#rSFy=?f!o3t(<;{oa{IC^kLu}K!TWgM=Na#p4^ib*TQ;|sOeJtw?#`|?WiA2%{1ybwey952!AI3WL@*jRD>h(6N|!pY7Xl? zgFDmgKRTxm-;c)w2Y4j``P4D&Fy}LsC{n0b-Fl@sk?=Jtoet-cfj3c8!#3Mn10C0j zwj=ra*?@T_STi?Ovj|(tb;D60&a`sNXudM;*{5WXXxi-4MxHMMETA?ZSP59sMSjLd zW&z{KcF!6|?B)o^p&%`c>au^BlKOybpNL+$_B z#2_u)%~E>c^OJvIU4P{qUBAbS{iS-;u8|v!oOfmFt zr`ybbFfCV0T}5bfaM-JVgq`1LY*psCuQi+{_62C@TSj+~v<3#>+^`g^oD%@Q8u^_E zB4SJxt^ZG4cPtomCG2id4*eU9O;8x?{s{YpxBuunPR|1tT{~xgN|CAA$+PoC`m;~+ z;F!O}8saba0BjdFy!bMoOk^A|712U2lme*A~TRc zz}19rx+>}oSD+GmJ7y`F&9&VSAq04o;@YP`e$HdF9G{12k(qGCUlw(FRt8|}XrY(P zfxmo7rq_AlZLoa7*~vlA*OQR}&ymt^c%RrY7Ub!e9*a>rUsEhQSp302=c3(j*Ej;`^)d&DNcw67P-ivKDpTe^dc`Y!5! zA6xDze0Y}dE@80ja&x%+X|DHLbhfyTOW;bIr!PlO&}PLo5ABTP3<~8SY5Hc5W7B-? z99G{aWdTpU7cFN*?)}Ep-CW*%|7);u@8|m)I^?s@cIpY|Nk?(i759)BN;3*in5^bZ zK3DbDt2Z{M%gr|rgjavH9R2=Pw6u5cEYI74dStmW-o{cr_~=pDk1cu9*D;WJa%Kd3 zDj$?R0q({Q3BGrh?N)4_DvSEV;i~cr70z{j%=XI%{`f^!4<~fpPSn?EbaA zENLA?j$>xpgH_ymIJ%%!qVL^Ke0Ski$8^BcfE_RoT=$*$C64N!Jr(6$clYxdxbmAg%k4xf7sB*4cwOwV`1a!ULnM=knYcc=Ebp}13ZH~4nE%D9-h3@71sBc}?fcdaU zYXxje)E+edqMB}F+smbY|3L1vZSlnKsLFeJMu>pYQFJ6JFx8Aje=7BYEHeG|s_dgU2g6gUgbx5D?A`=IaD z4#m-%2dO&gnfFeb!I1H3OV;1kf8TF!sYuTHjB(!*M>#t-S=UgUC_eaIkV--`o$kbC zn&J95n8kHqPm8Up9^~nh5GTu;TdY-wp$}{Fzi6ha@PdmvapDnU-?QgD`lGlw=jZ`b zGj6FssPs}*?FUr_TOeTPMsa^PrBC>#^THzq1$I7G@kO-qT#;Y=N<^-DKn7}`zs*{H zWJZLwBah#6$1VI%hU5@hLAv2___3W6w3971_5qiE+?%&!KmBbkW_m89Xr;d0^m;N% z7JOlMfj>m5vUxxL28nWfhu$||&4${jJ4D|5oV9yuxIy_zRJ*m)<O)_9L5x=ep087NH!1<8?oF7=a!>M*L zinoL~1;7=6=wf|adG%sdP4W!}HZzcDuIc$MbDo4V>pu+sc7Z~6DXWTP@rNa82v;Ym9$V_}vyX~wmNY~ZFETcp$ z^c8JdgE?+3#P8PPg>Uk4QZxj?oHosF{$?qyDX0H&8R)pUgqcde!hhw2sG&*w+Hk{{ zax8BUhA(}%v^48ND`y_(PD$K056R|OqV!foS~TPDoBG0TLMI3Z2{7B0LhtFNm28$4 zq`PC()Yh9j^Av>7z}|3E*r%IpQ_oU@0)?m0Xxg?Lwxp~EZTfv%BK%}kD$PshqAM(yy^S;9YwF0T z%dT^2F0YpV8eP`1Noo=7x9UINJX`7J8*g_n>**$C0YNk|0=9nhAg*tC1H*hngu85+ z@)r*MJi&t&b&gJ+13QTf;d`tF&|cP>1^1g`Lt97WNZFfsC(Tp29FAY%uVkX+pPAfY zR$${zP^}}B;70KH-}5amaE$65C4RmmvK4!sNhCRYN((cwR|dJr9KDyiwzyY4I{T># z|A1!Cxp1Mhj>?LniHV2!=Ol%O+UQ_vU0Ccey2Y&nHF6*>DX`HkZ*oi7WONs?!#jl zncv#ao-WZ*wlVXfSPxI&qrq`71aB7U-hJ|eXX?u_M^HIi?k7`6RdubWl!gtF8vnF-lQab&OKF`fZzuyPXuEG1yi>h3M#}1Mq{kVR%pz1 z_ET6?iED6FA6{_e7V+kr48oIkF;i| zo)Gp-4Xdp@E`hY3-2(H>-YBymb++5`1*3)DUKsO%%hg!zNrx~HN* zRK>jl`@=`n5J83mW3b0X z{lx&uB9rM$31sRoLXO+~o;bOTFPl%RxzHN1G!;)jsWVyNMN)g5iLjTAQ(E%hEAXgN zwZ-bxi;V{Nqv0PQF;byC`I{GmV_Z`vgsB0MXLw9f*p?4u;>3mDW-J?btYM96PPC78 zo-Ehj1h^ZG9<Q*)DE5M-Kz%J!;)ql2EbP7jg=L|>Mzi6`e0mjAvs7Wv+m|Z|f z+OCjNI6<}6eC@l(;?y^XbANMFg33R*n};G@F@2&3WZM()(P{ZkOCqVjE3y(+jzr9{ zv4i(=IA5~)hyc8UvSOm@N-w360Y`y0p2pyW%?GMhRSxUjL5s=sh3|T{EjijxKT*U# zQqz@qfse~`*JtqHip}s52ebTL*@{HzzzUWG=9x|>kXVm+{%QgU*Jf50VdIACoaou& z?>%J#SlL<}WXDfgQ5P&^VbZB+|MJ^nBn3LR^y%n3tBM{ok4Tvn#c$`nqLT!H_#Yzt z@-(WhCku^cgcs%M1fbVEuECB^1Mdf|vI#o1CC^*kLcwb`eZ?mpy7 z^W@l)-itJ|Velg?z0rCmLE$Mo<*c+t;T^K3Rz&%p6<@h$TCKV#lJ-3vy}Xtr$u`8Crv+J zX-~6Cr#5#uY?jhKK8#tOSrPL{94dFWxd=6#CZBT0w-+_D!lD`QI6M917mh#cWPLCa zbK2$!8C5?Bj%#tXFpRs;XayssHhv;Jv5X=N_IswcJDOr6vWXG0ti^v^REXE z2WK#4!uNz-INkA%)7Hu(Uc~KN7F&Ek)ER0+U6YXeR8tpz)|gp0FDb|xx*X!vB3fU6 zgM0tuNqHbN=tACs2h~bg(f;##07^7kshfA~XsS85t(+uJNR(>5dFpD$w&TzLY{l=9 zKmzB=#oUA0pFxjYpg8QoH_EBS%=HH(cl{IK{I6ia>yK5SWQ~3KKjgf0{u7Is$d&z7L&ykh{JK8vDjg7apgUQI0P4((V!i?3g(~ zL@ocUER zhn++)%-|7m)o1@0A3Unmbc+wZDeV`vQ-$!Vp1*|PNK~PX#|pW<>2K#mJn!$mm&g*DtDa{P`W0ssQs5&Fbs);BUF`QYRhlYbijL7|5G6k)4}`*9 zV|z2SWhNt-0A6Ms{vCTEX2o8J^|F4#f8;O{%@c}3z!%s~tE+1((tb`3=KAv^Z`qPO zv^p3ABH4j%qRLR@&7cHH94-q#;b|XmL!FEUagMPY;#-fKyu}l?4k^uFtw{T$pBip= zIu;kjH$K=LJ8?zsZN?vMWN}ET5U3L-e31eQyc&=>q(Lyx|EYmKEO4>r%X`ajnxyF* zL60bF5sd`8Hd;9p^hD!SK&Sazv`+s7_z<%KITY|1tJ+bH6Uoo6nt;sp7bij|MliWI zTkm7n^OUvqHFhk0jN_xndbJ524;P_Zhn_>9(=iEvGdx8@?oaY5#jb)25 zlk%@Xu{1`h0U}z6EYkT*mUSswJxF(8>~8>>Q{rp-iwr0{EnhoQPe`muo#av;leme# z#us)+JT33EGm1mPt>P%9)&iakf!RA{l zGgb8<%(gJ)&o9;})526IUuTnnm-$Yb&@>vPW~|5xNZLc*3Cz^A1;li)#<`NGQ5>Z0 z@0sy$2`J(Q+DtB9SA-%ys5?~e3A?;%g#=;oZ(54AJ5F-yDLOC?LAKN&pQ zmSh*Yjt-K(YZ~pVy~*UI#n?%c08+{8JLz*2t8N1Pw;%bju?g5sx>wIkE$^on|B#lS z+cBe=kD5+tqG=>o_h#pco3!kZZ=Q?^aN_nno~rPDULUl%MLf*`*!Qu3x7ONf)4FA^ z2Vr&IycAKs+K!s<6vi3Fy5Xt3$RbJ?F zJ8MJfm$_b+?oj#K5Rfu#Lpr}raV+rLNfTYYfNR^oEEO>AD$J5eyP2_mTC?0b`XLEt z6puLYWT~tx^j*NB?8>Q;(5x&>5oWM$zByI*T5W0eX#MAy{K(J_iuo7DFN2~LIh)}s z<6Lx5v8&X}adDHhXQ4NQE2+C>cj-d;5Jx=HGAKxrjrf<(g5Q9*W#P>!VpPBW(%f46 za=7Hm8~6>v*hzA_i9XNY1uYp8+*7Q+0*C&ydno;n+2NB1<4R`|bOLp1zs47`X1^{p zxKiwx)OSFb+m(u<|8xT8jV4ji*mU@3e!n z3YYjmX){+gtS_=RS=v9%E$fFjcrc&!y(5Ql2O7Top*!En0B`o#eF4%ZB6sr8g_=X) zu32y&@MZCOzCN1JESxzhUeks+CH};3=$rs&Y@e>*V62ID^!Mbl-imTK2~WE0qcDIX z(_F@pytQ?xepxy0)A@}z*HJe;^6P5;jzM>G)TK8y*3Y{EV8RneD@bCl5-rqQfL^zz ziL{jVD3Htd{2>AhZ#FSi>Q|O=yhs0+n|WZ&FHbu=rwq`x*lc&Zu_VO&49mF?z-FLE z0ltJesU1UmMu`_+lI{Y%&GM^G!=P}j>j*v@)Bw_suj;uGM79`)k3}qzNe5kP}CB!bDZ! z)-fCo{?{jZsahjR(V+yP#Oi`hWrasD{}=sRM^m=@&v@gvUhP|0%ojv5F=pW1ywV9H z=2YACWAl?(F~(78pPjH1NT+a92l0!JCWWb=3x*jKr*Ye+T{l?GImVXu7kpOBo^}{f zRZdl&>`lP=Yt~OD*FwE2_KaJs+P1>$zhyy7`}5#D5|r)bN0-DYW`unN*wH1*!JQxK z*(SSFxc8rV0|fvWlRKyCqN;XpBqr&T#YtK%mC7LYm~QN4%{*L^dpp|gM>mcsUzXKb z7z;bd@!N1!>(+wx$Wve}88^fa>Q8OHB2i4t((%hV3*IcRDr5Is>gO+Ya(25@_k}XW z)=yBe^K3w)@Gb|!ujaI=Z*p%6bCPU&Ls>}W@aQg~O1eMpqN{MJICH>;PkvQe^*6!7 z8w+&~K*b0|diy88m#Nos!XwEjmG#<(H_GK|DL*haYE9ME2b*>1CiR@6qE*d@q z->Hm!Q_2a}_LJ?isx2IDg#N_FaLt?{ePdB0D$`EMVcWwqE^D*V(5AAk<){uhe^7utIM9Buyr zb^F-k-iCyVD1UKlc9Fj_ykI|h4X>!XyXN}if5{endLb1o{% zWlRA>ro0S&Pft=*oF^{A^Oc|4-&EU`nNKpMGFOLe?)>IOuDy6#6$G2d6192V zn@wlCDBoPZTA|l#O-#v|sh~GPHwFk0175+QlnysLvv7?FZe#V<1n4056GW@|i>;Jp zD-uY5M(p+R9Rlp;=jzE%(V#1X2V;Z8Ip*zMoO9_>=2wV)pvPIS7ITJ**de+f-(*S} zVsQv$1@RpOxm&@X0S1Cs=Xvq-URQA}2x2MDEOlkGMT`jcmBQ-smz3iPxFR_OFuo;O zkvs*oidmM>h(E#Qq=i^%b8E^UY#InG(e@y$*N@jH;gol#1h5isyG;C)@;of~3y~!SGc^lKC9?v6L)OM6 z`XPZv0bFV}JNofoDLJQfmzr{@1$cd^xF2@B6n<$*cTsf_Q$@_H<^A)Nu_wlQvW^ka zkq`fJLwsbFQ(Nb+tj+(T)ux81edsZ*>>7by=Vi3M*=}r`@W?d`%J4U+7WNmYwi6cw zc{EGd4-u~v{cNORx3@T{wxt=)Ap-_kS#72!BO z%HqfsDJyT|qD@ByrKS?^m<;dvLi_G8{_IWGxMN4;j}IQHmtTe))`#`fpcfaYNT zeObY{)4H{=xE;4pt^}@Vnklbi9Dg1DQN!R;SMg~ZF2=c)nV>&Gc$ zULS;62=)HZzyDoLp8CnRO$(^s?) z8C!cY`%Cb;IkmU+O5B_zkM@@eD`I6bmYJ}lfy)Lv3F-JaB3=_yUpxmj15R_oK%p_L8i2N)!9~;YLqR-nnI{YcEq`(lgpoT>e{;v%efL?-g4p;eJp6k zO2o~aw?YN>0Qjo@Uumyyjo-^^Y>q>och`6x)b9+ZdWNB=ig{LF4RMn##&%R9o@UBJ zWp<@X7?U?&LoF#K*GT>+@zqx(4_T!BPOLv7z1E6v*iWYS$gXJ*^G5H#gI zZ4@_AExsVVJ4?jXl%h&X;4Tp1eLBy!IoPtWupw~LVymO=@E+QZ6 zp9RVv7U+r;CT0DSs!v$pQ?55?rIoXmdhxlW&brvb(>TaNI(!>Qt_WD{oeRYU@Cb0U zjYP&};j-egiSY3HBw5_-OlIJ{e{IZMWAhR{g6hR2eUYcFnTKF*uo>n_ zrSR*Mde)tWYQTt;x4jy6oTlXD?%Wxx+mI1YgG^?82^^cVRPtaJr|45J@Gk8RlBqnY zka69$8%#c_yJ`C?s>#%(SaH%Q&|q$X(}k6>d!ao_mGZh~6g_)pu%)S&92dV4I)%2D zI^2jfc1ZBhw0{F|tKR2rF^=TqZjpc*gBRY0OhFQN7KwYTt)pmJviKFRJ{AnVpKaRe zcbLY>f14-klIM>+t8$< zsc5cW@3(%Yf6Fi_Fg!v#>&A4gh@0s%J9(x638jgS;10pg#oKBCF*g}6WH1;Ed|WEFI0{pGqkEHuJT zu!t;UP9P^e#C9W%6s=w6(tY-7h|p4RBY7mhlc!K`H1~u~zkqU-hKTu}{gNYixp=*g z9Pt!zk6cq_GkG#)lPZ95$Vxk?)U6rL=jFhp0zW)ENBu+zXlYRZ?lz; zR_0qQ=iR`wgyD9h0i`A7TF~~V;j3z>J8lR|`k2%8x4UY?V{lD`CC%@59m=m$pxMoTe0&Sz|AmV zSgc^_7bPWF_YynBA8BKj!N!@st|q&MaCgizxP6QjF7!AL*kieX`>?w&M6IG#J5zB% z@P}X;9>E%-J8)>SdSSxqo~@Bi>0j0xK?d>S%Ft^FrTVG-@C8cXdv`X7-x-Lz~6?PxURWu+Q4 zmuCK~-^%0d%d@U-h6jZ40VY-B&HfP59TS}P6UPTOB0EBaRS?lcOvnT>`{`BtOe$tL zk{8M?lay$b`5lb6BazYUhc}w?t&vnvvq9Fh{1sebirDt{+t|c%{Ro zA8$|SVN=xG-*E56rIDedI}~972^1TTr@N=zvO0R}o!LU*)pqMwf0$p*bjqF3cToHD zMp;%ozpQpv5`niTLHdg?SJ_O^ZS+0NfRDzkAjvy)^{)&XzymQfWqcY=t<7JSp92gu zpc-St(n^>8FI5M>>=3|JK=n+o)nf}4n(+``wsCh3?HqAVvq6gk0q#q_c^2sh7lSb) z39`Ig_P|~N3WQ)mz_;M%31r%cMR&uy>%t40tg~t@W_~jSo7nOk()gQdy6y4%uY`Fp z|I3WFFmfRYz6m(z{FlC{E6_t5g8FGWEvF&DJg?LSE*H3ySl>!kQ$%FFa7qZpx3T2X z2Vyi-rJzrVi>qKUtgx1JMe2CE#*Jt}(gvHt)&u_;jo`kc0)Ac}+=;+xu-Otr{Je*c=6?FrpUv}UKgvF-I7~j8JDa6aAOgS1K^sXDty}vsF zPtKmeh(d^JMRPgJJTd5X(1yVjT~Yz!nM4JcRbRFsQ*mfRfP^6-q9L&0O+;MK#VX7M zVnh8vr!X0D+cqKAjI_ua7J=5L)AHVj0YN6w|Dj$uRWV>X!>z?EY!jZS-)@>2#+NI- z^riXcCD;AlF;! z^ezxsam0ZQXLzdN^!Db`e~pEa0LGF8|6#|3Ejn?01&U5=b==rqu{|=-ZvdaheDJn% zf}*fLxS2xzMomnWFb~;(Hr`Cz{%-(aEtM))!Oftg>RO{rZgkYL!(Pzu$_^lT36~SL zTjuvZ`=hmyxrOTcNO|9Kbyi^@<)s84Ho!m`y;08cAQM(v)M9X?M6Rn z4T;)GcRu?Z8~xHWmRWQ};h7zL$eC8t3c%9`j0F9H1@2OJ7hPUv_^yO_vFv{ZP-Q>e zS56gpnI6(icX^16E18vL4yy{bPs?38C=kpAEJ7@MCDwezZarfYWc*N{Zb=0zPl%8} zK-e^lq-6QoN0aUhKvpe|->9&}Vr4#gLhv&ce)wPIWjjxrg6lVJEOw`Gj(yN90NR?g z+bSYdqqv%+?aU$>jdG(4<9<%`P~27abp^%9wyC=VU5pmXF#!(p zq&Z;HdStdn6Pz%BptQ#WUYAxn5N*5k4UR{LyOSpvanBYrN=PbW$h{cd>LF=>bvRkR zW)e6@D<&m*{3^&eY^6+ji z@5-iID+XC0wx``p#Abrae(PB0&4t#-aG^WB_BV;1fGhL$zo#3^Y!i7EutRybj!81Rm%n>_?9#xE_bqh_F_=7g~lta+?T*e$#k*|4@ETtqVTrv;XX3S-Pip$#yWM{oK49%qgn5aGea3!Z0JV8E_l#>oKvc)tRqEdhXP1HAfZioIefN1c0PsO} zFOH`{WtwfqhpxTuWsUJxoGM5{NW5Z-JMxXANf1I#yQa!fn^#n+F%Gc{eHz_N#95l7k2BA67K;`V`K)vcQ*yeA&FSU&B?8FxNU%y zQxg_A-;kv0p7j!$+3O*B8R=(e(lQjw`JD-o6X++n?DTkiO3t@MbJNodt`75>NLpC3 zc1?EU$EK|$@KXP;JL@S4x5RgWun=9P?QX{APIkMii=@M@fPHYjxt^1x1t1zMPVbZogUMBn(z>iqgU z6Sx^d>qFEWG?xELS0#fU$V#kj^SpzRy+$+;JXThJMM@ez6}&7)0wHr9Oe(eMwUq82 zhO)>s54c2+h5U8ll?8tpz|?vEwUNdeH9?q)je@-L5O7^sg#A~EMuk{jG!y84zJ@P# zlviO^3+!I!OK}YPKDhRvod6tMbsij`me+@L=VPuU$bjCh!SIh4W6f?}#5gZ&zw6C* z!fGhv1A$~fu@QWpiJgz6?;D5k-$QB4KfZge1(iMs?X0#XuOMn*VV3Z3q`CrN>S7Tk zr^zGEfOQd(Vo%?_u`4lhMyzfTgeSEsG=WNx;4KVM(_dRBCfY#)E z0d}a-aZat|d`DlJ(WP+R76}koqrYtVPe7(~C=xdP0=ka6$MI|pAzEQFI}4aK#|y-4 z)*@9Y#Z;qUZXkk015q1H4d7{X<#ADb$1TB=s}H(IQZw1j;BN@}Y~D_0{0ZcZckxhR zJk}9@s#`1eaB{zg^6Xi@f1v6l^teJ&PxVJ&S}qt>mEOjw()z*c{pP zD4)?Yg`pq?xEmhOIS)$G<*voo*Ryx9j|htvW2PtXZ9*IP3ISgk z$=p1_UH;OiHFebcZ5|0}7EdBGwVAneib)G zo-F-x{Dz1y>r8Pn6_`9DzKFduZR#4O6*khl|9V{@L2>zYm4eN19d{phi>$XkT-{K| zuy$G__r;$f!@%yFzOqxaok~I@`C3Oo00sJzCC;Km=H^qg-o)VNMvfR{ zyx&*xr^zUdA9tqYvY&=IlEwgB*!5@LarPVaWuU~)HxA(ak8yc{lhi`J0HaYLBkYYm zq$56;NQHc_#_a_9XVqVrLvM?M3r?v|LIMfz-7eGlx5JVxS{Aw zJbnw-l@o=9j8iEd7f`9EeOhe3wX}3?xq(C~(1o@B{#xnsnp1*FiZNGH(PxV}d>b9b zQTn|HDlsZdem2hj>4ixs0+oMUH3fk%EDu=nN(3w>nf(sOn2H(oesvfnP9kSx@yvU9 z83YdiAn}4dxHAccD;l#cN)iNho_Ec%c{gB-DB$~cKZMi`dpCUKI^x5+ocCOXiu0am zXvV03cE~(aGQol*{mSMmy0^vuOvZjvmC$3qF4vB@(QanKuZuLGIBX3VwLo{_ZMR)j zyLX=FnFozqUmrbupT0AD#U_JHaO+Jw1H6h3`moJQM{zIIRQG;#%oezuPxGK=^tFxa z2D(ifhJB$__^s9=RBG(VZ=FW>3O0TvK5lwViq6qX)43P)xGZ;zkmabu@%R0U^IUTx z4NoJU2pJ!fqD@^j9qF$BTmkoEGV8&uq)tZQv;Qyg2?Xj4aq}E8=l8^dW{VxDCtj>c z^*ACNO8O)P+nx9~$!5A7pocPe-{|!Z=L4P5deU%ZcE`ml)AmVm{APtC4rRV`7pW7? zv+J`d5z-(SlV^88XE*6HJrC9j% zsfNMJE_ofBY`npc+?_L%IT_ZQUc9EG>o*k}UZN%y;!B2;pJ=VAfw*KciSTP3rDZcB zae9)BZ>*4CrSd&fsVEI8K7ncInf_6g{$_^@^VCuwZHTwBPx+260n{2JQ=gNrtE~Jo z5bKmFyi>1I)Z;BYs^>80+wj}dDd3}KC}&WbJ+_(|%#}cA{cpW`1zQ))-=wHJSY4UE z{%*eyUp|$<5r4XNLG*5RSAyaU{u3b8Y7)^UN+_c?4jHPfX{zi0vSagOFDHb&?gTxB zeT<+3dd0J|D-El8;{Ta7OdxBLL)?y;<6hI+`uz;>!Lj?4tEN+GFfIs3p7EuJ%bC5 z9+PKP_wL|%mI@0$brMX_@c&f?ShVMTcHnBaVh!FviZeA#Y=KT{@v4)nA>=v5sPcl^ z_2|yLl|)LUXyQlm4ka;-_xj6-`l1haD&2T=_&m-((Ex^-)(6)lV#+OeI%o%M*T+o} zMj)q>FeS#BqN+Kw!!czzaNeeuLL&|4p$qmu+z^&nm~_+=MQ`J|kO}?ofze>th4ho% z469FdRR>7m)nAqI;cbR->9c~5fGI{!PC)1LJnoU;qhYXjNe7{!-Q4?HIVsGzN5TiI ze*B?slg?q+>}RCFIQiy_My?ZK!aY)i#2_t~-nGF_q{&A(UFGbY0PM?A1P?9}M0OMz zBoky9q}2)%%b(&~9VHj1*K22|jbnE_DVbol8wayp2`7~z(e3IgH7@H-((rC3l4zEv zbwk`en?h_T8D4&`$7!@aC@~_44v1Z;Eb9#AklLM1(D$U+QjEOi8;p48Ho{aRTC2jO zl65s9SgmP%G*#bZ^P%=-diu=^7k>XxS5`2P!R;LwjdjcUpxIxTFZju;;kWofwiT~I ztP&Vb&`U(bEeoLE*sSvVj}}8yr6n3LoAmB^-y~w$#8oV{+P%sb^9H^O`1;VwT z+Y)KSET^fj8Q;8bzLHSxH~5%lCq9unt9XT#gL_?}e|SN{dbXtA@&pvo0Z97BkJYk0 zHSqbCYjwg-yF`oe*s7ZWLwsg95t=++QiH7bQ6ABvt48MFI0rGd;AjcZe^4%0d6h25 zu|pLp-BUa3gjjg)+z!_Uu9Ic9Y3bW6&nGYu8cXw)% z!iLR4y*8%(8nF<}`5is3bfu+k!DPOa20{6%JKxeE!B^%RqC~_to5^gJ2CprJKsjVa ztic^sUvAdUI;K`E;gMe=Q|Dz+t@LJV8U5MM}jWYO&5?bmwMj*SQ)*ZJ_>KHper+GNys)%A`IP3!pyR;b} z54>%44R%lIgB@rC7$VTe3PlRAJ0fxH0FgJ1RgxcKVA$e26Dtw$kA1Xk#rC zb(bXUg&n_9rbt-BAZ5RfJcBF@}FHtb}M6GVH)z(i9C+>|jrb zl^N5&Nc%`(eUi79I(n|}EsR)Q!(Qqw$Y3ZyJp|3G5})MUG~+BOiBePEKM@V$v?VRE z-Csg}1Kgj>u}o5Bg8yx20;N)20Ny3A!&?d7WbI^@`F@S*ZK7b;(WLoY9L$7p&XU#x zXkk+0iZz8_;{M$&3BCiU;2LxVFH*v_*176tP|tC?2}Ykr<{zgy4Qu~x4YUYvSai5K zIk5NMQ!B^hpvhhiHA~%mR$4-AAV^IFi!H^KOqmOBxxEBR4W6w=iwSx&c96DAD6B9v z0GnhPTSV)|H|$nIZV+414QStSDh=xwHSlm!^hZcOyA<`QM+g$Jm?-TRoIh!?Tto<1 zLwM46y1jfH3tC;}g!kqwge~S&-^#8-G{!M`L|{eA^l3ugpDZT@gn{l~IRHn*9d_@p zj7d~fRkk$Mt^n74{*CA^em4+u1zeVsO6DaXh1t9f2WVM`W zqEAC9e>{`QpWkGyu}pk6gTow%U{6vUS*p#Hyp%JZsCbx~o9Gn?Qa{tN{)gZ{pTDnd zLf7qHRdN+7FL%k&UY?>BKqLQq*y<(7nwuNQ#g2;ri@r*XY~~HGK8Jj)z9%x zilWupy^YY$_rboM`Pn^dv6aPQA{>L^6VOIpW|F(uFkACPA=9u^7;d6$xe6hPg z9=jL zZslPIemlC$FK>+y&R61~b`8+m#a?%cNtu9I?qx5*pqga}9MlWb@Fk*eiDwFXuKNxH zky z_wTmIg#E@y@_3p#5G(sQz$P(2gp{E7ie zj6#{NgAVt@t7WAKOExZcYvYeyjB^dIJgSzy`y6{Y!xG+la<~qjf0AFYHvnC?>GiwW z>GSkASjY6CL!X1PcRn_`8w5DXLZ8qosEbnJk78J#j&kWAUJ9jIJydthWHitqOpxi- za_IZJAk<1n=u%=Ksl!rExk?90N!?&Z-ma`UAU}QYkX+dQ(;dD$UKuNkJr9dG5LLw= zdRKur81Yo5kRt-?IR9W*U=Z(~T$zg-?&ZfigO3)(TAz}(h)6(P-aU~&HB3y$p2l2% zf$))^D(cS?oq@vtGv4WKF#hC+|GA)X1(x>OC^AlMhEDJWQ^tE0uduQ1$uQ%22QS$1 z>x_SmVS1MADDJ7;8z=DBV+h;J!jDrwq~-u_Rg`WWRF;D0#6Rn|^=CWhB+DL=V`jx` z3z|ev43>y|5(ZENh1lOTs9p8pd%*vI0#|`Lfpx96;mC5jB8y@K7f@)wn-=LRgF~7o zQSAOOC8rZ5;GXJ{i`-{}US|L^nC@*>{%sg?a4#GHu@kE-!)qu#_qJvy`FPOTD&V>0)84tHON` zO;a*D)JV!h@0r2G`X7sT?1e)%1sj4sJd$DjGavyqIXzIX2x|Q$Q=!fVTyuEE<4pNc zIBY`Z11x(D(pRRm6DyejPci5pbE;MJLGXc<#oZqx&*2 z*9F1a{UU(p^zz}?5`jOjJBl=am-ZiQ_(Ev_@=Pa--|IMtnBlBa+b>@KV?y=3eVfXB zk8rL2H6cJbdtHIb?=paLM7W_eqJu54s=)7-hUzfr_7zfFFl_&n7j=h05YOIft)^@< zE16{sEbE|f8S`XS{POC@YCk*a-?Wr|8NM{ML+hE$x)W_ zDRqMs(;s4gg<1DnXV|L^MJMK1!Q%N-jnb!|H=x&P_ z?!p>*4Y1e_*{UA*pEM(fpOhPdUdY$KWhkmQPz_oHSYN2jd4qCSc1nF5>&Ms(v9T^DKY1l2~5{)PpQ4H(l9oWcE~U+>j_T;8y~8D&9E!|za? z8v)qZynMCh8u-A21s`3f&XxGcK$3}CALEJ}`tI=^&(UFyX*hBu`=v9r{i5TK0smZbK?DxnM?|5 z3BXgDGgDrWa82k+n<`-SeUHr&PJNi~^!DU_BR!S{GH!7H9~V3X#Vl*J)3IdMmk8Gg z#%n@ehS?2VD)^5Z9trbzDD=Ca7lWrZtHC=0_QF)7pkdc1J*M4$=!n`zY?^|TDSG4r ziNlqT9-B_W$t*KH)9?k>Y1){F*M%6d4+IYpFkS;|m5puC&qo;Yv=LYreP&YK*V}*g z^Xqpc4?^1jinFaY%#bpj!wG710-`=(NkGXf{0jKu4@M-zGUfRVBUTpE-;>9?OFO-_ z$T0lAt}xm!V=m3Z5>I5b0PZ$_SOVbtEWv}oqKP^|+OOaR>g|>OmI$U!`g!y+ImjJo z%5-$czU|7z#XkJhp0pWZI~Gw?szl@Zv$3Z|-~n9>O42y5ph;YhC+O=L?LL3E^kD4p zNfb<#s3J%x2d#^UQI3L2DlTljA_$i*e*}wj?4}9BF;V01BpWbvbIFFp{H+lw;@_7) zV50i7{ORW1taMpfpL30PQn1HOHbSQ8Hu>Wp7eH}O#cw-%gY}O-#RxEm_pmNWq$;qFrU^-Ib(KZ87ltAjFdkg=Iy{gWBM0*xIv zeUhS6p}Y*Bg`?R0xZnq~eCtinZD;jNdfz`IdGZCp-vZtFpR~^0It>K<4+FGv(xuJC ze}9|h?&CqhLnsd3WJ%5z zu$VlCy*;lc;g_J5)6AV*0c!|Dtz3*UqCo4G5j-@!ao6Z_Cfm;8d@e zf%j1b77Gm6f5xLri-3RzNV=oYHdi88rXOXIRAfpS@#0$9;7lORvFt4n@4EU;yEAvQbVY8BPb;x zji87OAdND#(jXnualeCl&OZC>bMO7j{XBa=vZ>$iec!d#XI<~{!L1|%kKZ%aIXzrO zw#7zo6YB!7$D?1(90L+TNnl7_VhDuy&CkTN5a{dO6V~N@Rx_mTX-=<(ZT{Wk$AfUA z7w6s19R&5!#`is$b&9Vw<@^;|%aP;>Cjla3c7lo}3NR7a@~U9iN3a~7zgt5^KEisJoW0~@EkAQ*{rx>MW0HB`iT0omPrsb2t-<;g;*k?$ zmaCmcT2_bvn^7(nlb_>v5!Z3P!QnskA|FAyZN01!uEG!NnoD3^Mxl8)hL@s%xWb12 z%Z~P$2``H~YxOJz5Q{W8Z@*=QrW_x#e8ZE#0$1*w&NZHne{Slfa|?Uxf&$YnD@Lpe5#YK9aC)T?`~~PBBm>B&~7B zwr`vv`84a-RNP-?fno$E^Nh*SOsCoHXtmf!QQ1Aa`M$esTxMsNn@ z41cO=9r++1C}2hsz|mv`;`j`qbdyy3^_F}i7N3ZtDN~ylRIn1Y@cBWpQ`yKH$VTvc z6mo}Om=`%|+kv`zi+OC~ha6}P5^jGUTG0h(VOLjueifYG7%h>Br;QK43~6ZOi--h$ z&1Io}rf;@r0a+T&VmtL#>c>(8e&LMjqM@Z$B-KST zzFfBa*MG4aT!>5@>|(C3j2EAko!zxOmk7G_5{6JNTl(wnh%n_O3#>B@{N0+4qNh|Z zc6=jA_%taf0(Nm?T2Cqa0mw@?vRAK#pI?ABxt?NkCN8L^{7owQRR;<#jABd<amU0R!}bm$uKu;DMW3b3RDBT0~RKP}#Z*GJa zu1Jm@iuy#?QpX>mhdG+Gr*ywrabB1gA07@{&Rk9FWo($BT4 zB}8~1%+OBp%g-6aIhPJWy>sZ}zGpjIBc)L)J8|Ml#N7n|$H~y%|MWD$Na>hIGAjV1 zgeY+@a?Wh<|JW3H!-bTliuZ6rzSQHDO&kfnAZR-g!`7$BPD zPZUrhV~=j>A_qIfzND1?vH3%b;(jg*VVEQx{R7K@#2(A+vOk(pAofIrz(YdDs((OB z$l1*tTwf4nPO0E{CH_@2ihf>G5Di+kA7*|NS)sc-H$W!m&QKy0#kwU{kb{^%)ncj} z#aKKUe8#v5i9v!K4DISh)^!1#QhtMx`ugUHZRPx6`{^vpGtf&8sKsitgP(EswVM3>m>RfuDP(OX4*pz+#9UrL5LCKTrG3JNU4pFM8Xb%HpF+`n zpXJl+K(q_V&Z{!5B<^wJT+E_>o0^HNHep3t3`4T~FkpE9RCJs_XckgXZwFwO!nyY7?PUFP(FsH(B18N@q9S#ik)p4rw`$7j zv@4XkCpG#Z2xOQS!D=buZpv58a%WWZ)>TNVu$tGoyg>+MZQJs#2XC$FNmyfsnEZ=2$al->%_Hw)1`K*aoH~OHtWKot zmf;fA_)XZThfrW8RdsIHKZ!-!a@swmfZCw&qjH*$u~Z08tsUeuR8_AyXb<4(~^r~=w+K|27U7s(8SB%87QDWI(_=@G1?W-*S<$er7SVEpx z;Rw!DE@@=|ZKA+2Pa&i8Xc6Pv5)ef??FQMO$5xR<4l!_pyYW3i?OFqHHpV7u&Lw%k zXneT5$Bf9%|8n@9>P2B>jB3R!1{50J6QMN^*4`#6e)}-GjS^M@i!WYEb)PG4r`#R# z7EeZ?tw@FbH!1qB9yxp_U|Iw|xenWTxd2I`mPD}2=(p=c$UC{1bHXkI8!wF$D96TT zugr_m-wuc(zw?o#F3@)kIR)3aGpnNxK(A(*31IUDx{8yNWMp)dSVLd?T^Ni`1BS&WMbPWWlr zdp06Hkt02~@rF#%Z2x}>lH9`X`p?|Z*nb)5lw-{eE`d);OfUp=Qu+7J&!`tyzGakZ zd?yqzyL?=|cZE>q{_Ilh?q8J-+-)Z%^%}{yg!t4kc{b!(Lfcxi#%(PfHOFd%!5T z%;{gvFTbBdZ?*A}t-=h1`bVgPnpvO1{XqBZZ>YiP9j~c2rE3<*^pOwcZcA8w8 zwUv6JLSumm4qW|+a`@wvNS1hYIdg-#C-?b#o~F~W_(9|b@7ZS1b~8q_a5%h^;AAxD zeahTj+Dfd<_855W;|rwHq2dAB7UDrYID$?yMb&5YZuJ*T#6fes9y$ zc8eU6|9Ypc_I;j<>LfTm0^b+Pl33^3!k#>EA3c*MS@|&m09_u!AK_RUie)tcY`x|w zYxH3fLaH^zg$pPTMDB(3Eom|gD2lTC7R3@>rYegBPgxH{<>q(6=c1;XMQ0?_k?jH) zvJ>0@w4M9xx`!(>l;yO({lU%lN2D1Eu`dBQm#e6B42!E7Tn8_U|BCBu9ei)w;JPIN zj;NH-GIambbS>6Q+;;vgE(5lMBNz`r z(4+7vcdBgV6B`~_AIJBfJKIioqJa&Fb!4h=)-IFwoZajS%gXVGYKG5$_9tLpwn1Ht zAMOXi2;{{+J>{_0L|tt7rTF!`!dFgxO*ckKw`8FdOsCg7;{hE|rl?)w=0cOR`Vt8eP6+pXF?Y~#{g+7h82VWqZNoz4<@VYv-c~!ZAjeGuVpm#5H56ew+_={m%YduF)!=N-7 zOoK+^rf9>{+)rO8CB;aB#w_st36fXcUV=N=>De*kimaC!4J{7=DJ>@hNtm*^gd@PX z)BpAPNF6I-8AzjOav_t-v9Az|@^YZ~>p>hr`iZKzj&(YM1ADH-cEGOiamiGqEA|9) z?F{pWK8u%XwF0I-Fo6-{-DrLX?0@7@m)Fh4Mn#QDD8qv6Se$Wgc&wo4OO(X@`)XAz zwYY8HzXn?BX^j+v)q6R(u^>TARK{y*z3(5ySxiEm1{zu!Whv*&QR{z?`#jp?78<+A5;@~h2&@Gt zY?&Z%K>MrccdYYSZlzD!WxQHk*AtBx%0Pm%^o3Mm)Ya$OcjEDc{usMW70rTzQ{^Vi z#vUSZh^&(z4L=bW#TTT6;7o~LzE_u08LV|Wb%VrMw~h_mp{XnVx-&&colk=EDwcto z$5cpy9WyDZfCuu=hbOw=LVWZ37%d*{l&BNbNTMWB%;55)F}^vv^-9K)MBsQR4a7GS z0|5s}x6=zUY|o_1!jpfYQ2$e6dI@fBO&(hw+4NW*>XAD(^EzFx4WO&wPeiR1@ZTNg zxV!?#D`M`L{n>Z(kbU+NBJ(=mt4w_^5ZN`bV8wSas~DE>0p}1S@IMgg%$;X8wtabJ zxS2Kd^wy^Wo}TzfLVPnAg1>htZX(s?e+W!=N?k^k$KRO?r|dG;vA;Mj^_RLYLnh)1 z^zmjO*n;+zD58lee;EA58Z4%N2?GJx7GlG5zs%NxfP-Q6<)%{KSMYKI(G|PbKa$v0hZLzT z5+VUn6`KBfeCbCgpD)}W9@yjnCV$`xZ&Q)*n>>3yfe3sQVA!%&1x7smZJm;jck>pv z$fb3@vW9?4BID^{j*s94Ftcvt8u0_vl&PgUJN`vh5=UJxU+^sTjV@ww(yr`QsEvlH zi%8b?N6AtUVVjA7shH{X0Y9VJZitTN*e>P63k0d7CGe%L_2d1ww3Os}MkOchpovAJ z+SZUYTyNI>pL8V-YrJ&|&_SxPA=T{-SS2#e+E47i*? zGz~tn(pam*a_lMEFC#OalUPd;v>fg7eW|bRxuDE% zGLHz@hXXVd_MA@+MgJosDAM;1?m;-8gW4vliI6`pn?@-Yrxbh0%epO=v1W(`@)aD!U%8>i_f`1<5hGM z980paFjj)t`NL-**3QVy3)!ZpBL>Fr^?$) za+4VcAsn5KT-Na*h>0&0XDZ>gk#e+z1G>X`K2GtMV`HBWlyHCVOw@Yk+?M>UNz1%@ zdBPTr@PEI3us5&#Fv_&S&q&3qTC=tEGIu{>+As8@SWAQ-v1wcN$J&N0hY_cDbsdvCVQ$O5pV*^1!8Op zNA06(3nteJHuLbQErq_E5m^;O=CISSR;V337(Hwe!4Xx6GmQkM7N!DaGY(a3koTA5 zUwOI_Mk&2T9x3}s-o*veeAT(ssbctZfeYP$O7N^&x)+ouV&AmC?t22@_pM2M<_4Gz zZtZK-In;*S!xp{o11h%rb1th+||g|3L}l2kH3ifXp4vS z=WOQP>cLh3IOES$I)Sq>7LSTeIC<*d>UG`7L7s^`N2&@N05@dy#SRuLKA}AP60^oGDCoaI?KwM<_G}M;72nqz9u`uv6z1_@& zd%t-qJ6^TMoLPhrD>VVy!e6DPQSzAbQ6Q`X$QU^70s28fM!yo9c{E3@Pg9bLir8jN zkVVuYfoj#re=AL_M^T^7iU+5tCm|ZcH!%%XoHAZLkp}$iDoAHi*$eljG9IN&8D^am>yPaU+@f3{FUqvRZVB+bnw%7`F3Imk-x4scV7-x|gSu&_!Kc6;LO8Z>1V5%F4lY&EKFLa*F< z%I!F1FUz$$orT1FJf%Ht{MwvA3HO88M_V->JBy>_&0{hb=qt6u!b(F^ab>|P?TL;y z?*IUL{vZf|_a%_#XmYhAzT0$Jfh1KenpI8_PKnk2HL0X~em;l9SVHyEHG;Fui_}qh z@uS}d$jXf5p)HIa>dGL`QwSbgS*41_^UcwPUsZ^BR2HuXB&g`e3G-kQ9RQQr4%A~W z?3jH5BPGD8TKk`)-n1TQ4T0CXf^Gq9JWC8F)DcNu;(L#>gjCRa;SD3b?e8au zQ>_W5GIUSdBAaj6#zNWx2u}deBMu*jcF#Lw+p?p`7!QMn5Hz2xY z?-2GE0SZu-+kHh6$L(fs>zNDw0@Vm|KWRg*sJ8tP_7oZPW5a}^ja-K&&`UpnXtw4 zSxPf`RA%#O*)j50*)b`w;hi!IPE)Y>Od@duY2PaXEY77&+!cS!J`c?2ul@o428`Hd z%!{s3CK!njjZaGw4=`kOz(1W=?3B7%%BjU!D5&mC}yi+6fRXUzA;G}ywEo#5Z`Z>`W#Z#>jAzu%zdz#AD z?PMW6_8E)WQ4iXEe*qYMZd;{MtV{o{I|kO>zr~iU>o`%5K*i>)+Yab7o)XZkwEUOp z5UWc~tNlfn!mpq5UxqXxN0zgD!NT<4id6n2cv+3Bo4oBc{25c>y7ckF9p#$IuCD+R z2M*05)PTFw@s;1Y;VDYuJckiDPzTh57uQ1BCSjnGafplA_-%5t?_UT-oRqYTD02S_ zi}RRKI_T&K3DL(JiejoOG96rqE4#uPG8@;$419@q#{0V|!2SG&FP{cB!<4zF13Dz+ zJ^mLt4x1&}34kV5n-?T*4w5;Y4`&b=&)QVNstSLKj)5DGTbFpIW+=ksn$4_a>1V?o z)G{RS%+qRa&gOF^jBjn|qt~m=q~*cc?*qsa0bb8toE!>AG=GsxR(2kuwj1jfkZQZ? zhTG}+u%u{Vvq%{TM7g@e4a7KdRx_ArQ<5N^Ps^o| zt|p?%Ff=&L1@N_(J1NlZC5?B-fr==LCydfyKmi{R8>z)EZP?Wi%A(Ut%=9cC75g@A zyTg}S79&5vUDg`6L$3Ya*y0mYDkG5 zT*wnX=9Z<0{~i3htFf~>v$k;4kK%uHo|lkD%or9oE8G#MK^ zTG3Cetx=3oDkD;0p67(-C8E-FBcU?X?|m3nwo7{vS(zVTo50~iuc5TGE1OqiM6DFZgW^O%MBcn~;C;p=&t ziV`5~N*Jj!zS=LGQfbE6=dlb|W?@~vW5x*+uc_rfD9~UAfqBil(O9dVQHXRpiZ!zO zC1O6O{=sxsjmtE}SIaT?wAlP7YvdNV*yViQE4xhgrJcCt%HSSvI9$RaH|Bv9O#IiY zHSJoSt+f5h;LoI*m=&HDxc}0&Q$sQI|0PtRGdA;nfYyL(ScQX3fD~*QO>zU|pd*Jcq(e~Bm3Xo_Qt=ccCurZaIDa6$7-L&Z51qPQ z9fXw{2EfwWmlB1QB+rX<#Sj0R&Jgrv01DLKKateTtll=Dtas`)jH$~KUWl%OHmg7X zn?Qw2YsTa93B-FG>Mde?3P*Hy^s2m{u!2*2$THm|_;D~4w9qzTv-)?{ZJChfDb)wN zX@MLU2fL!UYZI{k>R}N{55cZ{N`%u>!OHI{uRv27IJP4#`YVK1Ab}{N3q|A#r66SE zI@^qPOQuhkv1*ZhjyDCq|A6m9+WD&N_sI{Zp!F`|m)GEW9%&A?4=4zM1uD3ru~8~m ziJy0LV%^4@#JxiniE+j2peCN(EHKCA4$%BX+s(m*(asPfEGvclN-p5mdGpTdA|MO? zw?bw5FNKPs^@7r?UVM;H=s9oxNu3AFe#^I7QX#`~C?stpT;Gu9bQt+HjfM&t7>kAbYWgPO`Ab=%Bw?gO<)J#I|DzbW|-MrU&`4~mWUV#Q7Drgep8 z*Rk0UkbcbVJ~GF%$bq;5n+=t?#sgT#s;K3n;%4SpNjaWm(bPBw7$D{KHi=Gni>p1_|1HQ4IXh|VMgOdOcXiJTT2MDhVsrs>{t#y8-^ z`vs7DP~4aoje*ooe$<5xIVjPRgkn#&Mov4P660`~g2S@7U$EQk--}J3PpvXv#YS(L z4}*T%F_dxTvKNt@j-(*y1HjNpYd=o$LDl%Ut|>F95w2H2CJGGpaq)f2+7jIV+)gNt z`rJ@$!ZAePG=EFc7Pq3WsH#jHtZ6V@E#%J*8br{nfO#6lis`qM0;wm9(X7tiU2tlC ztC9J)s1t-s>ROYL)SZ5*vZ73;^${K zu$TrbxjA-v4BCcpo7xp5#3&mPmW7HQ3?1=hY-#=NBpP7uAbraB!?8If&062c z{K@zSn@`V{k)%W{EQ#f;bEt3MzMNkV_o zvB1$R(xMO$4<6H>EM?x4q}=C2p2ezTF1o3Rj^7a|m&CS<(csg2`&B7u{Ud++ITa$Y zrwGYTeZQ=RW&DfT!GCAYLHoGXK%NRf!+z~vxm~9kRxfb(CdxKSfGc9{v3VIOg|ZnZ z5}*W}w{?PHuiZhn4Gz|3qND=S-@Qk$E?V!fI!{iu9gUC-gHSLkf;_Gro0Hh~3;;U< zZ|0qXr4pdvMX7iz0c5$7S$NMo-L_IjgdCLl(fIRCVEZdcc(p})XUbB-=?!a3mN-3l zw~|7{a`@XKSVr&#lZ%V!szC9ry6~sqGaEvmGbHUt)_F;|Ls=w>3xOg!-z)n1m+zdV zJ8fD{NB(<$@F=Jq14bom1Hz5A1y^XPr;S0f}ZN@kt_xX zf>Ru@7{2~FG21rk70Bxrk^pxAp*kWj(f7B@Ah!_G0MIt&7|?|_P$Qe`d`5Qijh+f< zP6upspqT-Z1Y6d{5F|)LVMmv+hae(Ee^K0nO+f@^ioW~XIV_QP03MA-8}U)_7~$Lu zl2(}kQZpDoPh1AB)$CNAp;Y{RkVv94VE;x=F$0oc&-K$JuC^ROjq3sw zYmA_h``dNS`G6ly z5&@ilYO}MQSJsivt6y5LfwwXHf3@@Jg-Q}P$^f_rNUzy#rp z%=|+^UvMN_i(Z5BvUz0JENIgP-ahfNNl=K$S7r{}3|cymKUy-A2FWLcmsvZ~pnawd5TX@9A}HIp5tpRGcUl@1z`Q z2WKDECHZsq{PpL*6HoX?2(0D2qqAB@XJmyLk5R@W3kh8SW#)fXq~7+aSK9|AdY|~0 zTq;^?yJ*NV>GCmGbDv2k;!y7J;&Sv%^xAKZz$tH+AqFVGvJd zViLxDCwJouSdw;mk}A#5(YN;z0M;%jn9%1pB2={cC3y`%5GYfb&3P`A?=`u09u9}K zt-w8^`&dfcJuOgm2*&xfVa4Rm6tvr;J6d2v15Y^6umv`!SFe$=+z)8<699J?i==zc z1KMtvoqt-SI-mRS=n|av#i1V(jq|VS)BdOq zAap8F0H-}l3}0>o50um586iZ9#M_Nzr&v|kogMQ+V)LJ$8vB9)3_|6b{b$cPP437w zsHh}y*Fb9jb-LSt$H2NZ^r{0-PHFDA%exl){7uF+x=Ps!ipL-eadTguDFOe~#gLw7 zloWwz44+r+gRgr*{Fau=*AGKZ#Gx zU-8S%zP6%t-OmB00j9`L3?jD{${TFw8QkzQpRYd!SZknSW>gpF+)M@i!g=LJ8ZE(J z)+^3S!kKUgUww25nn&X3tLUs8I)IyF-X*akz{i&Sm1P3oO&luBe8)m_d53;-cPTUp zLPQxsA_kMDE6=Ra0gPNf9qLmhrt?DVWjIid0O2}2_Cd4;Jz$F{eeemz5P$|=#_r!? zCKZecSWo|?nK}TpYZedCLcGNB{{-`1NLu!;k_`~Z-GN2RuZX^^P~C5^qM~JIL})K! z&4|Dgv10Yb=`#SPFgn{iGRgo}E1%_(dnDlEMf#%K6REE$K_*yjV%$kHI+75~mtkd( z9lshOJ0l215|OLM%#m)ywNET0s}t)&tLq4-4)6Xs_JJPY#J2OQV+qXqi(&j0eR~40 z-96$QQ+O_LV-<-jyR9En0Jl*3KfecNEAKLorKBLr&|MnRMw`}S$ zqS~tCrO7KZ4ZXKw#x&5Z#~`+^T^_vfTri#Oe+Qe2f>m&qnohxSSh8*G8I{g6rSZ-dPX1Go2rpKd{^cXU8Ef z^xp+3AmFE&S5MOTT1=*Yo-J}3)Ch17uvvINgtedRE_K;e(S{*`vn|Cw!OeF!GQ%$M z%H*)GMHk|2hQ*%g&`#0kmct)X{b;ihcWhhc`qbd4-g$B6q=nQgFQsn611zTU)z~YU#Rvw?t0PT^4WEF{XgJ%aSc@t_9x?8r8yt;T0N`H2-T6O znQ#pi!`1dpwG(Bx3oxzsDuRrp~{ivy3F6OWr%oCK&_L#|G&`(SC;!G+kdK|((pv;f{?JtjTzGV?tY zag8XO7?BY%aUWa$=y=^sYJ2eBSx_MBwy%7{x{R~uiTz0df8#!3IZo^o^d+&a#IX99 zVSzZTCthqzf39+fp?xEldDC9*=jNi{Ra_~Q*dHdJY64L=Gr!1$gH8Hjz}~i7gH0|; zrCSDjarCb_Wco01uc>5AO4+yJh-UEk(xxqy%(3nxb(99hT;ythBiqTthBbm8D{RO! zd&9uugXZni3!{h;j{IG*@|)a8zD$SEW(EeEuTUQOdWR|f6=+iZih@v=_Dfa6bSvN} z2UE&vV+CMYOb_4@GcW48978ofEft8mO?{r-jv=vdtc~i1#X5|xD%KHv1MQHj3}+TiZMXbU>Zx-p3_W9-f56U`)pK!P5ri7 zAl)@(vyU04Gv^cbJ}dl~wWsIm>@vK78O9EBpX#d{wRkZ6f3$${m%QwL*b;lGS(+(m zZSUkOR$4>QSw{eW9`JS;+qcNP0nkoq_p0R|G3$o#sL9%Ka-GtWu4vun3%ehphk=01 zgi`t-qyjj}^PAYpuK# zT4$Lae0G;qfd8BR`86DvK68{RX+v4YnPMNrXe6`TIro3l*jhr4o9lmGJbW;3IeQl4 zdicX>wXFH7%x-NF{q+8W5p2jE{rv158_H0gdOth*vR`~a%ChfSi&M44!9AW_0RwfO z?N7%5U-pu@#vA5-HMm4elTv~!ff!K^5! z6*s?qbBs%>N6;}>El(I8KMY~28iA)0=J?g*ep?QA7n^9%B-FG+fpgX)4GMvW#;_~j zblk}+E>l#AUlz$KFduqijyV`E#%NdMW{EdFmq|75zU#HTuvD>HBVzv}vN*zh(hVcN zGtMBZG(R_IV+)ya3X8$ZLJ!KGS*MkS$%;wL+H=b6YsQzYq{!=x9*PlP5KdbmK@)8y=>qoYeMNWdgzqM^0fVIXNIuinLU93 zM>^WvMzOd4oD0ZZ2nBbIuXyUhfuNX{ZwJME)yeXeWX0+VW8b6xMr*sipI3a>YdRLY z@Z`3)Ci65PKEn;gDznDgJQJ`KC=)%Mz}(8;;oD`8pgg9oU zD2aikXBhd2wWx7)xjfvE&z0C`JhaFHMM1&IrIvuWA)Pm5bh^gR`rjv-#MA0K3n>wg zS*Nui##8%pwmpctyYEi4qw`8Q>JoWP?xx={4f&;8VW0&k$^FD;6mR(RCAc5G@D-QI zFUg1^M62Fb87J&g+5>wA`{#`gfo=(Pv7nqJzuc0akQe;CTnLZv!Rs6QKztD!g8S5; z#53m6+LmY{^1|8G2AF4cvrT!1E0PfS*q2vmxUo#{Xw5`w55YsC6lOsg|F=goCN)D* z!hua*tsQ-e-4Jc7Tk~MQBSX{GueCtK2Di;bCTT>6ju$GdQ__3 zxF+AK=Umn@dnUlYRIj6kctlpfYN+|Z+n{<6#RI!K_yT0;xY#2)C{kzMY0H)Ah-zKd z0kMcuJ?O9uObjNTySO}ylGLnm-k@mo{jjT;^o?>aE7&G1zirO0hC5iRR5U{U=A_jo zSNaXPo(o?HVAG@|3DktpqlT5C0~V1$=k2YsmMqTni{RrcFXYh*%E^+)dqYrv>HoPG%_f+mPzv2X`e(WoSx7h|)tX@k+lt90UM) zDhBtJS!uK+Jmq9M%3`9w?(i%Q`wgaWhkmX(J-M!`v9qOdao46|i0p6zYSjenIykhM z3Lj;JGVtDNCX;dfl1Nn3Pxv`enJ6Ip%h_9WQrE2eMSSCr2wAx^k%xR9_e}&gmW-)I z%anq+<|>1e9)kZZJd`3?PShuy4fg;Q1!9#r%Mj#7Pj|qMgx>D=TCKUzt)vty^2i2n z6!YeIX-evOYRCsOhYSQnp9;qut5>GmX7%2h=+B^(78C1(>`&SsoAh4pJUFqO8bRU+ zi3Q?Ov=bWDtxRiB>{KXVHcBM?#!_g`319rye4@8lEDNi-9^>o1UbR&rMK~0+*uJ}% zd2UoLy5y6CN%uJxt}WbjrC^wdyL4#D#6k11roK4%Z~fW>L(wuM@0^Eb&1`dfbQ5Ol)3;-Nr-SIVnz4|^uPMPY=_jz>sa*0& zd)z$c6|wjM%!eB+%30eOhfSqH`PqD(r!s4I$NHy|*XMG&(G<#o!s@&4D?Zknl&&}n z?9Zx@%j;7@H*)qcel{(sf~p*vgX>;X9_v4ugZ5?9HBDC2DW&a>0ZuQvr=l@-RmO9< zlUXf}ko9RJ(~*Bd6VkA9_8aqRYV%WRZ?^gKZU+K8>m!XPD&_M_jB)55gD2Zfkg>cQ{Od@T@UZ|&F;RE zXx|ls_0c=gZC-s|n@H>DnErz!g=yI5H|ZyQdxqAVgxyl(9s7e7#)s%ek@QR+h3GZ! zXNvAdR&%X(+gy(^zLV2hzLEA)N(YiMdy!s&-lK;^%f{z!WOPp&lw~H$W7v0B^|wA? z;C>pR+U4ySi#-KffPkMfrEm0?7} z?e^xXsE>u6>0-mYj?5w_qhU<7oFzxej|wVGj!2E-1|m;(tNb3i+Dl^!=}y82E)B`C z&D-~-e`-A1v4D6fGuaJ+qUyuBeW#bJ%eRIP^ugD-2AZjTeZX)0Fj#tr#*ga;b0}TI zY<^Yv$D)ZhW;d^Y`}}O$jjQTu+;vS)ubL~qKk4@p{eI+Vr8FuxYBU@%;E{a`j56M& z**)G0n#Hl_d4cE1Ju!6E3GTyJiHoC?Bqc)Cs;x|$B+VP%G|B>#q?W*soil3S7;SIc zIpX6pzx9|AGQk!d#P@L1`@2PQl4n0xH+~$Ofnl6wpOA+RHID?rCDsE;mKa5t%q40_ z=B*?NCrLq{H)of{!T%3hL)4@S}9d3oOUy1eQm&k=U7Q1Ye@pH>62+* z1eXG?)$uKfu~9M+_qD;BmURnpaSb9$OMSGCpOzEFCH^%6g`fs#Wl@)?Sqyl8z3ZvV z3A9oYHCLvEVS2UW#Len4BQp*$%WspU#aOKP%2J5p5iL*`vO>#gv6O|Wy9gNnAeyg5 zN@TLo^3ls4ay$IC1_~%m_~Wt;P0(kx=d;MDUQO4o7|f126GaNjU*4R zb;_HGfwMmOqlpta=NiYQS}Go2VScDvzj92dUi;)_bURb37>rNj{n}amY=OrzCa#>Y z@c4N#R(D^n*e4uXu46KUH!^&#DShGWX(k~|dS-tddP1o39HG$>8l1Ufc|W@hRPi+! zTS95Ol_9-+COa~MW?KpLlDyjU;@wn&{?v_6Pwvwk9KDUkJ8PuW;=60IAT`ZjafG+EpG5T7TAD;9DT6$;WgdtNqrw{R-r6^-h!5rnjjX)C-y1y{n21#%Z_vzAtJe26ZpwbdIhv%m~9S zkT9LlaoHW}BRu-&9&lNY9<;gaf8T>vIZS)KOk`SgX=QxQk4)Xo+=)YPj23y{$kN6y znK0U7;?vzieiBO3kNqySme91pW(^U`oNx{Qw$FcZZkW$xv_kLDaG$~SQ>SrPHD*)& zp!=kBZ-NV*?Bln3m!&?>d#OQ}%T>=jem1>T@_=jCYuCj|ELQaJ-5W3mbx$|4Xml95 zQiO8c*zyi#^kY29-bD+_55BSKrLB78)cqhc2-7FDpXU8BBwh1ca@Vn#J40R%o+Bjm zG1)9;rqPerp-CU1k$*UyldLKH!fyl9u~zQb$$XN=HRI7p99{D+XqC{k#b|2vYZybD zN%@)mWxs=Pi_2;ktPevwJ}k951~=HJl5^Pxvs&xC&p%vuM60p;Fc_KXPZjTBOr@8L z(=7rfXSxjXk_)y{PFDR6K3hyLySY<4C}3Dj;HKlTo9=J=EzW(W359p?1`kPX7oWPjB~9h?O+}=t8#K`=H0VhtYsGZ~ga)6dzL|qR;=LZ< ztl{IiLt4aMN;)YhgM(BBAQ~-sC=+JAv5$}}?5`yaFObUg_}J~XzYE(9LmsB%=XhV? zkP<-|D;d81=_5@KErL^Dxz+y3`3aau83VN1XjM|uI@5^7P(o4SUgG*@PX35is%pob zirH~oW+4(5h5EM(pT;MypJS5vF=}_ny|9^FAN$C8u3~nPP{zV^7E!IY6kl-uI(C!5 zdF%O2$(I_ZUvnNQvS3cqDVNH~BlK`Xtn+6))=inv4|uELjD4Hx87Zhs?NWP(_nUmn zY)(k+a4$(bl6Qp(h#B;8&S3}e*31&LOq6A&pyv}O@FG-_nJM@0flMx@cy8v!%Ow1K z|D3aH$-WL9B`(18PHZ;JsDpOLo@_%I7snj%T5xQU7T)3G0yP9GI&i6U<`>F|2d%p0 zq*MUAl4`W6wAV?YxT|N0b5t^VwjCGe3(e}eX0kxS%@>UoxwJ;*;SaP7SZAC#wsy?Q zE`Za)&kUTmYl%kJ`Ws(S^T4j}i>BeKMZ#zFlDAeh#KL`bt#BruJF`BiRY*55WjUuS zs-?i{Ax#xWL0M)=9A7QqFL+LKFeOUznza)YxE#>o>EFWPP29yg*mngLFa$SP@=GLaKZ=*7m zEvz@<9y%*zhScZA=;4Qh9^~4v-?6n7fo!$pYS*E|#E!F9jG{w9K6_NwqQ?H{;mw7+ z>@n5)?175Yu`Q|nxS3m7BLRo+Liu8!poke#W8ewXwO*?BFDjfI58k|P zd=himQT>(8mid_~#nSviP=1y^yOuL2O7*H|#7N^<&ALtbnG^YwD<|!0a43@$rSeoa z-Xtg4k#ROMwmXUW#GwCh%%mZ1Nk1?%Q$D)tn4ysdGycKF=Sl}kg)j0EwI&LYNy{F| zVu!oVP~qn(7!bQyz0I2>IpNudw*guBrVnd7`!cJw%KuTSg|9I?YEmFzx29n)h_RI8 z87u~2a(JlJ8ztxGb-Y>Qv5nNonW{-Bf5YH_(JNNygmX&E92qS$H}>!iJrZ78s~1_5 zB+fVCVyaWdRc70OUShR{EO@nUHn~_g9}1B$HfZRyfosQfh1E$u`$NlBzwDjelf%(& zW5|NjT2)~u^Sj6t8MBbt)mk*{21<^>n(USOYkbQyV^VuB4y7uj*D9twG$3ONl%W>K z4eLThYRNL*7ARqN!^MyiH)+b&ciUe3qILx2CzF1CvmzQ4HAgxSYn>eB>}v<-f??QA zP{mq68kalQA_1(hyYo|DN3J-qagPyR9(4?`XA~JVRIQer$Q9ZT&K)_vB0(3>G55R0-ZP{d1 zZhRU_-fYS|6hw!^y{nFF+=9VNe=1s4VZB5yi2BVkoglE^2_fpjWVTf zmA5C-3GGFAFC^2~+!mb6EV8STg#rN5?@Jr_har}#3*~unA_2(|Ynofx+7=n$mNUv= zaRtdY0I<|WeFT9Dy;9%=b_JMoCb37i9a(^SUy2oL=i5I(>m&H?xr^xDe9tFK^E0G1SQ420gOGxHz!HvUXD--OM1V`HrPq7o;N)wK{LN2tI zV&V3f)kvKz{?PT2m$vkj-Dd)F`MTKF-mw!(KA)b7(s>W}A{kt$^BmdZXupY(%84Yw zfGmLkQFA!Op5R)qH_L5R4_gsC0 zEBLUk=RT=0_}ag9)qxxh8eQR3hBvB>)7;3=gVea*m>-ni6W8L2jqpbMRf) zzStJmqik}ypXJ-ZDhMZ@7!NLgIKdoaw?<9xqXWz7ea|ev&cxY|CoJi8Ki6fBpQIg# zbbjmo*m$7kNoqVd`R!Y0fylAKG1_l`*y5e`-mx@I7#jt*V8F&m#ooDZOi%5*XU(JS zAvKsqr`zLK6<;47owye3*RQ-Csi};nlvy`xSYbyAhge7uZRv9cOsm6fkG*GeI!ben z`d<;58$~B0sx4B8s1zcQ!;i`dF{YKt2-&7;##TT36%RfO!Hw~a_2k)W%ifgG^pVbe z$xx=migilqt!=ygz1%UjURTw{sc*-x5<}Byk|Yx}Yrrjwdw6A?RVi7n_wva;IEKj_ zR}9f2ib}ppF$dz8kQ1@TwvfPWK9<3{OPKQMRgN?20!^Q%HXj2&k{WS=$nQ(lgg~Jm(jHzRVYpHH%Vn zB!G2W;#%LC9n#<r7$XaIXmVs2Ux7@=9EDE zgDhSL;VQSj`9-$Tu+yY^ASTw=#}4lhf|JYY75BhW>svmyXU@ z#L^Vu`7(BwtJ-18DCOzzyYgjbG=IP!OEfe)ruMT(4t||wqY*E%aqa#f`qat5I9G*; zf)@*!!08^!*(+H!_N8SGshmP>*6;{MSEJq_V&Q6UlZ9|m=&ckdxJD8BZ_9Zi!#g>< zkee@gf_+VKfbHjn3Je=Y6rY@UYHAQCAF2pbqU#K{uc-(_U@dnnyXQpi!AbwqvR8Yq#xBYji)32v~nE@qdaN&BdoAn6^ zPkSH@eXFtR>VLf)**jnP2oW7b83z`9A5Wxn`He zZpeM(S=+T2qg|UE*>ow5A2zsD)IKR6)OCo$e60`>(WP540?lQ518OS{He4$f?ljdu z*VcBk?*cl+7#TiaG318ws2nef>b z!R(3Qp-K}4KhxU2`35P50?P8{Y$m$6R}?nMc1i(1-dts?Cz&+9KQoQ%7*0N!8DKkJ zHQ4n^Iayi{A?It)D9oDkjFHORHFG8dK-7haNc@h8XdEI)rPT0; zG7QbAaHT~?+>BEp*xMHbVmIAEgbrviQ(hTDgHnG8|L?NKg zI7lr5rt#vP-E{LX4mp*|+>!595%!vEc9gb5L|;yCeDJFVWF<%7G)O_fnt3m)qW+#o zok`D^`h635PkFIqytLLNLwa=;~B&tPzJw4lT9i(}YO-{Q*tqx@_UL zvCiZe-!vPYtX(v1>bxheKB+?%z&x1WkH$ht{_K~zmyj`%1~c0SrS0+nRcq$(o>?r& zeGn{7RDp|pWeaJLLR=idZCq#sL)>%k^6B%{pVkHG6 z+`Y&7U?V;w=ruNi@}#ah&uV!~KEwllt_qG5?@v4GiOTw`Aa)!BseeL(}%DiWz&hXw5y4ci<``$0ad?kQa9v+nx^LuosExbohln*JJHf;-k zB=N=qaVII@Iw@K4>RK_k8?D9;w;xOfP-OkKx0GMWhIwOJPGvoAJ?*vw0pmX_FPhoz z#|2r)qb7Ub46W17>rGx$-jo_%Wc5fKo z=5gtt3O$I+#8y!nu{5*k>Q!o#ZFRSeAn)4r&4%NBRom)8TrCR0Gy7ImGxLsdC*_8g z6L}KL@BNLX0UYL8Q-s~castQV$3xN{nB5*}rgY6;*WTk(U5gqS{hB4}!n9oy#sA_; zfIzrt5~{LSlDr%BJsq7J?El8<*Y{SZk*`rV%6083b19plTXsbq5kD{O@w8oYV=-r#f!w( zhrIC@HFI7i^xY{Jlf$#gPwZ4%_UL_4Poa3%=+24|xh`lO2#n9ZeJhK94j774(fL1l3Cz9%`ybVHs#w>9UFOk0f3lF?6y(wgGc7nZ_@thZY!5m4^Kt!i@EG*;c8Y22m}d>@;hXPAUMn#Eot-SLaD`2V8t}2 z#QGY~@VyV)J7cC9Q#IaBB{#bFTrLHB zD+TlxZOc9)twhMf+*`lYe0YuYX;`rQa?|eU{#&XO%`#LldYOkUtJ4lOE6H4CUpSOu ztfavBU{l{$DZJ`!-Ur8CK6ZkU zc37g!1YW9RT&z-|a-_a>=?)%kFzs=b7bHHMxU+Ky1dCf{#gl#|n-y|$)esiY(8o^6 z>w$U_Seh8cq=1o$L7UTh(;w9^q1Qx{0n>Xo>N?tWLr!*fDaUVp^L81C^7eU`sR2#} z=G^{aN$c`VzqEU!c3+f=Mgm zU?+6n-Ki{}pQ7z}WkM6DQuD-P1+EZ5@E!(ie=-_o1@_QdrpUwcapz2UPw0QD#wapF zu{5o(nKcp7N$I0v%WQJbY*9n)4cpq1QO+J_WxXAMN3euC5}WXXoX?FwbLR^sTyA^G zQy8Qq7j8{h*RXurD4-bFd;^y#PhQ#zRs5DPse%*>Z)jf17#-P@sKh@sCe3f#?R6Y# z;D|=8ug3HH9#-@ubg{INA(+9a^h(ijgrHzyLmj}dZU`^lK`2@v!_g} z_im1>XW8V3_PO0EOc1&?sXjSS)|Y@=N4ap#)XOXCiUiHr(z;ZbI>sJuJ(*^ZyOxQ5 zZ{hN*HuJ-bm%w_phf=!S=V4B^a3iM{VGiNFYJav4WEN|q-N{B40taVhfPbflrtWC2 z2mNzM56Xk42|Ot+gHX2hq0s%e(4v!5O6B)NiG{!J1wHEvf5c>*CqL1*W~C0IFIBn3 zGYZ%b?iWnM8oOJXoe%Z`*V0{A9@PaTdCX3enY{CL8y|;sQ9kIG+d8za%}t9EB0^>^ z#c^pL(AEd08lA<@pj@?O@Bv)V1pz*Tga=9Oi>Pjf(9lIA(&XGdnLD3OhjvuvFbk~v z1+A52SSf^jA8H)UIfTXugo?tvg?9N7c(o_4+Y8g~_5y|?kJ0|Qx3U?zZ)^(G@9E}j z|0?-ThBO4I@7at(ygQJa981_>mP9bAa!&VEAh{D8WIhM`mriOC4_h)d_Oj|bLk?a` ztlwXf#a}ULZT83@JD*p;FW)bUCN1OpS_0JS7`den>b53EXXb9{3zLs;qYibJgvccJ zM705y4B%JTAyG#5w8xAPkBuc0*CR&ePRh;UR_8*N3Ll4{vu+-KpS_}WOGmAUqS?5` zzEiz+$uCy%{{G0yX2u`f0dezxsJ$I;G^v!uUo5s;A|KMo2FJaU#b;gYNwC}Z%a{$Q zFOkK|nTWoXSbf$x0+#+#0eLI<)ZJVlU5M{#{P#3h&imzpKP{ z{UO}Lf6Lp%1;s@N&@Ygl7t8sWzJ2S2@DA^UY`^m+ss*ngo+re)@7Fm zr)2aQzdeObnyPKakDQO!=J1t{#Y31HdC*0JZR!1XdCa41=Q{?!*w_OZ8ma(2f*wat zPxcAV8IP>Su?E$=>t~OT^~pP9cuK_4P(Tt(o2yXqv(!yS^Y=-68XUO*h^$;656--6 zZhvRB+5+L^{jSis)BO{e^=XG!W*l+M1eOgE?{`;Xu9~J*R#jtKcp_TzvA$kDP8<$p zR23RLe1qMcHcFm2|K%K55!{Z2Us(77h>h<`0yNp4t*8{ELaM#1F)JSZP7COZxHzA( z-&swkz5IFT`_p8_x69RPDS!c%BQuVJvNCzM@x_BcfUFDN0l$)x}Bo4;7hF%6TBj9k=;QZq+z2G`{? z*eE1euE@F1!nIGMSAupkK6JG8B`7e@_&x12#x$JbGw3>qae`k2Q`jn9pJ5gTaYxd; z>)?|W8fROW%i7TcF<)GYrEZ-B^f$l$%H5M&r{8c*@A zGCGn?iQn%e0|xamF5Fgm(?D9gRBKsA{ul`G_kcGg+&Sh{8u2aR#S5h7?S_PCKWBU{`Ft|HLpsVhc{9 z-V0z5c30!=x%bl;YO)=LHddy-X{%`txdycVDqPc^y?Ae=o1(-@g=5_x?}^M?OdZXqKo} ztb-a*xiNMhd~*BQMK3c2cEZ}c;0o6kVdHppMqTrr5g*h%W+W@$UQF?FIG?zB zGm=(&(kxxj_XtrlP?y9Cia_GcWsO|cTMCUww=Qo8M3V^XOTts~qLb_c;7YM}Kg0rC zvZMbcdba+A# zw}Q_@Ob<7c{*(Ug{nLb|Vhu5WZ#KXpb*H1XtqKdnxS^yIB?4GvVGTaNq&ajmIbBaV zIvdTQ3dh!alB~ABFp4_G*;1a#tqz@3gjhis-)<@Eemr!gdn1`M97XdyX8~cLLwL z?$IzK>#_a4*=O;NYE8-)+Xa1%oOl9uS#s$hsjrJsH$*4nL8Fb48uhO8XT?7oqZUP^ z*A5AEd;V61L1JBB1*c$OU+D7PG_a5uK8Qbdwj<{>lcPi-i?P6C?OTh$q86J?Guu1e zASD=z2v34{J!JyWf-XOU)wk*Gj~()tzKUL`mM2F#+Qq9;Fy&cxe#0L+wFRCi-t3|Y zzl%8swU6F(p!<*FD7Jkghd<@U(`iZ_){!P~z+F|~*>CKj&eZUVvA6^Ihksy7uO$S6`4% zANb04(pY0gU(7RiyNbYRkldH>Ba0y2)kc!HTOL*z-@-c|3HlB`t9F&r57qm4sj}kD zWr9yk68YC%J;ppt*5(YP5?==yOVrPL9yxL$XXOCST-}tWyjEu{S}X#)#Hhfa!>Ox? zMmR>>J*{UR;&fNrkK0n6GK?2=dRdN7x&G&57iEk`P!tQ73$y&Vta9~c6jj=gSiN5U z(F$#c*Sh5r5!~)u^(g{8%|YYbtm~?!hS-)9mDs=M75`Nz`7qX4h{ik1qq*n~;)NUw<*Z-9AEqC zbk*5QK&0I?|MDV)LX*czz=bEd0<}7`OD>1j64v`#rYRjL`PZp?6pm=RdHth*=y!iH zQQI7E2gH7=XKWw;Mj+clzyr%x6cBoNY0>II9u2Z<{QZU)6I~v*XT-rMWV6-Ap~mbi zD$KMr_f5Dw&@Hiv@7Wtoa45rZZ)i20rU7K5ohmIaLX^Q|(-wd~NR~NU@lj7O&jCeL zgmuyPoauxb1PD(Jq?y#6>JTti+kAX2-rzJeE=R%i;Z3hyYs>a7SIc(p*O~Zdw=l02 zr^_kQqcc|T4_GSki(y(Z8~bvh6|+>?302^t1+;(19TGV^A?7*r5n^24Gn-#!8)HGY z5_&Z*+auLOiQ-#Kjrp+TGcXCvKi)_~FRR78(A5Ai&?E7)5fDE&7iE%Htk7%UKM3v4 zLJ1F>kXmFY6P8B1FgmEzUp|jIbWtVp)JZ)0Na{^~OZ_%Gvb-MgN+;7;EBfLoauj7C z&^uKmn)@QJL_`Rbz|K|uzM0mkIGKkJ(~G#)myiRdQ&d(;eB!4KAR|3Z%tBt}%x~}P za00u)S(H#rZ#nR7M1>rvXtqyI+WhHBoxRt~rp?Pe2Om%81PjOm1tM|YVuMZLK9Jr~ zd?$1n87-z&cRjlL){q_7{Lj-C3w$ak=-}cQ8c*~h91FLxqW|}nc zW~x77X}t=fHWluU2O`fGhcftgw0(Alwbo^gbmXekKas`LXgUqmS6l6E$-Dfz$-t2! z+tyORl@&C~Hfe_6Qt=1fYh@6Qwi558KIyJXq0va`e7#*z*!LC?ElSKYp;Jy~{7_Pz zKhS=|RAe*{3bVE^W+>ET4)XKic7Izzgo#Z=W&Xi0QV3AQZ30P{RLwCj6^8s-2e0KSB zpVRvv&IisOGb9C6{WVbFycezY_ofla9`WEIVRE(&rZ$Lm%VS;lPdA(i)buw26Lh;T zBAQd}^7JFI;a8NL(I?r*wfd3+u#u5nyBYsMT0@wR$XbloenzWXT z^M=z(I0C5JkAn--Lgvol`p&DtzzLeQacbG2v67r@V%mM!QkVtPR;hN)Pt)K(?{daDnR$zv zHE&%fzrt1KI9w+1;ba|6JCCp4iEJXZazT%CJMDO2FVs0%M3mzjSY~@;A9pSFI~GUF zot5oqs2p`!9JrsCe)!$ReQBBh5e@Q6hMNwS2Jb=trwRbC1w$}8UZ>y1Y-Uuizn$#+ zyPKl?_gs2P+T->ceh)lo72a>#ti0#Bf5QlRM%}`npP1oz{!)0#=ezV8yeA}jp0yv) zA{(i0qB6-go?NgGTXqO65eptz+cTzQmMqpb0IZ7ZBb^7pr6f`~Rp01-Fey4WN$YQgvF`wk2we z^vIw4LYQNC=9O~Ab+2+J^GCk57s`S+5@Y~{)g&=x-Igt_4Gmxu=}YFJX%+^#5Wbfmjj4L9%|X|=yWjz@xwCEE!k0OUc0`CN1ThVh_@4Evi6gKKMI(VFpZDbFSYfn zDKyjp?OB${da#N{ zVPr;7>Ro5APR)sqq+(w=JM*z|$9Rfa*>70TDQd{RJ;!7O(nG$YUz5iBScVoXOP-p( zh~+HqI4ED9%^rfjr?aQ8NwfV9G3eE$NVzXY00!X)9;R-XJKWnI9F#eq{OAu$#>Utt z%ycjLSY>!J9OipNZ;W!f(0M{E*UkOXb5?{NAN(BZznBBfR!2yVLWDzDK9f$iNNK5%8d{ z_!=ATwBE*JYL##*ZcU_Y_EJ=n-r*6Jl59kvjJX5yLM#bERI`m-&AHzN0t}DT=~YrI zQ+@lT&BouC-62zfsZu;%akGw{W>jN{y5!C8{P0f=f%XEN#UOT;$;L=Mg6f)bQVk9B zb6%>buD<|wmP5!unTTT80WATwNCDF$`i<7)(}Yg$oZWGx>AbnpioF+!?==@jTg0SO zJa$A8Nz>xBF(CAck|Oii$;^c6kt2D5*WB(!yY7@Vh7mZ1WSnW6c1`dkeSgU}QH?mH<+NU*csacJ+%Fp__l^TMQ zNFfYA2aJg%04rSJ>VBp+jvU`gzG=i_%?vu1Ywf>APIm$*CjfTl#|s~g^}E0wXvilL ztTuH~B>q3^4jO^(0L+GL*2*I1bN%bL|9<@T%j9T*ML)rh+rC&zB+{_S z+Kz~ivV)xhMJ)@bN%BdHWaOeM^_GXgii~XA%3gKF9H&0SK0xhEq3^)&<;}ojc zl!IWkDMXaxK&{*4AZ@*U+x`-~)=NHK89o6gj#^N^3EcNXll!WQetQ$Cf*~b4)88%9 zBQ(i!y_K@)aw#&amItUwjMbi$@tRLJsT1o|BQ+`S0@0#=-jitz{HII=~eqHL1EQx49%fF zh34)E_OJDqdZHtty_F^j0*P`?s>t`Z2RptP)jW1$8+7m%U{cJ>ecVbV7V&~{X^C=4 z0m+#RLX;2%Kt3uk_!6}%RTVp_6XvQbAFva&3qIr4nn)@FY&LD&K z+EpgFXzvmwAvh&vCR|Bn5DRRQ)j3@47>ouvzO5)NTK7^J^f4Bg>b-Rpm7);(fLD(X@EUXkd6>0E(VS|zj&LF;O*5BF zR61GWtKlq5x%j&0GWE4(l8o~cO8nYza zz8L4G_{YEDq>fPDZ-5>)P}29Io**lPXxx&;Bq2?0m^|B_uq%{Hz|@7d1P=T7U9P@V z9)46e)k(+eJF{;Lu=E7AoLwr#|E1h$xN^p^yQh*|g^~-Ebdf7^?15GiK2sjF%!kN_oyIY4L%y1y`bDJ0LT>fnsa{LRsm6S84~ zn4!rez4Y7L)3~5>Rqj%V;P`?%Q6$}b8pqB^H;uJcXwCMe$2uXlVm;6FTC&uBNZ7(9 zMj6-3^iYH@vfxxddY*Fw>}hUbJyFKOlmdhaS!aMrt(3PVM}`7y#H=I{#dA)*0l*PF zH7OFnc0(3yrZ!VzZ~?QUyux66d32p^7AqK44YlB}2IAqcj_c>Qf(?0DMFb;L{JQ%p z?=S=}N>?U;pCXecAL)YM-FD?QO8&FKM`XY|JE(j*799Al>q##!r8u-#`buxbXyN6rqa7y_< zXn@R&_8}z_d zYlgZ6v&_?vCK@lq(ktn9z9f`gM+ABD6FYG^BPTlP!-=2jw15WlU9S?jB;k>U+s3on zPqoCl#qK9;RaOOkesV(Og$Z~UOLX!i>OAZsJT`Ary1(;`>xTDf=kFP+Wf7jOJVn9u zW}P=qC~ez&zL|ebqyg4y@qQ4z2n3j1Ww)79=H1}0RNKKh$km9U+vSYn5%aSASer*f zzYCV_=1j7XoSn?O+B9gLQNgTA42vaYr=m~A>a+R$SG8R5bYN)5g3uCUVz5&O9y+r z=zbO^E@9&#lB_6cnIaW~tH73H$1>Nq6>?pt>qGMWRo!=PK4~}k{(}!ey;;;{fcSnq zs?;e5oe-sTBJKA0vvLX=^_OIE{gXc&PHtr(E_kJJ4?k8c%5sXY-Dex6ckg~su2Syv z>E6@iiw3`?YqAo3*<9Z2tw@tjISDb*`K}s1g6<6Znn%3N}D{=pk;|*bpS7N@fJ!zqS5uUbzM~TFR%haz9nnCCpf6C#i0Q2TEf3& z>3dY!-x8R)Fz>GDJ*Pr#uYXVbd(t8G{0|4_?9oIU_%w`owiYEE%}+r?Eg%gM?~>$4{$B=Ze-KwJ6?t)>I(@a7<(J^As!`dXM&~7cc2;@ zSDwwjKtZY-De0OrEG9ZP6e$WqJ965nC;(FC_ z!pu+`EdUg6rF8nrLgNq>p+JQ_fW8km3lSye?zZ_em?I*rcbxzC7GUGYw>Um2=73UT1l?f)NCZj4NkY?M zdvQM3i`OfZQJ&mpvSOS1CTgbkMDK7owk6*2lEtlu;RjU}id9sS57W=HD&n&S#@2BwPs7U7JedD{_f+*2O5DvRGy z5}Hxg-A=uCPQGqp+5s>1ys(wR7Vx$~*m>1br4yqk&|FS&JyFKTB+0~BF-X6zAK3p8}L0?0;YA(2}>iweSDG(5zIdhIo`B}MrC(;R981*x(=w|JE`Ya zj+NgRQAaZOGyQ3oRD)MtW=`@EQ{c~|6~vy z-F{jAj~^1w8lqgQC@x3v% ztRl+!yoC)9JKG`JydaC8&f9MCp>aM1mP&7jke=wbAszEEY#C~J7#jcNq0PmB^g;AF z-y5zvGagZ!Fs=BI^Hel-i3IM24%t|fmMtjrydCqd*rsmxK5pq#LN#k4E6E+?WTYem zACni!#;{uUDHKU|folCWySMf-fc6Da)(kdSw;>xrG)kg@(SX!&Xu)nSYsz8;`wkj!MC^U4Yc!ZqHKLA`Z4^#s zyk~2_5K)DwN>mecePc(i3_JblkhrvI^8Q&xjMHQ3{Wn>x67|*i>w1c(XEqqVXubK# ztN0&-I7qGOt(ic|N?=)uZx*$JFD_`5OD z-{ZxK1pXTrS%ltbltQpt1MV~LM2bxW5hRktHI2+tj1YRfo(DMRK|Xi)2$fr?h<&y? zI=)Vpp5WpcoS~!>HjHV1TfWc3!D)GVtS18KVdN3;<5FWrPv~%|Wy*xAFzu3M@TWUBnMQoB| z&K+p2d~oi@8h#l}wUec%!q-B(jx_|Jw=Z?l-o_l$Pj0qhgCF7Psfv%_a)kOmPvqc_l~F&4yT$~zHI^ZRj$DHabync2thgTdEPbury?;Ae z_$=-p>anNZBQ~RAR){CBB+kQ-LE>{wHsG-SiQgzx`2#r_@1QoQRZ!gUn|>4tBoGy) z%+W%IcB*aE+mtQWDKslRuB8mk{`esW2$;Yu)KtQ!zab4^Cyo?PyPLUX&d6YQJ@FP& z&pkE*hytO`j+b2~DHNfyJ&E@Asxb>EX&A^PphjDvH^7sp&bAml5p@Eys0F~hjL$hj zCH$_7HivAvjFX#tmWn%1heX*ZkeC@B%=!ld5U-OHq%*-lIe7G1d7*^-dGj6c`Tb+CnO!-3d{<(#2Aqz6$t0RzSKY5I z2H*;+`q=W!iO!&VIk)Z+>Ijph_N7Np=s2`_^myArwn=L34Z$FwOEf4_&!fVdw+x5L`;X0LdOTH(W ze7u{-&1fXF4sZMj(RMdf2)VrBAQ-WVo=KVRY}{1_@T%IjN~FawWVM$canE()#(eFkjV}M28(}DHYh^y>t5%Px@oDUj-{^qx~?m!c+ zwzGA9NOWJY+5l4 ztxX(6C;*5J#fvyoRM;oh;*exmz9QYMB7XHIvvd88M0i1^vA`%d1lZ{FQK&^arT z*>_-F0tfONr~;Nx)d?P8l)Hw|v+Qy9IbW)|wa=mhx*!_o^POaa*KyZ={5!${2jttc zEY;&1M%icnjl=5AJwmj=fyeCx7pY!yFJ*4lyN7tA~kY|_kq{L|zn z8hYjE6Sobg#i=S0EmbaO(cpx0qe|V9LE6@6L5CgJ1Lq_j>LvdPuxjF){|HlMZXts? z&+5yM6d)$P$M%S()ZWVgm34GAS*AwNip4G~WZvlgiFz@NqepS+iNu*FlY{B(i$2nM z=$&>RacvH0uDn^W{Oh@JD(bA;Dk=$ewU-iqt%$V(l7DufFGGD`om#X2A*y+}FV~L* zmy_7fW=vUg#IWt3dDh-tU7xjTQ*n?zz4&VBlF+(xvg)Kkq(zJP{z5*T+~zA;cimhr z>N)KN-uX?YGyLCPru#GDMVL zR|PKtyB(lw;!mqfAa9*NN~gjeml_DUG+?K1$wHNLRkztxOz<+3{s`=*={eH)2Txf? zn!M|h{MOG=R)hg@XVp2s9iB=6ZYb5fpTn5K1#$^P9cGUr0UVcfht{ovx48N>+8u4m z5^^H0zZyfq&I9Nec%(qm+WzU)gb6G0xSYL5q|=gtUG&x=#JZ~)-N(ku!x65_D!|UB zezLb_JDIWxh_9PSm`1!%f{~|?^Oyb1Y}kN!-!2niFh`GR!`}XomgWD^BN^Zwi2JHg zv=FgHPwcs2_@4>Pjmd8W9yf&W2mYz+C*ZVx!WJ3 zvzkZlP=7})w|`-}^rHs@7|JZZoRggV#KiDWPnaBKZ*Gs-ph|`5iS*#CJOW`gp%4zm z1dvt=?{ZsL_`0h*{7d&r!+aE-Hy>ZyX5%7xV14#U7Iv8Ba^uiR z%S62@x*?$Ut=xE}=yJtTnur0e-fd7NL!3}4<=>%7L^Hr;IhIi`317934AyouH;ER^ zv74I@>^Xg!G0acg& zH9u>G2Q6{wvnm&qb7t77zfoI_Ir_RbiYDFP)1A=3}$ObC!L<#^z5TB+)h z{TyIJS?l-MAsWnS=&syJbIgYS!>tuQ14Il#^3N_wo`N&ss=XaR3vngGI6g|$tkZ>& za2d?bv9tv61X0eb5X=_DR>moFbAILD|2ec8kp;gzJ4>$sW*r}hXIHGYC-5CgM z$#9+uX~4^FL|^|nTz;rSdwg+#sFj-n$S@3 zm2ohFCF+4NM*^892~He5DM)5^LqhWj>mFZ)MK1oEv!w5)$6W2{V+nZ6Qdu?#aO-xq zyig0#8z6lSm=J-*T1}`jY_OBYdGYi005M~P4Fhlw5PY6f{g15Ffydn$u2T2PYWatJ zI>oTOn-JNbF{tfsr4257W`a^O!oip>t8-MAn-4VmJC}p8L0S z=S_C^+o+80C+wFbt>46=&~0&~XFQN?dyZ8RAp7tAZ%8Y(HUb;R&SbeZ7)8tRp0?~u zE?37`ofgN_;#8&GRy`OQsj>Q)1g#{As} z`@b=iAcr3~Nj~4hJp1XT6`gyYvhVC^Sk+x=a-zhzh=;141bdG-`F~~U9@1a)xc|gE zl}x)T=yWzlIDXmk=P^#~6cD^JJ?#9f$R!ShEdPm;MB1^iQD^CLd>2#F@N=+7;Dj%W z`|+sjpIU?7n^48IMoa_B`yhcw0ZhecTT)Epu53_TN!MS~sQl+P)O=UaKu zDj;$6Mmkox^b{D~Y`+7gGwdSj1?t)@W#xOGC5ic=Xy3f5jTLjfdo(!$D*Pd7`i#Kvr|^2EGoVT8 zy~BhGkOi448A0FSU2U|BwZQQr!{cRGRg(~O%@=lFltE9}%bKcHVjYEGJejKw{l`tK zIDE+6OCo*U)6)8h?@V2E2AlK2Hu&WVUUi){-Q-S>YnD(#yf#w?nux9pa`-U%R{{B4 zV#AUHP&DQCysZ6o&=DjL6AzRN*5aJ{X7n87n8|=D)YzJjPSk1F<87^N?TARk)n|ew z$eFYZDcXK2O09x3UnSkk=9J2zXPZ7eZISA5V|SZ^ceU$^?wxO?mH3B;?EPYD1nhpX zHq6nH@l7T?C4es`s=`6p6D%?is=!@=ztx)s4S=C20VWUHjs&9t@NmHll6)W~84_Yw zJ{cM8Zjz}keW@II%~tJ4dyqG_Yzc@<34@=9lC)5}(aD<5Kf4#V7pQdNPb=zo%qJE+Y0G`b4{_8dOD zyc}piR`DS{RU{fNk^{z$Rfbv0Y|q^W7Ds3gl$Deth0sHS2)6)9K)bP1!$w+H#jwv; zgc@;#$3Uqn=RKQydI$JiILQpdb&a|53WwXpi=|q&yK~c=`*i^)%Pq7x!HRJe^}VQR z=GtJ8-Pv5l_S^#THHRAgiW+)p>G#mv+Np)lRLn2s{I$?unbQTVOLDk+oLoP9%3IyL zfRZG)zYYCs=x#{g-cO-)kh7{Tv6J29Acyaw$yj?RA2c-Q|Fmy^6&vD|nBobYMaE5k z2ni>HzeOJwz}i3w>aaQyddK}>FG^0pZ z)+U0j3uMVa6L~NMG78SHwLEdQa{^h#qV=gsUXu&5Lx7|_tn=^lGbs*wp~d73VI{qm zLOj+Dv85DVjv=Cg-&ll@d-QH!{`tRimHcCWFFX-{a(&lcer%q!nNhO%en1k0wP1&z zfc@K@8oX}<>N+~)YaqrzX9$S3c^T0_CUU$cqp(?HX-cf<2=+4F>Urk>2Su5edlCwM z+If0CKRU;DveCT73*@p$hQr+>K2oKo*X)-hy(+V=>*PlG?V6&>r*bxqRS#x_@4m+U?Jc@mp^TMvH>l z5|H;Nt%=$wFJD+;xA~58#PV1${%l0W@xt;BHZa9oLcv)G?@HQtK7Na#zhE8~lmNn{ zfUx+#vy;*C!RY8*k=KlJluup*%G>sdoZx6a(zpVl=d8?9H={eGsb=y2Z3dQgJus56 z9hn@GOn3p_C>gkfGlj%j;lt|QCqK)pG7N62HE(mANAN*3eOG?5U#m^KB{gW#K2avN z4)6t@qQv=>j35D7rh5J!kqn6sKoMDa-~LI`5g+(3>=kVdB5NkZT!E7B?$@Hw7%AZ{kXBl_&S#=ZFCchms+stxlxtw_WS&0x9@c1+5@mr6xD^NYD!Df zB2K)MU29TzJ-@%Ulre30n8!0=wW*aV%@Mjj_Y@ED#_bJw)hk~?(uFtKb93<2yM`>^ zsy%eUak&Pm)hpW|=`eJ%7Fb=T0d?o&Rv2CK0i!J8Ye^>is9HxHDI`Ok_pyS7LC;={ zaM!uqZZcbaa_C*rx&mX;kufBR@?|?KB)5LgDo~&}sIHA`f z<;j<*`45jKzULkWt~HTEPi-`1JzFLuqeB-cSHW@x?_OQ3K`53c+o%N}0F?m7mv;x3hjt-n)qsNSJ(jcfKhIbAeBs8<_7)kE>=Jhd91 z;X#M^u8J<-MJ(L;_N-zStb_Vjp#{9@6SK~p?roc07KBJ4ix)QrOZm&G`$yy(kT#dp zNlEuxsKQjwQ&KJ;H5JU@QCafozN@8VqQ6#l_dRsAngKoU^!rb~{`uD%> z>$o&&;dnV;pO8`abst3Y*UXFmCM^MzZICqhR(sbx>8Yt)lx&!J$i2h3>70FmZWf7% z;G5Fa!0xF#G8aboj~|7Q^vof^!x~5Dk-5BXVSpI+cQ|FnzoJHxKs1yDeAoGa8cLa6 zJKM9zBkX*Lo{@}b{K$3`v?2gfMt1q9EYz8gXj2ehRMeWBd;A*+-XLssQ-kMbT$}hu zi-mHM+nd(i4<`R%Eaf!mQJulgS()hade!gP)8g@UPqmopi$BF5k$+>45YU1xUIJVB zH(2=mbC8FOgHq?bLS0#L5aWg^>Yv<4{W3zZcGwC|v7~Qb9C#930g(`luCyc+`WE!`B%dnxv}LR8~){xVfu;7gZHg=V~Db->#*VAZk!c zY>|uvdl6xIMRt;mxb($woffDiwkx6esH=3cF?e zn5%8EG=Gqx;Rt}#CN|xNlg8G2@J?#Mp)id~)$NaxSI+>O#jZ7(~QVInrRC<8G&G&uUS-bfaVNUgL?0~BoL5+vj58XAGx7-phja6K$-j@u6*LgQCFhnQoYkPz6 ztbQc12uiq^5xo-P zGwk9{BbC1dvaPM5oyPfkPQ&r$~;P8?tUhQdu80OpZhYoRK?G?>2l@C!M(u zBnC|lplfk>@jqpixx@uWxTHwibDhyMmw}^EytsE;O5vp96SXC3EXU<6i^%)(zTNNzYrLuE_Df<|&POXu7oxoA>e_n2${=az7`^g8XA8$L)&p(kTE`9~B%QX7R zvnTsgCeNPAcLKB`v0r- z(memTPhXyC)rW!(5?UEVFy2Mz75cN^Y8<+bG!(iGA_Xq`K_Q8sYGwmJr&BX```+TU zww7^!zSJ5m(0bCA4ua^9%$LeqowNfwLyc=K1<4&lQAMo4MvJ^gki3y^b=wFStu(25 z>JKNfqAKMLa|XJD7-=9i_<|C@Z=2_ib`Y$u$^VZX1mF~p`xI%qR5+h>#xPyJXuDu7 zwUCi}?Hv1~(qkEilWhH(J&uytmkn%qPp_=qEnk=8)S#vNI=R;c>B6-Inq_03_|5~k z!8My5Z&EeMXYh|I$V3-mDVYCug0a5`(7^5ZH@DnfK?cb7`sPDwo?KFJC;;le_Py`Z zY`-Z`F5>3BVRDG2VZ^F_$ZTSd4p=XW=m9@+urV45M0t?fRqr%Tn zvz+q!bgA^`mI?}K2NY5NrazNZe-Gu%8nMN4eq+>i1g=q7y(f?M9jD88t8Nh1!jfFi zdhFF+xR|VnkDyy+z#iA2FHQTT=43dq-p2yEkNUtIq`fyBM*?>aBJOWpo>2FURnU7J zIyO6#`4b-iup|fmm0w)x= z83=65a50Z9+xaI@WtmF+(U_=#}8+O39&kN#M3;`Al-?oshvj^7LxL zuer$oL)lr!MY*nRTgd^H7Db7nK?e~A=@_~}!2l6hA`&7wN{2%T2-1pli*6Mp6p%7# zX;d1dVNnv&@m&wNV()kF_ub#0>-SqBi<#%S@9R2`<5WxQTt_6=Pn>Clx+|Gvy{-F03M{$Z>WSUC@8-jEY&g{_-ul?fZmzlF zyS;K+(o+cbn`>KVOTxliQBk@5K3mgr=ZwnVr)`aj%@N6Zcl0e6`ANyIU)ZSFy4tg3 zGdaCUvPjxOJXV4z9_`Mk#>=^4zDSJKbD@6>?*+U3>|V5N)H7u16pr~ugs zW=*qa@2ed23a6r5xD|HbnZd-c0_Qfr^FwhdijFNe_ioCGD#6i-v`X?ewd38VV6%oG zB`1&+Da_|5PH7d~9^M|ek;+|+!@W~XsO9?nC0~>@}?)1T8U6mGwu>| zZW~*4fe=V!w%r*mP)D8c>p7rjoq_+3cr_+(YRAD$EQo#u4t@IH6*jg9J${g-koy~3 zp^TsZc%U7`SnK&V|AA}~7=~0lysmKsq}Vw8FMKKH7hj713C|kR!sG2#vsVcbLP27sEJT~%&4s{;bOW`VsQ`@NPuW^16#P+8ARqje>366w)>Rij%w z9zHq?i;6UT^a)%LDy1laX|QJ|vsIIT*LXnh`%-Oze$B%YB_yBw_l++ft_z1 z;Y(hZjHZe7`=J%8CVX;tlO=JJr+e&-rxN9(62Aayi?n9il-JLnCsAW%xz zd=FD@Dxh5Mh~bpz zJuC7w;xpGgo*2Q>v#)Q+D=FUmvh`?*;A@VMLQ;|WEX7wgUvVg~Y%Chgut2W%Y04Yk zEOD$R1clv{X0|l(6xhsG>fNlN-m>c!w4=@2>jyq6wH$ED?YK{Uh?zHhZ9_LfQ-^gd zpRZeB?X zLej#Zorj~H8x%@M_8hM;L-W)bz8SfggcA&jfvoTOj|ITmZy4Mr2Wgjw9bZINgs_O$ zMaF;D3~7OYF(UNK6e9XOsE^6AI#-+uAhl+(XV63x-ghlS^fmJ*iUhjU1b-u zc;eVSnPX?(+YZT^Ee?RF#@WFJx}(s3uH+Ok1^Rm}2=ICBb9_^>`n|TvX+v@=`KGSm ztpZhgP^JOoEPg)c5}$8&H9v_0-%!r9D7*csFBcPJ-CBRY?%n#-ev2=VhBt&r&Rk(@ zYiMEqoQu<;x><+`@He3ci0LTihgLmo$t2A4!f|T`nW+c;ag)E9xT*Oc9gUDyH4it@ zo#5L%je&plEu!*%0&EO{v;L{Gc6*|?vf2{DT7~y~CtiEz1$8RdPq>Tj6EuxZn?<$7 zNA8^V+RmCDyRBu3n1}!+N^%?Ii3Xl3-amnOGe*1`*J!X;JJ2|8u|qFaOq=;I1p#ZN z?_uvdoO~8YUdk3$w8%+Zi>n>p;1>+ZHt(|n{HWvvGJj7;Y@@=e zH0*sDK0Zu@zNQ~tK04*z;_t%7BTLCX_}a{ArA*r=-MZ{KU-{Wa)2T+4G^DY>j9=LAD|*@!epu1RruBkTe9in)Ozk-p8e$M+%`nEfh6l}V(X$d z?PuxY3d}x9G1H3WbZ6v0J^DyMc$2Z!CB4(SgS_R6b>?uj`f-U(RRHm3r#~V+Pjfv^ zIdP#}R6R0Ug9n^A?&ple2Qi9xWv*wuVr9hE<8LO`S2wZP5zD{) z?O4H$y~l%SZ>MhdpBr{P1;1>$0f`;fS}|{c&l4CNkPWjVstxN4S{GV=4pU6BHj;*c z2^rvK5LQN5=bVrDox`b~CgK+?AiI|yR+6i>>sz!lW}N*sjv9bp!?h4J<@!a^NXxBOv=-vx%z z!M-BDAFWFxnp*lXLbr(`xgag*dfN!Q*u@pXQL*!Hz5A*bb;*hGo>YH~P6p&@3^5j( z*xlgS8rw0+Q37O_18NtT#lQ8bm`XJh5eZG3oRp`ilzC}!J~%+y0EnyL(e?9M8d`P9 zNMidyI}Y)EA-?_heLGcDb_bihZ}A>VU%P5W!tWvG$5{C~B};FB;U6{XnWD%(oh5P8 zuZFt$;4lkUsyJcsGwCKW0AxWEISL%!38gP0(N;9sM<%8?2Z-C)S*GpKw*A? zzG)dNVu*q*5*6kgA%?@-6I%yUj{{?F7U4})u&Xn%L&|5`e_ozkmpJxHrVmqXJLZYy zQ<{*k`><>55aVW=8m)?-v{5}|)qDuH2jMtILkyW-omrrC3LOx^m_R3l2;|v1&FN54lk<~I zm1|4-c8?uClNBXr)S3_}cPgSCCS5XNY<`-qzB1Wj*ZtaQP)H|k7R=8piGDw!biwmv z>EKSkZhT~??vIMEBn^|5_pc;A0}G@kv-`}aS@gyUyO^9>?bJzkOe8M;%5CXh&o#N_ zcPMmNY4u4l_c90HXHiLYsV#j=lkw52JNWD4&q&%0<8kQZ)7t1b!yX)wJmtdDdvxSl zxlh0q20xO55z{^hMw+d0FGhZ_ zZ93N0y~yxfSZ_n{T3mm&(my8dG!&WX1##L}eiBHf-C%WVd8(;e!*6Lyo% z?nrilWp-*eJ&K*d6*d^OhC7*9I8**UXVbJ;uUQt7Qe?FyV+S$i%+9OA!6s~c!?j4= z&8WoV#WNclb3J#pp(PQFAUw5-^n4SARbsv|f8fd@ZbW;yGCpA0C98_clE}+;SJhL6 z21t(OJig}-xPX65LX2?rQAwS}q$KIppFC7iXt{#JzgM@CG{ix9Czy@|xV>}<9RAXQ zQPcH@2{-7Rvcc*kK`{!F)4F8p_^iFW?}KeIgX8rknR*Qa1oX!eg$NDl`MaBR{Dh&I zlr62)_mF~r5QO(ZXE{(s)TKwNC^lkhLb=w2-!>_@N@u#^%gNHu<&WFZCu;D-Peg;)h z@v!<&Dl=UCC~J4H-tK|h;rXIU!^LzDIn;@pnmwa4N!~3aC*17VLXw$uXGRT2Lupzf zr>!Vv@07A4N~go+xiGgi;Al?Yr5d`ODwW)Sx>Q#Ge|Y8*siR_jatzIBs7DE~>flZB zaB4DXfyLx7Pm5OF(Xg3PvI$D|EF1X&zEx7mV0v+b)&p0!k}{CC!pzh+H}F2DqquM4 zzt2pWYrDYZQ7f{C#7Qc}FWHek$iAqiQ#g`%XgF>lzDX|pW~g+w7o=h|oRbo8fopjp zghKw&Dove16(>9$tw;s`mp2quPJwHSLl)H_)_hQ;+hKEwNaCR1>(R6%d-5#p)VCxX z2gL|GbAprGR>?mXX`j{wzNAp+dNfZlLo<{N2LKz6NdO5RJq{74$s= zqN6!)xODdO2@gcQZe4@$Pl4Iz^=~FlHBFZ0_s?Irb-(-YBAx2G&iDUFO(VAU=1Y8p zLir!ZU$I1EZrs*r-gmV3IPUq`@Bfwu;|{KCvTkw8)JT7;;*j9;e7EBnrqw#1MMn$$oC=fHC;Im9;*hs;&Xo62h^x5K_e!+;CQh&ZH`Jwf_`JAPFB4@F_HjmtF1EX0xMg!x!^kEY8V)hO|iTU0?_& zuO@EReY5y5(rdo+w6~xu^8d;v1hR)z9PPm&`Gf)(Hh)p4a3cv8S&F16%Jok^N&m4H zj2bUO6J(9n4yU$RuKtL_VF<2*qqs?f83uRL=y^RCSrPdHM-qy2O`HUiP`g{Ldh_ z%7Y8xyQsyB0T_>uBd%|!;$<7MKfQF~v)?& z6gum<5GN_|{?&AzxXl<9ablDJ*i$k~bqEakPe`HwF@ml@#8-&%aq4MelU6kdv#N*9uLnLcQ^lBW@KJD<9IoQRer zU;3km<0sYCw0eK6ck%kjz|wfQwFSj!j|x;=%?SxF0wg`SDrY}l;Uq$@7C0tBqvq;^ zVik-*8ze5*bG6pl)GEJIl5(S};EB65{Ns(ZjZ`v)KTK2^gHq$59NBrqs=ysGekVg{ z+;(2F?Oww3dkjqYI6c03VSwb8CMU1wk2h;eK72CGB#T91pUxF}8PJqW`0zf)36pC) zepe9R0G`yaK|k5zZNL5(?UWltKDn+eMQ%MvwM9L1(1Zs4WO46j{H4R|Ps0Z|&PbZ_ zp*S{vqsT1El49??w#55L1v1a6pLH0XA78|d?t$ug26ZR-+1wcdBYRWF_h9L z0bm{=9MC9EQ+O;-*n^*u(FEdNgyQ8Q0N+_M!>biUv#ts6utHSFV#h)R+MFqY*#5lK zAU()aX&>j-N_0!iYjHyDBq~41W%)!2nPhhcvxX9-TiB(^{0H92RwP40|B{6G1#3$p zur{c@7>!%WfNnd@&Stpso2i*ZgldG^XXp0msd86SvuuDc3Rn^k`ZKnsvs`hz|9!!{ z`-VQEa7Th8ND@L_?i23cy3rfvsBi12CSvq*#D6$01=dz{V*0}wX;wHM`m^PKZ>wFn z?Z~}7yFKLCM>WUUJ%6{8Qym~TSV$q1y}a!~^^RKO8|(Ba2`=q4-ToZaNf~ei+*{6T z_CY(<07j&Nz82$UG1^AqG9I3I@Cy&uq2|LqNL*K{h+t4tT&{++CwFqrPwl~B)}wz$ z?XQ+4Tin>M!d0*n8gDMMkLGo5e7TOza&?Qw7wox^VP2u;m#v*RK^%!4NqZ$?@3<)m z%JeFT+S@#CpROcgA6^-2y&KKqyXxYHKs{}sQ@Tb}qFzT{Sj zEj?CDA?QS*v%|D#H#I;>s%3+VZ^#qY*Gerf_<=k#37~JpLZyK=_RkPxaj@K}V~%Qe zk@kE0u#F6?*>I)^tOsE1aI@>JV<|^O6e?e=z(3(~X>v5=!-xD*1xkRC(#&-=P>hhZ z)0nW(B}A1&U8Ekmd5KW>;ni2yPD{od8H_DQ5W|e5M&fglVau;Zyzv3K%+_G((rFUQ3%QkcJ3CjpBqZoRpJYTo?_=6+%N_Hn`$o;{ zs?bsEg^PLiGHt@4v{v(|?FO_fqY_O&OUU-DIqFS}hxa9BqaUI@+QBHf6}DUJv-_ca z;`QiF-s|b%gFC%)!4B4MylJe**TPMAIGctf3ZkYVeX+P*(8RG(dc`oE4dZZaL{&-2 zYVlcFu)ce_$!F6Ru!*s9OO`BcV?D=p`@WPYg^#2R9TStYVFZxWuzafDf(k0$y`B}; zXB1uWd-mb*(C}(oV6ROGwu;Jm4 z`nZnEKOLQQ$O3`QHRKYD=CtrFqtzC7mL!t7Eq}=XI6E+o%ZJf&Qf~CFq7lyLZe8rT zLkW;K{Fft^b-_bww-S* z)~hz_Who$zOK|!yY8=5UzNE^nqZ4~!!+pIGT^C^$jzn`og`>^ap`Pz#?F#(wbH$>Gpe0G|(DRI*;qv^+4?Xt{I#W5xUJ zxyICJpZ3sqjNx;i`OkUBjBS~~q^ZEd7(dNsKU#3lVUBtpecwria28r)Tx|xaxFVHl zm3SZ&LMy(RwqUUk-D`-dmlg4qHr(m@viy}fy~WaLKOU{21!kwW#Nfoz9!Sw|A!%=& z;nr(*M;c>3VKXDExgu~034(HGd2G{b-zslXxut@WBy@RUi`V4`hz0LgrL_ol-uPXX zLq_cXE6$PV)-p5B*!n75qZb+&01f3V=sz4^WC5p3gRURmMhe*h+n(Ql?%KJB?EPmQnyF@V18YqV(dHH|?be2|Lrnh*%u>`$z>j z(`XhT=7nv@_*1AJrZTd7rE5)vrdqCa&0rDej^B7G%?GOxso4PMlFpZ|Bd!I%&0cq- zT8WSgTknfo_F;?Z$~)k6Z7Yd0hm>pBlCN#`R3s+|*B~B#j0X^J{x=jcE!?bX2$3G4 zBq2rGjxgcM+$z37E~t6${%h?e$E}GTQBY*gPmjlPNM6Xiwzjb_-u%-t-Y`NYV4ALE zd@4C1O2L1t1pi5@Y32=$Y<_|haCk4xfg6aI5=*}MIL8JZ_WtNH{soO?+v zxSNWE-k+LPk#Y<(`jhe(wtnII<3~3p5-u@F-{(683645i5c0pRs1>dQjvGQ+Iuk{G zTGw=ZO#6sF+P%x43)M!ZRMCwcm`7I~g`aEx4Og$v=YtDcL^7$!WE}1@&l#sfRy#Z> zHkVgN%P*V7-=v=xGwr|oXpByYcK(L*0}tECUlER&;3aR689ak*-Xc>;h&R=Xw;4z7 ze3%th*chc#muL(PR%$5m+&s!C&pFaQnuqw?wBN0sj`DW?SAVvBI~Tcj3J#U}Ub9?+ zDacrQuwY)1%5(|F3&+!K(S29XK&7U6o<3x9irwb}AqQG)d=(m z!?Xh{t;MCU5(){gW5>f~?KRs;8iIR22zWVDm$!VofAh!+?PsPJt<9l<3nhqiDIsPr zM8T9x<5Vq_Vpvvq1BN%t1<6uN5QEfwC1Hv@{- z_iZ+SnB(e(R-Sg|Vol2?k>jhnfw(0iuN*PmAG6=VK8pPBfUqX71I!y*TS7tdo%pXD zd*6WuOAQx=2JuBhxdqjM!wp^Bkt7`ohMX$CrO9cN@+o5rZ*9(5t__xI51>D4KO*#pGk7NM zRE&HbX?pO`GU4XQ<~mk09$sbh(DR^2WBo(@BCs$!WOYBN-Y`hS=ZC>Fd_y!LLXhm- zDeHG*G4+vmE!%tFJukbkf+`B0{MpBI>RN1~&fXbPT|NZ%>PtjW?sAWDgweUJLVM#X zGZKMdGOHHz>yt*VeP9529iOI4Co8h`D~?Q3N>K2= z4{f%>D#cLPdnmPSA;epd5JUSrGpb&12v_o6>CiKQyL>dKNzXt8q8EprmwejK>@LV{ z9x~y z>q{m`lBKi<@+|BNn2QA5Ey8;h=V0{<$lQYi!W1PVPg+FVCZGSXZly?0RIF!Z=h6vb zaG*3STyf|jOCL--o6^?mNLP=yF915I2^28rZbcbpMNU+_S7Q|L*cMkEhxKtC2RSkf z0O$775{#i4EO<^x-(@8J08kcx2IXgfyQ)59x(ZhXkNfcs1W?-a-4z_LX0HLbl*?&olHpOYGG4naw!B zd1V*H>(WJA$nD-fH_ZRZk+K9Ow!>Z$8_a#ObCjPmUb{eS7eU#XPoMofIm!)1)$y)_ z^Jv$NVOIpe{}W_q+32piXkCRRRj5T!_WHv^85r}Q1Ju_}qMYEPSdPf;Cx5b?qmd~K zL9i4?#kp=DKjO4cQplLb!~H^nOgwne=!LUC{;w2!VBgk|xZ#~nDC5axSwC}#tvdvx z0gYz5*03t8Ae)MsWxt2nU;i(QD=5jU30(gG)#j5q+VH)aIh5ve1K~fR;LqL#s8~=+ zmyDg91_0dKp>g&b@9iXt%*;;si!yi72%ePb$koMt*)vTcA)@_UeGO6@Zcrys(-*gD zD=Z-Z_R3-j2Nc}|BgDsJ1SKAXTBjUYendX{)(+3sThoFZwGnu|5z9Kz00|)XI||OP zLN9f(53**gCd0YAmCWqm$O>o*uS@lP{{SPa*{8bAhz<=q`k)tk*ZI%vBNh8AtS{OK z17a%J-hx`2GI7xmcVS%mp;0c&s3^^$6EiYJpGP=)k?tV{7>zf&f+cb5kzy0d%f71` z=&<*Q3(W?CF2DjDcYjq6>B~GdCS#AF4E$zjs`1geTT9Pjl;HAtZht2c_($TAzo)An zwsnRDS1f`aB{C#V`H50DueBM=!Q3-f^>mO6B72UD&NteZ5}_G|yQF>xEAFkur@B61 z#1>Y35A-%}&uk480?Tn>YzjNn9^Cp@XgvUR9lJ5kFQ)(gps!JV+IE5aC#gQN_VMtE zJ?D!VydF~;*PHjWgiXUmI`ve(%H5oBf9l2+ze=c!-SK6lftTW7 z?2OJoE!JztIW|0?&x$jGzRkpmhudER9!dY@dc9(b`1&WygEu|wRt(Jf>7OyN_=LA0 z^lQG#3JBl#+v}GlIKytI<=$L{n`)-bLHTC}jrpFvH+>*T{1hY{{2HixfaOq0A9-)R{q#3T*pE#%+kjGP(RkT?z%=;R z2Hp6VKFU?F#g3c?Tf-HKUPmk2g06O#9FKsA@(_wuj(?Zff(VgBG4IA{(jwKBG z$lmMz^6#%YCkKPon7XME=F_A(#$ssFd;RL1B!>VR{w{6+J4`^R{CG`Nm;bM&xxE

otA#_G27J{` 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

n(kMx|v1u!P*)mdJ#9u-yGJE;w#+y<(ZGT~1 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

Nc;GE5LDEfP8Y0l2Z*tvQ+*B$BA4yg4pDdqJE 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

lXVn&8^9)^JnY+u27|Ozcb))zhWuX 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

JUlcCarJ#v*6aI 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 mCp6%+;P8yu1b}5gQk} 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

~s?g_Il4T-*Lt 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

62Ur?zJBY3tY}t|~9#ZZ-xp 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�^2pfu85B|hPOZ5Ni_)Amqh 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 z%0D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 ZcE*( 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 U_=+^A_` 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≦< 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 L$qJ@FA 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

%&8IBT<=*K#w~mpy){qeu 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 AYXATM diff --git a/content/v3/csidriver/partners/ophub3.png b/content/v3/csidriver/partners/ophub3.png index cf8ba75a270806534a65a3be52d9d60ac102d171..84773431cf25d68c2157dd2ade3135b0be085ed8 100644 GIT binary patch literal 40361 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Á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�_5)9 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 RN>(rCSFA7NF5da&e*ibb3uyoV diff --git a/content/v3/csidriver/partners/redhat.md b/content/v3/csidriver/partners/redhat.md index 1a5408788b..28299fe9d4 100644 --- a/content/v3/csidriver/partners/redhat.md +++ b/content/v3/csidriver/partners/redhat.md @@ -5,7 +5,7 @@ weight: 3 description: > Installing the certified Dell CSI Operator on OpenShift --- -The Dell EMC CSI Drivers support Red Hat OpenShift. Please see the [Supported Platforms](../../#features-and-capabilities) table for more details. +The Dell CSI Drivers support Red Hat OpenShift. Please see the [Supported Platforms](../../#features-and-capabilities) table for more details. The CSI drivers can be installed via Helm charts or Dell CSI Operator. The Dell CSI Operator allows for easy installation of the driver via the Openshift UI. The process to install the Operator via the OpenShift UI can be found below. diff --git a/content/v3/csidriver/partners/tanzu.md b/content/v3/csidriver/partners/tanzu.md index a6d903c580..393f5b398f 100644 --- a/content/v3/csidriver/partners/tanzu.md +++ b/content/v3/csidriver/partners/tanzu.md @@ -3,7 +3,7 @@ title: "VMware Tanzu" Description: "About VMware Tanzu basic" --- -The CSI Driver for Dell EMC Unity and PowerScale supports VMware Tanzu and deployment of these Tanzu clusters is done using the VMware Tanzu supervisor cluster and supervisor namespace. +The CSI Driver for Dell Unity and PowerScale supports VMware Tanzu and deployment of these Tanzu clusters is done using the VMware Tanzu supervisor cluster and supervisor namespace. Currently, VMware Tanzu with normal configuration(without NAT) supports Kubernetes 1.20 and higher. The CSI driver can be installed on this cluster using Helm. Installation of CSI drivers in Tanzu via Operator has not been qualified. diff --git a/content/v3/csidriver/release/operator.md b/content/v3/csidriver/release/operator.md index b351182618..4451adff9d 100644 --- a/content/v3/csidriver/release/operator.md +++ b/content/v3/csidriver/release/operator.md @@ -3,22 +3,20 @@ title: Operator description: Release notes for Dell CSI Operator --- -## Release Notes - Dell CSI Operator 1.6.0 +## Release Notes - Dell CSI Operator 1.7.0 ->**Note:** There will be a delay in certification of Dell CSI Operator 1.6.0 and it will not be available for download from the Red Hat OpenShift certified catalog right away. The operator will still be available for download from the Red Hat OpenShift Community Catalog soon after the 1.6.0 release. +>**Note:** There will be a delay in certification of Dell CSI Operator 1.7.0 and it will not be available for download from the Red Hat OpenShift certified catalog right away. The operator will still be available for download from the Red Hat OpenShift Community Catalog soon after the 1.7.0 release. ### New Features/Changes -- Added support for OpenShift v4.9. +- Added support for Kubernetes 1.23. ### Fixed Issues There are no fixed issues in this release. ### Known Issues -| Issue | Workaround | -|-------|------------| -| A warning message will be listed in the events for cluster scoped objects if the driver is not upgraded after an operator upgrade. This happens because of the fix provided by Kubernetes in 1.20 for one of the known [issue](https://github.com/kubernetes/kubernetes/issues/65200). | After an operator upgrade, the objects will get updated automatically after 45 mins in case of no driver upgrade. | +There are no known issues in this release. ### Support -The Dell CSI Operator image is available on Dockerhub and is officially supported by Dell EMC. +The Dell CSI Operator image is available on Dockerhub and is officially supported by Dell. For any CSI operator and driver issues, questions or feedback, please follow our [support process](../../../support/). diff --git a/content/v3/csidriver/release/powerflex.md b/content/v3/csidriver/release/powerflex.md index c9dbd901ec..eabc638190 100644 --- a/content/v3/csidriver/release/powerflex.md +++ b/content/v3/csidriver/release/powerflex.md @@ -3,18 +3,11 @@ title: PowerFlex description: Release notes for PowerFlex CSI driver --- -## Release Notes - CSI PowerFlex v2.1.0 +## Release Notes - CSI PowerFlex v2.2.0 ### New Features/Changes -- Added support for OpenShift v4.9. -- Added support for CSI spec 1.5. -- Added support for new access modes in CSI Spec 1.5. -- Added support for PV/PVC metrics. -- Added support for CSM Authorization sidecar via Helm. -- Added v1 extensions to vg snaphot from v1alpha2. -- Added support to update helm charts to do a helm install without shell scripts. -- Added support for volume health monitoring -- Removed support for Fedora CoreOS +- Added support for Kubernetes 1.23. +- Added support for Amazon Elastic Kubernetes Service Anywhere. ### Fixed Issues @@ -28,4 +21,4 @@ There are no fixed issues in this release. ### Note: -- Support for kurbernetes alpha features like Volume Health Monitoring and RWOP (ReadWriteOncePod) access mode introduced in the release will not be available in Openshift environment as Openshift doesn't support enabling of alpha features for Production Grade clusters. +- Support for Kubernetes alpha features like Volume Health Monitoring and RWOP (ReadWriteOncePod) access mode will not be available in Openshift environment as Openshift doesn't support enabling of alpha features for Production Grade clusters. diff --git a/content/v3/csidriver/release/powermax.md b/content/v3/csidriver/release/powermax.md index 278d297ab0..52c67cf950 100644 --- a/content/v3/csidriver/release/powermax.md +++ b/content/v3/csidriver/release/powermax.md @@ -3,13 +3,12 @@ title: PowerMax description: Release notes for PowerMax CSI driver --- -## Release Notes - CSI PowerMax v2.1.0 +## Release Notes - CSI PowerMax v2.2.0 ### New Features/Changes -- Added support for OpenShift v4.9. -- Added support for CSI spec 1.5. -- Added v2 suffix to the module names. -- Added support for CSM Authorization sidecar via Helm +- Added support for new access modes in CSI Spec 1.5. +- Added support for Volume Health Monitoring. +- Added support for Kubernetes 1.23. ### Fixed Issues There are no fixed issues in this release. @@ -21,6 +20,8 @@ There are no fixed issues in this release. | Delete Volume fails with the error message: volume is part of masking view | This issue is due to limitations in Unisphere and occurs when Unisphere is overloaded. Currently, there is no workaround for this but it can be avoided by ensuring that Unisphere is not overloaded during such operations. The Unisphere team is assessing a fix for this in a future Unisphere release| | Getting initiators list fails with context deadline error | The following error can occur during the driver installation if a large number of initiators are present on the array. There is no workaround for this but it can be avoided by deleting stale initiators on the array| | Unable to update Host: A problem occurred modifying the host resource | This issue occurs when the nodes do not have unique hostnames or when an IP address/FQDN with same sub-domains are used as hostnames. The workaround is to use unique hostnames or FQDN with unique sub-domains| +| GetSnapVolumeList fails with context deadline error | The following error can occur if a large number of snapshots are present on the array. There is no workaround for this but it can be avoided by deleting unused snapshots on the array| +### Note: - +- Support for Kubernetes alpha features like Volume Health Monitoring and RWOP (ReadWriteOncePod) access mode introduced in the release will not be available in Openshift environment as Openshift doesn't support enabling of alpha features for Production Grade clusters. diff --git a/content/v3/csidriver/release/powerscale.md b/content/v3/csidriver/release/powerscale.md index c70d9f111f..ff2a38a5eb 100644 --- a/content/v3/csidriver/release/powerscale.md +++ b/content/v3/csidriver/release/powerscale.md @@ -3,29 +3,28 @@ title: PowerScale description: Release notes for PowerScale CSI driver --- -## Release Notes - CSI Driver for PowerScale v2.1.0 +## Release Notes - CSI Driver for PowerScale v2.2.0 ### New Features/Changes -- Added support for OpenShift v4.9. -- Added support for CSI spec 1.5. -- Added support for new access modes in CSI Spec 1.5. -- Added support for PV/PVC metrics. -- Added ability to accept leader election timeout flags. -- Added support for Dell EMC PowerScale 9.3. -- Added support for volume health monitoring. +- Added support for Replication. +- Added support for Kubernetes 1.23. +- Added support to configure fsGroupPolicy. +- Added support for session based authentication along with basic authentication for PowerScale. ### Fixed Issues -There are no fixed issues in this release. +- CSI Driver installation fails with the error message "error getting FQDN". ### Known Issues -| Issue | Resolution or workaround, if known | -| ------------------------------------------------------------ | ------------------------------------------------------------ | -| If the length of the nodeID exceeds 128 characters, the driver fails to update the CSINode object and installation fails. This is due to a limitation set by CSI spec which doesn't allow nodeID to be greater than 128 characters. | The CSI PowerScale driver uses the hostname for building the nodeID which is set in the CSINode resource object, hence we recommend not having very long hostnames in order to avoid this issue. This current limitation of 128 characters is likely to be relaxed in future Kubernetes versions as per this issue in the community: https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver/issues/581

**Note:** In kubernetes 1.22 this limit has been relaxed to 192 characters.| -| If some older NFS exports /terminated worker nodes still in NFS export client list, CSI driver tries to add a new worker node it fails (For RWX volume). | User need to manually clean the export client list from old entries to make successful additon of new worker nodes. -| Delete namespace that has PVCs and pods created with the driver. The External health monitor sidecar crashes as a result of this operation.| Deleting the namespace deletes the PVCs first and then removes the pods in the namespace. This brings a condition where pods exist without their PVCs and causes the external-health-monitor sidecar to crash. This is a known issue and has been reported at https://github.com/kubernetes-csi/external-health-monitor/issues/100| +| Issue | Resolution or workaround, if known | +|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| If the length of the nodeID exceeds 128 characters, the driver fails to update the CSINode object and installation fails. This is due to a limitation set by CSI spec which doesn't allow nodeID to be greater than 128 characters. | The CSI PowerScale driver uses the hostname for building the nodeID which is set in the CSINode resource object, hence we recommend not having very long hostnames in order to avoid this issue. This current limitation of 128 characters is likely to be relaxed in future Kubernetes versions as per this issue in the community: https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver/issues/581

**Note:** In kubernetes 1.22 this limit has been relaxed to 192 characters. | +| If some older NFS exports /terminated worker nodes still in NFS export client list, CSI driver tries to add a new worker node it fails (For RWX volume). | User need to manually clean the export client list from old entries to make successful addition of new worker nodes. | +| Delete namespace that has PVCs and pods created with the driver. The External health monitor sidecar crashes as a result of this operation. | Deleting the namespace deletes the PVCs first and then removes the pods in the namespace. This brings a condition where pods exist without their PVCs and causes the external-health-monitor sidecar to crash. This is a known issue and has been reported at https://github.com/kubernetes-csi/external-health-monitor/issues/100 | +| fsGroupPolicy may not work as expected without root privileges for NFS only
https://github.com/kubernetes/examples/issues/260 | To get the desired behavior set "RootClientEnabled" = "true" in the storage class parameter | + ### Note: -- Support for kurbernetes alpha features like Volume Health Monitoring and RWOP (ReadWriteOncePod) access mode introduced in the release will not be available in Openshift environment as Openshift doesn't support enabling of alpha features for Production Grade clusters. +- Support for Kubernetes alpha features like Volume Health Monitoring and RWOP (ReadWriteOncePod) access mode will not be available in Openshift environment as Openshift doesn't support enabling of alpha features for Production Grade clusters. diff --git a/content/v3/csidriver/release/powerstore.md b/content/v3/csidriver/release/powerstore.md index 173d236038..c624c9c509 100644 --- a/content/v3/csidriver/release/powerstore.md +++ b/content/v3/csidriver/release/powerstore.md @@ -3,15 +3,14 @@ title: PowerStore description: Release notes for PowerStore CSI driver --- -## Release Notes - CSI PowerStore v2.1.0 +## Release Notes - CSI PowerStore v2.2.0 ### New Features/Changes -- Added support for OpenShift v4.9. -- Added support for CSI spec 1.5. -- Added support for new access modes in CSI Spec 1.5. -- Added support for PV/PVC metrics. -- Added support for volume health monitoring. +- Added support for NVMe/TCP protocol. +- Added support for Kubernetes 1.23. +- Added support to configure fsGroupPolicy. +- Added support for configuring permissions using POSIX mode bits and NFSv4 ACLs on NFS mount directory. ### Fixed Issues @@ -19,10 +18,11 @@ There are no fixed issues in this release. ### Known Issues -| Issue | Resolution or workaround, if known | -| ------------------------------------------------------------ | ------------------------------------------------------------ | -| Delete namespace that has PVCs and pods created with the driver. The External health monitor sidecar crashes as a result of this operation | Deleting the namespace deletes the PVCs first and then removes the pods in the namespace. This brings a condition where pods exist without their PVCs and causes the external-health-monitor sidecar to crash. This is a known issue and has been reported at https://github.com/kubernetes-csi/external-health-monitor/issues/100
| +| Issue | Resolution or workaround, if known | +|--------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Delete namespace that has PVCs and pods created with the driver. The External health monitor sidecar crashes as a result of this operation | Deleting the namespace deletes the PVCs first and then removes the pods in the namespace. This brings a condition where pods exist without their PVCs and causes the external-health-monitor sidecar to crash. This is a known issue and has been reported at https://github.com/kubernetes-csi/external-health-monitor/issues/100
| +| fsGroupPolicy may not work as expected without root privileges for NFS only
https://github.com/kubernetes/examples/issues/260 | To get the desired behavior set "allowRoot: "true" in the storage class parameter | ### Note: -- Support for kurbernetes alpha features like Volume Health Monitoring and RWOP (ReadWriteOncePod) access mode introduced in the release will not be available in Openshift environment as Openshift doesn't support enabling of alpha features for Production Grade clusters. +- Support for Kubernetes alpha features like Volume Health Monitoring and RWOP (ReadWriteOncePod) access mode will not be available in Openshift environment as Openshift doesn't support enabling of alpha features for Production Grade clusters. diff --git a/content/v3/csidriver/release/unity.md b/content/v3/csidriver/release/unity.md index 62fcf772e0..87517e3703 100644 --- a/content/v3/csidriver/release/unity.md +++ b/content/v3/csidriver/release/unity.md @@ -3,15 +3,12 @@ title: Unity description: Release notes for Unity CSI driver --- -## Release Notes - CSI Unity v2.1.0 +## Release Notes - CSI Unity v2.2.0 ### New Features/Changes -- Added support for OpenShift v4.9. -- Added support for CSI spec 1.5. -- Added support for new access modes in CSI Spec 1.5. -- Added ability to associate a tenant with storage volumes. - -- Added support for volume health monitoring. +- Added support for Kubernetes 1.23. +- Added support for Standalone Helm Charts. ### Fixed Issues @@ -26,4 +23,4 @@ description: Release notes for Unity CSI driver ### Note: -- Support for kurbernetes alpha features like Volume Health Monitoring and RWOP (ReadWriteOncePod) access mode introduced in the release will not be available in Openshift environment as Openshift doesn't support enabling of alpha features for Production Grade clusters. +- Support for Kubernetes alpha features like Volume Health Monitoring and RWOP (ReadWriteOncePod) access mode will not be available in Openshift environment as Openshift doesn't support enabling of alpha features for Production Grade clusters. diff --git a/content/v3/csidriver/troubleshooting/powerflex.md b/content/v3/csidriver/troubleshooting/powerflex.md index 4d701a1f19..5699c2ec98 100644 --- a/content/v3/csidriver/troubleshooting/powerflex.md +++ b/content/v3/csidriver/troubleshooting/powerflex.md @@ -14,11 +14,12 @@ description: Troubleshooting PowerFlex Driver |CreateVolume error System is not configured in the driver | Powerflex name if used for systemID in StorageClass ensure same name is also used in array config systemID | |Defcontext mount option seems to be ignored, volumes still are not being labeled correctly.|Ensure SElinux is enabled on a worker node, and ensure your container run time manager is properly configured to be utilized with SElinux.| |Mount options that interact with SElinux are not working (like defcontext).|Check that your container orchestrator is properly configured to work with SElinux.| -|Installation of the driver on Kubernetes v1.20/v1.21/v1.22 fails with the following error:
```Error: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind "VolumeSnapshotClass" in version "snapshot.storage.k8s.io/v1"```|Kubernetes v1.20/1.21/v1.22 requires v1 version of snapshot CRDs to be created in cluster, see the [Volume Snapshot Requirements](../../installation/helm/powerflex/#optional-volume-snapshot-requirements)| +|Installation of the driver on Kubernetes v1.21/v1.22/v1.23 fails with the following error:
```Error: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind "VolumeSnapshotClass" in version "snapshot.storage.k8s.io/v1"```|Kubernetes v1.21/v1.22/v1.23 requires v1 version of snapshot CRDs to be created in cluster, see the [Volume Snapshot Requirements](../../installation/helm/powerflex/#optional-volume-snapshot-requirements)| | The `kubectl logs -n vxflexos vxflexos-controller-* driver` logs show `x509: certificate signed by unknown authority` |A self assigned certificate is used for PowerFlex array. See [certificate validation for PowerFlex Gateway](../../installation/helm/powerflex/#certificate-validation-for-powerflex-gateway-rest-api-calls)| | When you run the command `kubectl apply -f snapclass-v1.yaml`, you get the error `error: unable to recognize "snapclass-v1.yaml": no matches for kind "VolumeSnapshotClass" in version "snapshot.storage.k8s.io/v1"` | Check to make sure that the v1 snapshotter CRDs are installed, and not the v1beta1 CRDs, which are no longer supported. | | The controller pod is stuck and producing errors such as" `Failed to watch *v1.VolumeSnapshotContent: failed to list *v1.VolumeSnapshotContent: the server could not find the requested resource (get volumesnapshotcontents.snapshot.storage.k8s.io)` | Make sure that v1 snapshotter CRDs and v1 snapclass are installed, and not v1beta1, which is no longer supported. | - +| Driver install or upgrade fails because of an incompatible Kubernetes version, even though the version seems to be within the range of compatibility. For example: `Error: UPGRADE FAILED: chart requires kubeVersion: >= 1.21.0 <= 1.23.0 which is incompatible with Kubernetes V1.21.11-mirantis-1` | If you are using an extended Kubernetes version, please see the helm Chart at `helm/csi-vxflexos/Chart.yaml` and use the alternate `kubeVersion` check that is provided in the comments. *Please note* that this is not meant to be used to enable the use of pre-release alpha and beta versions, which is not supported. | +| Volume metrics are missing | Enable [Volume Health Monitoring](../../features/powerflex#volume-health-monitoring) | >*Note*: `vxflexos-controller-*` is the controller pod that acquires leader lease diff --git a/content/v3/csidriver/troubleshooting/powerscale.md b/content/v3/csidriver/troubleshooting/powerscale.md index 06ed1754b4..e3f233a76c 100644 --- a/content/v3/csidriver/troubleshooting/powerscale.md +++ b/content/v3/csidriver/troubleshooting/powerscale.md @@ -10,9 +10,11 @@ Here are some installation failures that might be encountered and how to mitigat |The `kubectl logs isilon-controller-0 -n isilon -c driver` logs shows the driver **cannot authenticate** | Check your secret's username and password for corresponding cluster | |The `kubectl logs isilon-controller-0 -n isilon -c driver` logs shows the driver failed to connect to the Isilon because it **couldn't verify the certificates** | Check the isilon-certs- secret and ensure it is not empty and it has the valid certificates. Set `isiInsecure: "true"` for insecure connection. SSL validation is recommended in the production environment. | |The `kubectl logs isilon-controller-0 -n isilon -c driver` logs shows the driver error: **create volume failed, Access denied. create directory as requested** | This situation can happen when the user who created the base path is different from the user configured for the driver. Make sure the user used to deploy CSI-Driver must have enough rights on the base path (i.e. isiPath) to perform all operations. | -|Volume/filesystem is allowed to mount by any host in the network, though that host is not a part of the export of that particular volume under /ifs directory | "Dell EMC PowerScale: OneFS NFS Design Considerations and Best Practices":
There is a default shared directory (ifs) of OneFS, which lets clients running Windows, UNIX, Linux, or Mac OS X access the same directories and files. It is recommended to disable the ifs shared directory in a production environment and create dedicated NFS exports and SMB shares for your workload. | +|Volume/filesystem is allowed to mount by any host in the network, though that host is not a part of the export of that particular volume under /ifs directory | "Dell PowerScale: OneFS NFS Design Considerations and Best Practices":
There is a default shared directory (ifs) of OneFS, which lets clients running Windows, UNIX, Linux, or Mac OS X access the same directories and files. It is recommended to disable the ifs shared directory in a production environment and create dedicated NFS exports and SMB shares for your workload. | | Creating snapshot fails if the parameter IsiPath in volume snapshot class and related storage class is not the same. The driver uses the incorrect IsiPath parameter and tries to locate the source volume due to the inconsistency. | Ensure IsiPath in VolumeSnapshotClass yaml and related storageClass yaml are the same. | | While deleting a volume, if there are files or folders created on the volume that are owned by different users. If the Isilon credentials used are for a nonprivileged Isilon user, the delete volume action fails. It is due to the limitation in Linux permission control. | To perform the delete volume action, the user account must be assigned a role that has the privilege ISI_PRIV_IFS_RESTORE. The user account must have the following set of privileges to ensure that all the CSI Isilon driver capabilities work properly:
* ISI_PRIV_LOGIN_PAPI
* ISI_PRIV_NFS
* ISI_PRIV_QUOTA
* ISI_PRIV_SNAPSHOT
* ISI_PRIV_IFS_RESTORE
* ISI_PRIV_NS_IFS_ACCESS
In some cases, ISI_PRIV_BACKUP is also required, for example, when files owned by other users have mode bits set to 700. | | If the hostname is mapped to loopback IP in /etc/hosts file, and pods are created using 1.3.0.1 release, after upgrade to driver version 1.4.0 or later there is a possibility of "localhost" as a stale entry in export | Recommended setup: User should not map a hostname to loopback IP in /etc/hosts file | -| CSI Driver installation fails with the error message "error getting FQDN". | Map IP address of host with its FQDN in /etc/hosts file. | | Driver node pod is in "CrashLoopBackOff" as "Node ID" generated is not with proper FQDN. | This might be due to "dnsPolicy" implemented on the driver node pod which may differ with different networks.

This parameter is configurable in both helm and Operator installer and the user can try with different "dnsPolicy" according to the environment.| +| The `kubectl logs isilon-controller-0 -n isilon -c driver` logs shows the driver **Authentication failed. Trying to re-authenticate** when using Session-based authentication | The issue has been resolved from OneFS 9.3 onwards, for OneFS versions prior to 9.3 for session-based authentication either smart connect can be created against a single node of Isilon or CSI Driver can be installed/pointed to a particular node of the Isilon else basic authentication can be used by setting isiAuthType in `values.yaml` to 0 | +| When an attempt is made to create more than one ReadOnly PVC from the same volume snapshot, the second and subsequent requests result in PVCs in state `Pending`, with a warning `another RO volume from this snapshot is already present`. This is because the driver allows only one RO volume from a specific snapshot at any point in time. This is to allow faster creation(within a few seconds) of a RO PVC from a volume snapshot irrespective of the size of the volume snapshot. | Wait for the deletion of the first RO PVC created from the same volume snapshot. | +| While attaching a ReadOnly PVC from a volume snapshot to a pod, the mount operation will fail with error `mounting ... failed, reason given by server: No such file or directory`, if RO volume's access zone(non System access zone) on Isilon is configured with a dedicated service IP(which is same as `AzServiceIP` storage class parameter). This operation results in accessing the snapshot base directory(`/ifs`) and results in overstepping the RO volume's access zone's base directory, which the OneFS doesn't allow. | Provide a service ip that belongs to RO volume's access zone which set the highest level `/ifs` as its zone base directory. | diff --git a/content/v3/csidriver/troubleshooting/powerstore.md b/content/v3/csidriver/troubleshooting/powerstore.md index 5f9f9e74c8..2de1b8de02 100644 --- a/content/v3/csidriver/troubleshooting/powerstore.md +++ b/content/v3/csidriver/troubleshooting/powerstore.md @@ -7,5 +7,5 @@ description: Troubleshooting PowerStore Driver | --- | --- | | When you run the command `kubectl describe pods powerstore-controller- –n csi-powerstore`, the system indicates that the driver image could not be loaded. | - If on Kubernetes, edit the daemon.json file found in the registry location and add `{ "insecure-registries" :[ "hostname.cloudapp.net:5000" ] }`
- If on OpenShift, run the command `oc edit image.config.openshift.io/cluster` and add registries to yaml file that is displayed when you run the command.| | The `kubectl logs -n csi-powerstore powerstore-node-` driver logs show that the driver can't connect to PowerStore API. | Check if you've created a secret with correct credentials | -|Installation of the driver on Kubernetes supported versions fails with the following error:
```Error: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind "VolumeSnapshotClass" in version "snapshot.storage.k8s.io/v1"```|Kubernetes v1.20/1.21/v1.22 requires v1 version of snapshot CRDs to be created in cluster, see the [Volume Snapshot Requirements](../../installation/helm/powerstore/#optional-volume-snapshot-requirements)| +|Installation of the driver on Kubernetes supported versions fails with the following error:
```Error: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind "VolumeSnapshotClass" in version "snapshot.storage.k8s.io/v1"```|Kubernetes v1.21/v1.22/v1.23 requires v1 version of snapshot CRDs to be created in cluster, see the [Volume Snapshot Requirements](../../installation/helm/powerstore/#optional-volume-snapshot-requirements)| | If PVC is not getting created and getting the following error in PVC description:
```failed to provision volume with StorageClass "powerstore-iscsi": rpc error: code = Internal desc = : Unknown error:```| Check if you've created a secret with correct credentials | diff --git a/content/v3/csidriver/troubleshooting/unity.md b/content/v3/csidriver/troubleshooting/unity.md index 4091313390..447b218737 100644 --- a/content/v3/csidriver/troubleshooting/unity.md +++ b/content/v3/csidriver/troubleshooting/unity.md @@ -12,4 +12,5 @@ description: Troubleshooting Unity Driver | Dynamic array detection will not work in Topology based environment | Whenever a new array is added or removed, then the driver controller and node pod should be restarted with command **kubectl get pods -n unity --no-headers=true \| awk '/unity-/{print $1}'\| xargs kubectl delete -n unity pod** when **topology-based storage classes are used**. For dynamic array addition without topology, the driver will detect the newly added or removed arrays automatically| | If source PVC is deleted when cloned PVC exists, then source PVC will be deleted in the cluster but on array, it will still be present and marked for deletion. | All the cloned PVC should be deleted in order to delete the source PVC from the array. | | PVC creation fails on a fresh cluster with **iSCSI** and **NFS** protocols alone enabled with error **failed to provision volume with StorageClass "unity-iscsi": error generating accessibility requirements: no available topology found**. | This is because iSCSI initiator login takes longer than the node pod startup time. This can be overcome by bouncing the node pods in the cluster using the below command the driver pods with **kubectl get pods -n unity --no-headers=true \| awk '/unity-/{print $1}'\| xargs kubectl delete -n unity pod** | +| Driver install or upgrade fails because of an incompatible Kubernetes version, even though the version seems to be within the range of compatibility. For example: `Error: UPGRADE FAILED: chart requires kubeVersion: >= 1.21.0 <= 1.23.0 which is incompatible with Kubernetes V1.21.11-mirantis-1` | If you are using an extended Kubernetes version, please see the helm Chart at `helm/csi-unity/Chart.yaml` and use the alternate `kubeVersion` check that is provided in the comments. *Please note* that this is not meant to be used to enable the use of pre-release alpha and beta versions, which is not supported. | diff --git a/content/v3/csidriver/upgradation/drivers/isilon.md b/content/v3/csidriver/upgradation/drivers/isilon.md index 76ef431580..e473a299e4 100644 --- a/content/v3/csidriver/upgradation/drivers/isilon.md +++ b/content/v3/csidriver/upgradation/drivers/isilon.md @@ -6,36 +6,27 @@ tags: weight: 1 Description: Upgrade PowerScale CSI driver --- -You can upgrade the CSI Driver for Dell EMC PowerScale using Helm or Dell CSI Operator. +You can upgrade the CSI Driver for Dell PowerScale using Helm or Dell CSI Operator. -## Upgrade Driver from version 2.0.0 to 2.1.0 +## Upgrade Driver from version 2.1.0 to 2.2.0 using Helm **Note:** While upgrading the driver via helm, controllerCount variable in myvalues.yaml can be at most one less than the number of worker nodes. **Steps** -1. Verify that all pre-requisites to install CSI Driver for Dell EMC PowerScale version 2.1.0 are fulfilled. Note that change in secret format should be implemented. - - Delete the existing secret (isilon-creds and isilon-certs-0) - - Create new secrets (isilon-creds and isilon-certs-0) - Refer Installation section [here](./../../../installation/helm/isilon/#install-the-driver). -2. Clone the repository using `git clone -b v2.1.0 https://github.com/dell/csi-powerscale.git`, copy the helm/csi-isilon/values.yaml into a new location with a custom name say _my-isilon-settings.yaml_, to customize settings for installation. Edit _my-isilon-settings.yaml_ as per the requirements. -3. Change to directory dell-csi-helm-installer to install the Dell EMC PowerScale `cd dell-csi-helm-installer` -4. Upgrade the CSI Driver for Dell EMC PowerScale version 2.1.0 using following command: +1. Clone the repository using `git clone -b v2.2.0 https://github.com/dell/csi-powerscale.git`, copy the helm/csi-isilon/values.yaml into a new location with a custom name say _my-isilon-settings.yaml_, to customize settings for installation. Edit _my-isilon-settings.yaml_ as per the requirements. +2. Change to directory dell-csi-helm-installer to install the Dell PowerScale `cd dell-csi-helm-installer` +3. Upgrade the CSI Driver for Dell PowerScale using following command: `./csi-install.sh --namespace isilon --values ./my-isilon-settings.yaml --upgrade` ## Upgrade using Dell CSI Operator: +**Notes:** +1. While upgrading the driver via operator, replicas count in sample CR yaml can be at most one less than the number of worker nodes. +2. Upgrading the Operator does not upgrade the CSI Driver. -**Note:** While upgrading the driver via operator, replicas count in sample CR yaml can be at most one less than the number of worker nodes. +To upgrade the driver: -To upgrade the driver from version 2.0.0 to 2.1.0: - -Note: It is highly recommended to take *Backup of existing storage class definition and volumesnapshot class definition, yaml files* before the upgrade. - -1. Clone the [Dell CSI Operator repository](https://github.com/dell/dell-csi-operator). - -2. Execute `bash scripts/install.sh --upgrade` . This command will install the latest version of the operator. ->Note: Dell CSI Operator version 1.4.0 and higher would install to the 'dell-csi-operator' namespace by default. - -3. To upgrade the driver, refer [here](./../../../installation/operator/#update-csi-drivers). +1. Please upgrade the Dell CSI Operator by following [here](./../operator). +2. Once the operator is upgraded, to upgrade the driver, refer [here](./../../../installation/operator/#update-csi-drivers). diff --git a/content/v3/csidriver/upgradation/drivers/operator.md b/content/v3/csidriver/upgradation/drivers/operator.md index 2a4bf38b68..0cfbc9355e 100644 --- a/content/v3/csidriver/upgradation/drivers/operator.md +++ b/content/v3/csidriver/upgradation/drivers/operator.md @@ -6,17 +6,25 @@ tags: weight: 1 Description: Upgrade Dell CSI Operator --- -To upgrade Dell CSI Operator from v1.2.0/v1.3.0 to v1.4.0/v1.5.0/v1.6.0, perform the following steps. +To upgrade Dell CSI Operator, perform the following steps. +Dell CSI Operator can be upgraded based on the supported platforms in one of the 2 ways: +1. Using script (for non-OLM based installation) +2. Using Operator Lifecycle Manager (OLM) + ### Using Installation Script -Run the following command to upgrade the operator -``` -$ bash scripts/install.sh --upgrade -``` +1. Clone the [Dell CSI Operator repository](https://github.com/dell/dell-csi-operator). +2. cd dell-csi-operator +3. git checkout dell-csi-operator-'your-version' +4. Execute `bash scripts/install.sh --upgrade` . This command will install the latest version of the operator. +>Note: Dell CSI Operator version 1.4.0 and higher would install to the 'dell-csi-operator' namespace by default. ### Using OLM The upgrade of the Dell CSI Operator is done via Operator Lifecycle Manager. -If the `InstallPlan` for the Operator subscription is set to `Automatic`, the operator will be automatically upgraded to the new version. If the `InstallPlan` is set to `Manual`, then a Cluster Administrator would need to approve the upgrade. + +The `Update approval` (**`InstallPlan`** in OLM terms) strategy plays a role while upgrading dell-csi-operator on OpenShift. This option can be set during installation of dell-csi-operator on OpenShift via the console and can be either set to `Manual` or `Automatic`. + - If the **`Update approval`** is set to `Automatic`, OpenShift automatically detects whenever the latest version of dell-csi-operator is available in the **`Operator hub`**, and upgrades it to the latest available version. + - If the upgrade policy is set to `Manual`, OpenShift notifies of an available upgrade. This notification can be viewed by the user in the **`Installed Operators`** section of the OpenShift console. Clicking on the hyperlink to `Approve` the installation would trigger the dell-csi-operator upgrade process. **NOTE**: The recommended version of OLM for Upstream Kubernetes is **`v0.18.3`** when upgrading operator to `v1.5.0`. diff --git a/content/v3/csidriver/upgradation/drivers/powerflex.md b/content/v3/csidriver/upgradation/drivers/powerflex.md index 626538f5f9..0611b63233 100644 --- a/content/v3/csidriver/upgradation/drivers/powerflex.md +++ b/content/v3/csidriver/upgradation/drivers/powerflex.md @@ -8,14 +8,14 @@ weight: 1 Description: Upgrade PowerFlex CSI driver --- -You can upgrade the CSI Driver for Dell EMC PowerFlex using Helm or Dell CSI Operator. +You can upgrade the CSI Driver for Dell PowerFlex using Helm or Dell CSI Operator. -## Update Driver from v2.0 to v2.1 using Helm +## Update Driver from v2.1 to v2.2 using Helm **Steps** -1. Run `git clone -b v2.1.0 https://github.com/dell/csi-powerflex.git` to clone the git repository and get the v2.0 driver. +1. Run `git clone -b v2.2.0 https://github.com/dell/csi-powerflex.git` to clone the git repository and get the v2.2.0 driver. 2. You need to create config.yaml with the configuration of your system. Check this section in installation documentation: [Install the Driver](../../../installation/helm/powerflex#install-the-driver) - You must set the only system managed in v1.5/v2.0 driver as default in config.json in v2.1 so that the driver knows the existing volumes belong to that system. + You must set the only system managed in v1.5/v2.0/v2.1 driver as default in config.json in v2.2 so that the driver knows the existing volumes belong to that system. 3. Update values file as needed. 4. Run the `csi-install` script with the option _\-\-upgrade_ by running: `cd ../dell-csi-helm-installer && ./csi-install.sh --namespace vxflexos --values ./myvalues.yaml --upgrade`. @@ -25,10 +25,8 @@ You can upgrade the CSI Driver for Dell EMC PowerFlex using Helm or Dell CSI Ope - The logging configuration from v1.5 will not work in v2.1, since the log configuration parameters are now set in the values.yaml file located at helm/csi-vxflexos/values.yaml. Please set the logging configuration parameters in the values.yaml file. ## Upgrade using Dell CSI Operator: -1. Clone the [Dell CSI Operator repository](https://github.com/dell/dell-csi-operator). +**Note:** Upgrading the Operator does not upgrade the CSI Driver. -2. Execute `bash scripts/install.sh --upgrade` -This command will install the latest version of the operator. ->Note: Dell CSI Operator version 1.4.0 and higher would install to the 'dell-csi-operator' namespace by default. +1. Please upgrade the Dell CSI Operator by following [here](./../operator). +2. Once the operator is upgraded, to upgrade the driver, refer [here](./../../../installation/operator/#update-csi-drivers). -3. To upgrade the driver, refer [here](./../../../installation/operator/#update-csi-drivers). diff --git a/content/v3/csidriver/upgradation/drivers/powermax.md b/content/v3/csidriver/upgradation/drivers/powermax.md index 82d68f6759..1f2ba76421 100644 --- a/content/v3/csidriver/upgradation/drivers/powermax.md +++ b/content/v3/csidriver/upgradation/drivers/powermax.md @@ -8,12 +8,12 @@ weight: 1 Description: Upgrade PowerMax CSI driver --- -You can upgrade CSI Driver for Dell EMC PowerMax using Helm or Dell CSI Operator. +You can upgrade CSI Driver for Dell PowerMax using Helm or Dell CSI Operator. -## Update Driver from v2.0 to v2.1 using Helm +## Update Driver from v2.1 to v2.2 using Helm **Steps** -1. Run `git clone -b v2.1.0 https://github.com/dell/csi-powermax.git` to clone the git repository and get the v2.1 driver. +1. Run `git clone -b v2.2.0 https://github.com/dell/csi-powermax.git` to clone the git repository and get the v2.2 driver. 2. Update the values file as needed. 2. Run the `csi-install` script with the option _\-\-upgrade_ by running: `cd ../dell-csi-helm-installer && ./csi-install.sh --namespace powermax --values ./my-powermax-settings.yaml --upgrade`. @@ -22,11 +22,8 @@ You can upgrade CSI Driver for Dell EMC PowerMax using Helm or Dell CSI Operator - To update any installation parameter after the driver has been installed, change the `my-powermax-settings.yaml` file and run the install script with the option _\-\-upgrade_, for example: `./csi-install.sh --namespace powermax --values ./my-powermax-settings.yaml –upgrade`. ## Upgrade using Dell CSI Operator: +**Note:** Upgrading the Operator does not upgrade the CSI Driver. -1. Clone the [Dell CSI Operator repository](https://github.com/dell/dell-csi-operator). +1. Please upgrade the Dell CSI Operator by following [here](./../operator). +2. Once the operator is upgraded, to upgrade the driver, refer [here](./../../../installation/operator/#update-csi-drivers). -2. Execute `bash scripts/install.sh --upgrade` -This command installs the latest version of the operator. ->Note: Dell CSI Operator version 1.4.0 and later installs to the 'dell-csi-operator' namespace by default. - -3. To upgrade the driver, see [here](./../../../installation/operator/#update-csi-drivers). diff --git a/content/v3/csidriver/upgradation/drivers/powerstore.md b/content/v3/csidriver/upgradation/drivers/powerstore.md index 96be7e3630..7f5152bd3f 100644 --- a/content/v3/csidriver/upgradation/drivers/powerstore.md +++ b/content/v3/csidriver/upgradation/drivers/powerstore.md @@ -7,38 +7,39 @@ weight: 1 Description: Upgrade PowerStore CSI driver --- -You can upgrade the CSI Driver for Dell EMC PowerStore using Helm or Dell CSI Operator. +You can upgrade the CSI Driver for Dell PowerStore using Helm or Dell CSI Operator. -## Update Driver from v2.0 to v2.1 using Helm +## Update Driver from v2.1 to v2.2 using Helm Note: While upgrading the driver via helm, controllerCount variable in myvalues.yaml can be at most one less than the number of worker nodes. **Steps** -1. Run `git clone -b v2.1.0 https://github.com/dell/csi-powerstore.git` to clone the git repository and get the driver. +1. Run `git clone -b v2.2.0 https://github.com/dell/csi-powerstore.git` to clone the git repository and get the driver. 2. Edit `helm/config.yaml` file and configure connection information for your PowerStore arrays changing the following parameters: - *endpoint*: defines the full URL path to the PowerStore API. - *globalID*: specifies what storage cluster the driver should use - *username*, *password*: defines credentials for connecting to array. - *skipCertificateValidation*: defines if we should use insecure connection or not. - *isDefault*: defines if we should treat the current array as a default. - - *blockProtocol*: defines what SCSI transport protocol we should use (FC, ISCSI, None, or auto). + - *blockProtocol*: defines what transport protocol we should use (FC, ISCSI, NVMeTCP, None, or auto). - *nasName*: defines what NAS should be used for NFS volumes. + - *nfsAcls*: (Optional) defines permissions - POSIX mode bits or NFSv4 ACLs, to be set on NFS target mount directory. + NFSv4 ACls are supported for NFSv4 shares on NFSv4 enabled NAS servers only. POSIX ACLs are not supported and only POSIX mode bits are supported for NFSv3 shares. Add more blocks similar to above for each PowerStore array if necessary. 3. (optional) create new storage classes using ones from `samples/storageclass` folder as an example and apply them to the Kubernetes cluster by running `kubectl create -f ` - >Storage classes created by v1.4/v2.0 driver will not be deleted, v2.1 driver will use default array to manage volumes provisioned with old storage classes. Thus, if you still have volumes provisioned by v1.4/v2.0 in your cluster then be sure to include the same array you have used for the v1.4/v2.0 driver and make it default in the `config.yaml` file. + >Storage classes created by v1.4/v2.0/v2.1 driver will not be deleted, v2.2 driver will use default array to manage volumes provisioned with old storage classes. Thus, if you still have volumes provisioned by v1.4/v2.0/v2.1 in your cluster then be sure to include the same array you have used for the v1.4/v2.0/v2.1 driver and make it default in the `config.yaml` file. 4. Create the secret by running ```kubectl create secret generic powerstore-config -n csi-powerstore --from-file=config=secret.yaml``` 5. Copy the default values.yaml file `cp ./helm/csi-powerstore/values.yaml ./dell-csi-helm-installer/my-powerstore-settings.yaml` and update parameters as per the requirement. 6. Run the `csi-install` script with the option _\-\-upgrade_ by running: `./dell-csi-helm-installer/csi-install.sh --namespace csi-powerstore --values ./my-powerstore-settings.yaml --upgrade`. ## Upgrade using Dell CSI Operator: -Note: While upgrading the driver via operator, replicas count in sample CR yaml can be at most one less than the number of worker nodes. +**Notes:** +1. While upgrading the driver via operator, replicas count in sample CR yaml can be at most one less than the number of worker nodes. +2. Upgrading the Operator does not upgrade the CSI Driver. -1. Clone the [Dell CSI Operator repository](https://github.com/dell/dell-csi-operator). -2. Execute `bash scripts/install.sh --upgrade` -This command will install the latest version of the operator. ->Note: Dell CSI Operator version 1.5.0 and higher would install to the 'dell-csi-operator' namespace by default. +1. Please upgrade the Dell CSI Operator by following [here](./../operator). +2. Once the operator is upgraded, to upgrade the driver, refer [here](./../../../installation/operator/#update-csi-drivers). -3. To upgrade the driver, refer [here](./../../../installation/operator/#update-csi-drivers). diff --git a/content/v3/csidriver/upgradation/drivers/unity.md b/content/v3/csidriver/upgradation/drivers/unity.md index 60b7f33440..23ee1340e1 100644 --- a/content/v3/csidriver/upgradation/drivers/unity.md +++ b/content/v3/csidriver/upgradation/drivers/unity.md @@ -7,37 +7,35 @@ weight: 1 Description: Upgrade Unity CSI driver --- -You can upgrade the CSI Driver for Dell EMC Unity using Helm or Dell CSI Operator. +You can upgrade the CSI Driver for Dell Unity using Helm or Dell CSI Operator. +**Note:** +1. User has to re-create existing custom-storage classes (if any) according to the latest format. +2. User has to create Volumesnapshotclass after upgrade for taking Snapshots. +3. Secret.yaml files can be updated according to Multiarray normalization parameters only after upgrading the driver. + ### Using Helm **Note:** While upgrading the driver via helm, controllerCount variable in myvalues.yaml can be at most one less than the number of worker nodes. Preparing myvalues.yaml is the same as explained in the install section. -To upgrade the driver from csi-unity v2.0 to csi-unity 2.1 +To upgrade the driver from csi-unity v2.1 to csi-unity 2.2 -1. Get the latest csi-unity 2.1 code from Github using using `git clone -b v2.1.0 https://github.com/dell/csi-unity.git`. +1. Get the latest csi-unity 2.2 code from Github using using `git clone -b v2.2.0 https://github.com/dell/csi-unity.git`. 2. Create myvalues.yaml. 3. Copy the helm/csi-unity/values.yaml to the new location csi-unity/dell-csi-helm-installer with name say myvalues.yaml, to customize settings for installation edit myvalues.yaml as per the requirements. 4. Navigate to common-helm-installer folder and execute the following command: `./csi-install.sh --namespace unity --values ./myvalues.yaml --upgrade` - -**Note:** -1. User has to re-create existing custom-storage classes (if any) according to the latest format. -2. User has to create Volumesnapshotclass after upgrade for taking Snapshots. -3. Secret.yaml files can be updated according to Multiarray Normalization parameters only after upgrading the driver. ### Using Operator -**Note:** While upgrading the driver via operator, replicas count in sample CR yaml can be at most one less than the number of worker nodes. - -To upgrade the driver from csi-unity v2.0 to csi-unity v2.1 : +**Notes:** +1. While upgrading the driver via operator, replicas count in sample CR yaml can be at most one less than the number of worker nodes. +2. Upgrading the Operator does not upgrade the CSI Driver. -1. Clone the [Dell CSI Operator repository](https://github.com/dell/dell-csi-operator). +To upgrade the driver: -2. Execute `bash scripts/install.sh --upgrade` -This command will install the latest version of the operator. ->Note: Dell CSI Operator version 1.4.0 and higher would install to the 'dell-csi-operator' namespace by default. +1. Please upgrade the Dell CSI Operator by following [here](./../operator). +2. Once the operator is upgraded, to upgrade the driver, refer [here](./../../../installation/operator/#update-csi-drivers). -3. To upgrade the driver, refer [here](./../../../installation/operator/#update-csi-drivers). diff --git a/content/v3/deployment/_index.md b/content/v3/deployment/_index.md index 75eee043ba..23b93beb33 100644 --- a/content/v3/deployment/_index.md +++ b/content/v3/deployment/_index.md @@ -6,8 +6,8 @@ weight: 1 --- The Container Storage Modules and the required CSI Drivers can each be deployed following the links below: -- [Dell EMC CSI Drivers Installation](../csidriver/installation) -- [Dell EMC Container Storage Module for Observability](../observability/deployment) -- [Dell EMC Container Storage Module for Authorization](../authorization/deployment) -- [Dell EMC Container Storage Module for Resiliency](../resiliency/deployment) -- [Dell EMC Container Storage Module for Replication](../replication/deployment) \ No newline at end of file +- [Dell CSI Drivers Installation](../csidriver/installation) +- [Dell Container Storage Module for Observability](../observability/deployment) +- [Dell Container Storage Module for Authorization](../authorization/deployment) +- [Dell Container Storage Module for Resiliency](../resiliency/deployment) +- [Dell Container Storage Module for Replication](../replication/deployment) \ No newline at end of file diff --git a/content/v3/deployment/csminstaller/_index.md b/content/v3/deployment/csminstaller/_index.md index f7b0e7f6d3..95ae36a236 100644 --- a/content/v3/deployment/csminstaller/_index.md +++ b/content/v3/deployment/csminstaller/_index.md @@ -5,9 +5,15 @@ description: Container Storage Modules Installer weight: 1 --- -The CSM (Container Storage Modules) Installer simplifies the deployment and management of Dell EMC Container Storage Modules and CSI Drivers to provide persistent storage for your containerized workloads. +{{% pageinfo color="primary" %}} +The CSM Installer is currently deprecated and will no longer be supported as of CSM v1.4.0 +{{% /pageinfo %}} -## CSM Installer Supported Modules and Dell EMC CSI Drivers +>>**Note: The CSM Installer only supports installation of CSM 1.0 Modules and CSI Drivers in environments that do not have any existing deployments of CSM or CSI Drivers. The CSM Installer does not support the upgrade of existing CSM or CSI Driver deployments.** + +The CSM (Container Storage Modules) Installer simplifies the deployment and management of Dell Container Storage Modules and CSI Drivers to provide persistent storage for your containerized workloads. + +## CSM Installer Supported Modules and Dell CSI Drivers | Modules/Drivers | CSM 1.0 | | - | :-: | @@ -21,8 +27,6 @@ The CSM (Container Storage Modules) Installer simplifies the deployment and mana | CSI Driver for PowerFlex | v2.0 | | CSI Driver for PowerMax | v2.0 | -**Note:** The CSM Installer supports installation of CSM 1.0 Modules and CSI Drivers in environments that do not have any existing deployments of CSM or CSI Drivers. The CSM Installer does not support the upgrade of existing CSM or CSI Driver deployments. - The CSM Installer must first be deployed in a Kubernetes environment using Helm. After which, the CSM Installer can be used through the following interfaces: - [CSM CLI](./csmcli) - [REST API](./csmapi) @@ -150,7 +154,7 @@ helm install -n csm-installer --create-namespace \ When a new version of the CSM Installer helm chart is available, the following steps can be used to upgrade to the latest version. ->Note: Upgrading the CSM Installer does not upgrade the Dell EMC CSI Drivers or modules that were previously deployed with the installer. The CSM Installer does not support upgrading of the Dell EMC CSI Drivers or modules. The Dell EMC CSI Drivers and modules must be deleted and re-deployed using the latest CSM Installer in order to get the most recent version of the Dell EMC CSI Driver and modules. +>Note: Upgrading the CSM Installer does not upgrade the Dell CSI Drivers or modules that were previously deployed with the installer. The CSM Installer does not support upgrading of the Dell CSI Drivers or modules. The Dell CSI Drivers and modules must be deleted and re-deployed using the latest CSM Installer in order to get the most recent version of the Dell CSI Driver and modules. 1. Update the helm repository. ``` @@ -186,4 +190,4 @@ helm upgrade -n csm-installer \ 1. Delete the Helm chart ``` helm delete -n csm-installer csm-installer -``` \ No newline at end of file +``` diff --git a/content/v3/deployment/csminstaller/csmcli.md b/content/v3/deployment/csminstaller/csmcli.md index 7e21ffcb1c..3711351969 100644 --- a/content/v3/deployment/csminstaller/csmcli.md +++ b/content/v3/deployment/csminstaller/csmcli.md @@ -3,9 +3,9 @@ title : CSM CLI linktitle: CSM CLI weight: 2 description: > - Dell EMC Container Storage Modules (CSM) Command Line Interface(CLI) Deployment and Management + Dell Container Storage Modules (CSM) Command Line Interface(CLI) Deployment and Management --- -`csm` is a command-line client for installation of Dell EMC Container Storage Modules and CSI Drivers for Kubernetes clusters. +`csm` is a command-line client for installation of Dell Container Storage Modules and CSI Drivers for Kubernetes clusters. ## Pre-requisites @@ -83,7 +83,7 @@ To change password follow below command ### View Supported Platforms -You can now view the supported Dell emcCSI Drivers +You can now view the supported DellCSI Drivers ```console ./csm get supported-drivers @@ -192,9 +192,9 @@ See the individual steps for configuaration file pre-requisites for CSM Observab

- CSI Driver for Dell EMC PowerMax with reverse proxy module + CSI Driver for Dell PowerMax with reverse proxy module - To deploy CSI Driver for Dell EMC PowerMax with reverse proxy module, first upload reverse proxy tls crt and tls key via [adding configuration file](#upload-configuration-files). Then, use the below command to create application: + To deploy CSI Driver for Dell PowerMax with reverse proxy module, first upload reverse proxy tls crt and tls key via [adding configuration file](#upload-configuration-files). Then, use the below command to create application: ```console ./csm create application --clustername \ @@ -208,7 +208,7 @@ See the individual steps for configuaration file pre-requisites for CSM Observab
CSI Driver with replication module - To deploy CSI driver with replication module, first add a target cluster through [adding cluster](#add-a-cluster). Then, use the below command(this command is an example to deploy CSI Driver for Dell EMC PowerStore with replication module) to create application:: + To deploy CSI driver with replication module, first add a target cluster through [adding cluster](#add-a-cluster). Then, use the below command(this command is an example to deploy CSI Driver for Dell PowerStore with replication module) to create application:: ```console ./csm create application --clustername \ diff --git a/content/v3/deployment/csmoperator/_index.md b/content/v3/deployment/csmoperator/_index.md new file mode 100644 index 0000000000..702fab7871 --- /dev/null +++ b/content/v3/deployment/csmoperator/_index.md @@ -0,0 +1,209 @@ +--- +title: "CSM Operator" +linkTitle: "CSM Operator" +description: Container Storage Modules Operator +weight: 1 +--- + +{{% pageinfo color="primary" %}} +The Dell CSM Operator is currently in tech-preview and is not supported in production environments. It can be used in environments where no other Dell CSI Drivers or CSM Modules are installed. +{{% /pageinfo %}} + +The Dell CSM Operator is a Kubernetes Operator, which can be used to install and manage the CSI Drivers and CSM Modules provided by Dell for various storage platforms. This operator is available as a community operator for upstream Kubernetes and can be deployed using OperatorHub.io. The operator can be installed using OLM (Operator Lifecycle Manager) or manually. + +## Supported Platforms +Dell CSM Operator has been tested and qualified on Upstream Kubernetes and OpenShift. Supported versions are listed below. + +| Kubernetes Version | OpenShift Version | +| -------------------- | ------------------- | +| 1.21, 1.22, 1.23 | 4.8, 4.9 | + +## Supported CSI Drivers + +| CSI Driver | Version | ConfigVersion | +| ------------------ | --------- | -------------- | +| CSI PowerScale | 2.2.0 | v2.2.0 | + +## Supported CSM Modules + +| CSM Modules | Version | ConfigVersion | +| ------------------ | --------- | -------------- | +| CSM Authorization | 1.2.0 | v1.2.0 | + +## Installation +Dell CSM Operator can be installed manually or via Operator Hub. + +### Manual Installation + +#### Operator Installation on a cluster without OLM + +1. Clone the [Dell CSM Operator repository](https://github.com/dell/csm-operator). +2. `cd csm-operator` +3. (Optional) If using a local Docker image, edit the `deploy/operator.yaml` file and set the image name for the CSM Operator Deployment. +4. Run `bash scripts/install.sh` to install the operator. + +>NOTE: Dell CSM Operator will be installed in the `dell-csm-operator` namespace. + +{{< imgproc install.jpg Resize "2500x" >}}{{< /imgproc >}} + +5. Run the command `kubectl get pods -n dell-csm-operator` to validate the installation. If installed successfully, you should be able to see the operator pod in the `dell-csm-operator` namespace. + +{{< imgproc install_pods.jpg Resize "2500x" >}}{{< /imgproc >}} + +#### Operator Installation on a cluster with OLM +1. Clone the [Dell CSM Operator repository](https://github.com/dell/csm-operator). +2. `cd csm-operator` +3. Run `bash scripts/install_olm.sh` to install the operator. +>NOTE: Dell CSM Operator will get installed in the `test-csm-operator-olm` namespace. + +{{< imgproc install_olm.jpg Resize "2500x" >}}{{< /imgproc >}} + +4. Once installation completes, run the command `kubectl get pods -n test-csm-operator-olm` to validate the installation. If installed successfully, you should be able to see the operator pods and CSV in the `test-csm-operator-olm` namespace. The CSV phase will be in `Succeeded` state. + +{{< imgproc install_olm_pods.jpg Resize "2500x" >}}{{< /imgproc >}} + +>**NOTE**: The recommended version of OLM for upstream Kubernetes is **`v0.18.2`**. + +### Installation via Operator Hub +`dell-csm-operator` can be installed via Operator Hub on upstream Kubernetes clusters & Red Hat OpenShift Clusters. + +The installation process involves the creation of a `Subscription` object either via the _OperatorHub_ UI or using `kubectl/oc`. While creating the `Subscription` you can set the Approval strategy for the `InstallPlan` for the operator to: +* _Automatic_ - If you want the operator to be automatically installed or upgraded (once an upgrade is available). +* _Manual_ - If you want a cluster administrator to manually review and approve the `InstallPlan` for installation/upgrades. + +### Uninstall +#### Operator uninstallation on a cluster without OLM +To uninstall a CSM operator, run `bash scripts/uninstall.sh`. This will uninstall the operator in `dell-csm-operator` namespace. + +{{< imgproc uninstall.jpg Resize "2500x" >}}{{< /imgproc >}} + +#### Operator uninstallation on a cluster with OLM +To uninstall a CSM operator installed with OLM run `bash scripts/uninstall_olm.sh`. This will uninstall the operator in `test-csm-operator-olm` namespace. + +{{< imgproc uninstall_olm.jpg Resize "2500x" >}}{{< /imgproc >}} + +### Custom Resource Definitions +As part of the Dell CSM Operator installation, a CRD representing configuration for the CSI Driver and CSM Modules is also installed. +`containerstoragemodule` CRD is installed in API Group `storage.dell.com`. + +Drivers and modules can be installed by creating a `customResource`. + +### Custom Resource Specification +Each CSI Driver and CSM Module installation is represented by a Custom Resource. + +The specification for the Custom Resource is the same for all the drivers.Below is a list of all the mandatory and optional fields in the Custom Resource specification + +#### Mandatory fields + +**configVersion** - Configuration version - refer [here](#full-list-of-csi-drivers-and-versions-supported-by-the-dell-csm-operator) for appropriate config version. + +**replicas** - Number of replicas for controller plugin - must be set to 1 for all drivers. + +**dnsPolicy** - Determines the dnsPolicy for the node daemonset. Accepted values are `Default`, `ClusterFirst`, `ClusterFirstWithHostNet`, `None`. + +**common** - This field is mandatory and is used to specify common properties for both controller and the node plugin. + +* image - driver container image +* imagePullPolicy - Image Pull Policy of the driver image +* envs - List of environment variables and their values + +#### Optional fields + +**controller** - List of environment variables and values which are applicable only for controller. + +**node** - List of environment variables and values which are applicable only for node. + +**sideCars** - Specification for CSI sidecar containers. + +**authSecret** - Name of the secret holding credentials for use by the driver. If not specified, the default secret *-creds must exist in the same namespace as driver. + +**tlsCertSecret** - Name of the TLS cert secret for use by the driver. If not specified, a secret *-certs must exist in the namespace as driver. + +**tolerations** - List of tolerations which should be applied to the driver StatefulSet/Deployment and DaemonSet. It should be set separately in the controller and node sections if you want separate set of tolerations for them. + +**nodeSelector** - Used to specify node selectors for the driver StatefulSet/Deployment and DaemonSet. + +>**Note:** The `image` field should point to the correct image tag for version of the driver you are installing. + +### Pre-requisites for installation of the CSI Drivers + +On Upstream Kubernetes clusters, make sure to install +* VolumeSnapshot CRDs - Install v1 VolumeSnapshot CRDs +* External Volume Snapshot Controller + +#### Volume Snapshot CRD's +The Kubernetes Volume Snapshot CRDs can be obtained and installed from the external-snapshotter project on Github. Manifests are available [here](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/client/config/crd) + +#### Volume Snapshot Controller +The CSI external-snapshotter sidecar is split into two controllers: +- A common snapshot controller +- A CSI external-snapshotter sidecar + +The common snapshot controller must be installed only once in the cluster irrespective of the number of CSI drivers installed in the cluster. On OpenShift clusters, the common snapshot-controller is pre-installed. In the clusters where it is not present, it can be installed using `kubectl` and the manifests are available [here](https://github.com/kubernetes-csi/external-snapshotter/tree/v5.0.1/deploy/kubernetes/snapshot-controller) + +*NOTE:* +- The manifests available on GitHub install the snapshotter image: + - [quay.io/k8scsi/csi-snapshotter:v5.0.1](https://quay.io/repository/k8scsi/csi-snapshotter?tag=v5.0.1&tab=tags) +- The CSI external-snapshotter sidecar is still installed along with the driver and does not involve any extra configuration. + +#### Installation example + +You can install CRDs and the default snapshot controller by running the following commands: +```bash +git clone https://github.com/kubernetes-csi/external-snapshotter/ +cd ./external-snapshotter +git checkout release- +kubectl create -f client/config/crd +kubectl create -f deploy/kubernetes/snapshot-controller +``` +*NOTE:* +- It is recommended to use 5.0.x version of snapshotter/snapshot-controller. + +## Installing CSI Driver via Operator + +Refer [PowerScale Driver](drivers/powerscale) to install the driver via Operator + +>**Note**: If you are using an OLM based installation, example manifests are available in `OperatorHub` UI. +You can edit these manifests and install the driver using the `OperatorHub` UI. + +### Verifying the driver installation +Once the driver `Custom Resource (CR)` is created, you can verify the installation as mentioned below + +* Check if ContainerStorageModule CR is created successfully using the command below: + ``` + $ kubectl get csm/ -n -o yaml + ``` +* Check the status of the CR to verify if the driver installation is in the `Succeeded` state. If the status is not `Succeeded`, see the [Troubleshooting guide](./troubleshooting/#my-dell-csi-driver-install-failed-how-do-i-fix-it) for more information. + + +### Update CSI Drivers +The CSI Drivers and CSM Modules installed by the Dell CSM Operator can be updated like any Kubernetes resource. This can be achieved in various ways which include: + +* Modifying the installation directly via `kubectl edit` + For e.g. - If the name of the installed PowerScale driver is powerscale, then run + ``` + # Replace driver-namespace with the namespace where the PowerScale driver is installed + $ kubectl edit csm/powerscale -n + ``` + and modify the installation +* Modify the API object in-place via `kubectl patch` + +#### Supported modifications +* Changing environment variable values for driver +* Updating the image of the driver + +### Uninstall CSI Driver +The CSI Drivers and CSM Modules can be uninstalled by deleting the Custom Resource. + +For e.g. +``` +$ kubectl delete csm/powerscale -n +``` + +By default, the `forceRemoveDriver` option is set to `true` which will uninstall the CSI Driver and CSM Modules when the Custom Resource is deleted. Setting this option to `false` is not recommended. + +### SideCars +Although the sidecars field in the driver specification is optional, it is **strongly** recommended to not modify any details related to sidecars provided (if present) in the sample manifests. The only exception to this is modifications requested by the documentation, for example, filling in blank IPs or other such system-specific data. Any modifications not specifically requested by the documentation should be only done after consulting with Dell support. + +## Modules +The CSM Operator can optionally enable modules that are supported by the specific Dell CSI driver. By default, the modules are disabled but they can be enabled by setting the `enabled` flag to true and setting any other configuration options for the given module. diff --git a/content/v3/deployment/csmoperator/drivers/_index.md b/content/v3/deployment/csmoperator/drivers/_index.md new file mode 100644 index 0000000000..c850691c0d --- /dev/null +++ b/content/v3/deployment/csmoperator/drivers/_index.md @@ -0,0 +1,6 @@ +--- +title: "CSI Drivers" +linkTitle: "CSI Drivers" +description: Installation of Dell CSI Drivers using Dell CSM Operator +weight: 1 +--- diff --git a/content/v3/deployment/csmoperator/drivers/powerscale.md b/content/v3/deployment/csmoperator/drivers/powerscale.md new file mode 100644 index 0000000000..951ece9dd0 --- /dev/null +++ b/content/v3/deployment/csmoperator/drivers/powerscale.md @@ -0,0 +1,139 @@ +--- +title: PowerScale +linkTitle: "PowerScale" +description: > + Installing Dell CSI Driver for PowerScale via Dell CSM Operator +--- + +## Installing CSI Driver for PowerScale via Dell CSM Operator + +The CSI Driver for Dell PowerScale can be installed via the Dell CSM Operator. +To deploy the Operator, follow the instructions available [here](../../#installation). + +Note that the deployment of the driver using the operator does not use any Helm charts and the installation and configuration parameters will be slightly different from the one specified via the Helm installer. + +**Note**: MKE (Mirantis Kubernetes Engine) does not support the installation of CSI-PowerScale via Operator. + +### Listing installed drivers with the ContainerStorageModule CRD +User can query for all Dell CSI drivers using the following command: +`kubectl get csm --all-namespaces` + +### Install Driver + +1. Create namespace. + Execute `kubectl create namespace test-isilon` to create the test-isilon namespace (if not already present). Note that the namespace can be any user-defined name, in this example, we assume that the namespace is 'test-isilon'. + +2. Create *isilon-creds* secret by creating a yaml file called secret.yaml with the following content: + ``` + isilonClusters: + # logical name of PowerScale Cluster + - clusterName: "cluster1" + + # username for connecting to PowerScale OneFS API server + # Default value: None + username: "user" + + # password for connecting to PowerScale OneFS API server + password: "password" + + # HTTPS endpoint of the PowerScale OneFS API server + # Default value: None + # Examples: "1.2.3.4", "https://1.2.3.4", "https://abc.myonefs.com" + endpoint: "1.2.3.4" + + # Is this a default cluster (would be used by storage classes without ClusterName parameter) + # Allowed values: + # true: mark this cluster config as default + # false: mark this cluster config as not default + # Default value: false + isDefault: true + + # Specify whether the PowerScale OneFS API server's certificate chain and host name should be verified. + # Allowed values: + # true: skip OneFS API server's certificate verification + # false: verify OneFS API server's certificates + # Default value: default value specified in values.yaml + # skipCertificateValidation: true + + # The base path for the volumes to be created on PowerScale cluster + # This will be used if a storage class does not have the IsiPath parameter specified. + # Ensure that this path exists on PowerScale cluster. + # Allowed values: unix absolute path + # Default value: default value specified in values.yaml + # Examples: "/ifs/data/csi", "/ifs/engineering" + # isiPath: "/ifs/data/csi" + + # The permissions for isi volume directory path + # This will be used if a storage class does not have the IsiVolumePathPermissions parameter specified. + # Allowed values: valid octal mode number + # Default value: "0777" + # Examples: "0777", "777", "0755" + # isiVolumePathPermissions: "0777" + + - clusterName: "cluster2" + username: "user" + password: "password" + endpoint: "1.2.3.4" + endpointPort: "8080" + ``` + + Replace the values for the given keys as per your environment. After creating the secret.yaml, the following command can be used to create the secret, + `kubectl create secret generic isilon-creds -n isilon --from-file=config=secret.yaml` + + Use the following command to replace or update the secret + + `kubectl create secret generic isilon-creds -n isilon --from-file=config=secret.yaml -o yaml --dry-run | kubectl replace -f -` + + **Note**: The user needs to validate the YAML syntax and array related key/values while replacing the isilon-creds secret. + The driver will continue to use previous values in case of an error found in the YAML file. + +3. Create isilon-certs-n secret. + Please refer [this section](../../../../csidriver/installation/helm/isilon/#certificate-validation-for-onefs-rest-api-calls) for creating cert-secrets. + + If certificate validation is skipped, empty secret must be created. To create an empty secret. Ex: empty-secret.yaml + + ```yaml + apiVersion: v1 + kind: Secret + metadata: + name: isilon-certs-0 + namespace: isilon + type: Opaque + data: + cert-0: "" + ``` + Execute command: ```kubectl create -f empty-secret.yaml``` + +4. Create a CR (Custom Resource) for PowerScale using the sample files provided + [here](https://github.com/dell/csm-operator/tree/master/samples). This file can be modified to use custom parameters if needed. + +5. Users should configure the parameters in CR. The following table lists the primary configurable parameters of the PowerScale driver and their default values: + + | Parameter | Description | Required | Default | + | --------- | ----------- | -------- |-------- | + | dnsPolicy | Determines the DNS Policy of the Node service | Yes | ClusterFirstWithHostNet | + | ***Common parameters for node and controller*** | + | CSI_ENDPOINT | The UNIX socket address for handling gRPC calls | No | /var/run/csi/csi.sock | + | X_CSI_ISI_SKIP_CERTIFICATE_VALIDATION | Specifies whether SSL security needs to be enabled for communication between PowerScale and CSI Driver | No | true | + | X_CSI_ISI_PATH | Base path for the volumes to be created | Yes | | + | X_CSI_ALLOWED_NETWORKS | Custom networks for PowerScale export. List of networks that can be used for NFS I/O traffic, CIDR format should be used | No | empty | + | X_CSI_ISI_AUTOPROBE | To enable auto probing for driver | No | true | + | X_CSI_ISI_NO_PROBE_ON_START | Indicates whether the controller/node should probe during initialization | Yes | | + | X_CSI_ISI_VOLUME_PATH_PERMISSIONS | The permissions for isi volume directory path | Yes | 0777 | + | ***Controller parameters*** | + | X_CSI_MODE | Driver starting mode | No | controller | + | X_CSI_ISI_ACCESS_ZONE | Name of the access zone a volume can be created in | No | System | + | X_CSI_ISI_QUOTA_ENABLED | To enable SmartQuotas | Yes | | + | ***Node parameters*** | + | X_CSI_MAX_VOLUMES_PER_NODE | Specify the default value for the maximum number of volumes that the controller can publish to the node | Yes | 0 | + | X_CSI_MODE | Driver starting mode | No | node | + +6. Execute the following command to create PowerScale custom resource: + ```kubectl create -f ``` . + This command will deploy the CSI-PowerScale driver in the namespace specified in the input YAML file. + +7. [Verify the CSI Driver installation](../../#verifying-the-driver-installation) + +**Note** : + 1. "Kubelet config dir path" is not yet configurable in case of Operator based driver installation. + 2. Also, snapshotter and resizer sidecars are not optional to choose, it comes default with Driver installation. \ No newline at end of file diff --git a/content/v3/deployment/csmoperator/install.jpg b/content/v3/deployment/csmoperator/install.jpg new file mode 100644 index 0000000000000000000000000000000000000000..14b6362c45ce827e660561fffcd8cefcb5545f0e GIT binary patch literal 170165 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%0Dn=96 zMgv_rliGX+3T8|OOjq;-mUdmgjIa8wLPJCRdc9xP*7x+3$1sb#2`zK@c2vBs0=Z0bveWxUw3W%nJ=%@MA)T&HLh3oE9+3R@G)PW9hBIcgkkh zPnwVwjj#7Zx3uKuo}IH5*3<|xLo4#C2)|1AtUs0Zms_i&uTMmDr+WQjj|_7U(@B$A((VccTh`GP3B6a{CSN|KP7o2^ijp2j1x0i7E1NsEhQYI3L ziE4lAt`=UN>+a_ym0K-fX3W3cxvx2bE$KCn!YhjSD*LQ*I7w)l9zW9CO`WJbYaap2|{qkPJ_+~v+u*io5! zEt6g%PQPmXyN>|>hRuZ0@xBK0);3YmfXWNg&$PG~!Jeq5+bc>kdtoRi(Q6MgO1YlF zR>ME*J-k>pttiIIiuCW*N9;0eSQ98-f*1Id`<0G1WnNUXS&>^nnX8Ki4Vs^ra!Plj z9!ie4o4?$>KXkc(E(z?|ZqPRwmzi9RblCJSwkQCs`b>HDV}yx3RJWI=+5foNIl3@> zN;-7SF#e_2UnF>nO?T$KAaHA5UcHuFd(T!~DlK5#q07p$HobWucCDPeRzKQ4+`l-r z?DPq;lt@1dV&+>+ckD#~XN3JW%X7g?_#;eDDrjYnYOPPjg{gs7V7%~PC-1_ky&Q$a zs#+^OM6Km4EcMmHmkE$uPBV)#q2y6j*1S_x!IJq){#CV|-0f2|WBMMoki5g>&7JLN z0h-SpG3Bh&9dGGrBds}NgAK$L2M*I1!SIR%elyWZwzEfm6gwD#07o$4Lt!gdB&q5b z8bZEs0R)74 zigk?0&_~>-3wTpTTE%&>z>fFu{w-oA+>xbxqjH@P?_#-8QJ0(YT1pe`D{>!=e8FxL>V8CA(6TCA&$Il1wFALX>qd zmEANHSz^qT%D#k9#AMH&WsGIaWDg^A)Ql7Dw54ao_!Q}ThRW4wecr7-ZF#?RU%~Nk37P#n#P3p-rXPT) z^yF%dmH=?J*=EFjve8y=f2TEFU&Qm&G^VyJU!F++T4yB~GzC>7kWhO`9BO$bedOsa9b;mCbk>yG(+%|T;VmhMWpdgcB;m#)iTEzNPW zs<>O4Qe*I)g4y4`jcVAblOu}tcS}q|Yw*7ce{ZS=L)=1Nur4EqpvS;oO%jYnT16br zsu<=ZI>hEH_0o2WdU7V&bRZAYuy@k_ni=V7+&!+!8N|mAiRr*S#5~(cC4WTrf~(wt zRAw#%9LG6EL&xeEicksh9P!C^=VG~Gbpy%v!gu=>j^(~d!13s=NoZ~mS`#K(Dcmh4 z=u^G3yC{~fc~m;QFOj0hknlv+lzB@a2H13LT7CVLXa}%`srnxvzw6IcJ}wmR=Y)2E zdOOS@Kd8mk)62aOWc1+ThkX8}w`nGd2I`wO15@zwZ4wDQQ_7G!26kPa$e5jODrCDb z6Db`88oZ!>mR|s-B{arF8xO6y)V1R_k5v86j;()qy)DCt3z&*@;i2JndFA3wR zbEZI5uheNuPiToT){KH9^h1PCEDX5Y^)}n>?N_wEv#_mxc+X5U(|m4;dSng?a4>u_Vnaq*wR%JTy3>sNZlD?c^@oU_azgMq+iZ^- zs_F+z3u+fEe9Cr--_mv)R?AB>lXVk!U*E^;$}BZz%QpZg80Xg-99P*y zA3g_)2C3$xAAC-}aLM4YoNr-~&HkisricWV67VD@x|fk{)5nKvpny(6lmCdvP7T?k zuIgecc9i3N@x6eWbfU8_*MVGKTc!ET+>=D=9+o@8Y`0kF>TDB;A{JADvx3da1WZ7j zTKOl=Xj$^OgU)|Uvh3UQt+dT~-@fP}5muMHWISl?WsIXwNkg!mCtM&)YLcMk3Bunp z!IZiBmrY|w&<6kQTSS9%NNj%^8Ec&lJu?VqYKpDgS1?R^XoRw@_})dBT3w z%qO%Y${qY-n{b3JMdxLi()8JZ$GQNG%=mQY2{ZBAi5F;%Z52&j0#$L}AnSs#E<8W` zA>Hr`f0VX)td2w(G$^ob;^cH_+-~lHq=QQLw)UT|s#aFsTUvU3zo24wpMNsbE5tOo z!m~H@;`Xx|qSM!2Kc%Nsx?b|YhA+vHsHN6$|HZrt4L`W7h$DnB+gThoQRxqDC%*%B*0)f;#o-+-?1$ z#uQcO*3S}f?d7YwM040Z^5Xr_bcN&2o7h7T$fl51%J`8B9r za`jiR<4;os8%B)J6LRqrIF*Q8fn$cobtLG{9q4Kz`&h+IB3=NNz8&tPnGl5yn7%Mt zb6m2IGbz^~VdPR5v7OlVC7ZR98j6cJO+__(A{^(yQpgr^B_2aR}jLh)YDQ{Zg@MO|K zPBeaM7cGlyOg~teGqxhBF#z9EC@kxHeexGdBF516Ud@RiUyvql4M*1cyLJ9*cB7T*odnKb4SaZxkpoK1wGG*E# zRxb|z;qtVfy!bo!_nZ&N&#yr>_KJXmdfr?_yp+HAy@Zmtr*o)-eX32=T$>R8TRAC# zP~6X+0Ru~4n@v+W%vMvvm5O5UOeDaCNilyZ#Wb8*6t|Q zF?|>aZR7S3fye{5 zlV=yE>ciMJe{YBM=iL<4Og{P~;i1prWqVMoROE?>@S0G2pBe`{2@_x?vX;c{$TR_? z%6hK71Fuy?e9Z>p9dsNN6?!O)$1x$(78%K*S~132#Q^~Wr$k(PExH~p-*Sq+V*$NV zQd0vnS?(X@j}!&gArrg-9SBrQnpu z#wu+is4xQXvV8=ZCXA4#CVE+lWVmputw zj~tNJUQpWIiueg&W$ix7RXxfPMt%iCJ!@m7HE_H3Vw#rd`Kd}+L_m@>fY4!MH`Tx2 zw>FGG`4D29gofB4SRu1|mBHbo>rAT;q_Na`@twup#z{-6JfI}=HS$yEs_5z1-)?z~ zyKnK9CAUy06a<rEIze%aAH|Y@XD22j4Fds7WT^h$d0KtHExk8 zI+?M^#ISB7po56eIiFK7`_7oBqH({PuJhWTQqM)HA8EK&bW--xk+*kz_pI1iSibrM zgnDlIt`^=Cfom1;t+9y;l@u$V81!PkE=-rKOkG5#GB+8|fifa2nJF{Z8Krvy0SH0y zQp}-Nq|mS?SpXRSYFSJ%wN_z!;#bVW6vCxd8b@wtLuEfZiB}|pJJ8YKy@VMu`gL$; zt0T0{>3F=4#By!JG$y-8u4y5^(L~1ZcwH=a_+>f$NxkyLn|D7@@E%N{m_G1wH;>@4 z{%RZ0M<%qZ+T5e{{(>DD$-5|OZ5k-f;c*QUPSwA(;27yWLo8wfB}+sJvIk8wBfQL# zVj9v9ZnhGHbu=hPeBs`MsyaO<#vRYsINi?@t$n9{ry1#+x9|1o6DRLIxSMu!SkT1A z-%@qGtgNB2%5=*$#9+y^$==VKr99;M%xU*g`Glju3b_W|+J6E$0u>?LFVZx9hPzBB zbfhZ*0Sh*fl7m^mS#M9f#?62KEcqx*UFH+wSy?l%eEJjkAt4HwIAU0~h-*x!RGT@8 zj}lM`xXv4FqGstNyWW{v3!#p+(Ky!1_lRr5j9ES7I zH|;D(#Ege>pZ~5D|Ij5!id=-pez{Qmtue}y=WM1)U+kRAhfEvqm=B#~-d^I4cwdBrI#uEV3dS@Q2GS z{`@T!W8R#b`vk}Iq3@%Xjmv%x&$k;2G<}fRScs0#swJ2>z8@~^z425ge>iD#F*$h0 zX)3^Q#W0RAlLO`DoZ<{ag>f1bNCGLNV`8nur})Q2{|n8!3&1u;{?hXX%N-Jj<_+S7 zZ)@v7khj%U#FsX?IXv{a{#euzl;Z zVnFR3${{*B#bsEh>8Kr1zce-anQAEEukC$wDxY3XPnqh-F7mqDSQDXDY9@sy2LMlb7EebQ~c4;mW)6P%GoU>yN;bF9&flGd7(BapX6$&@b|FCchJoMvkgU>X_Ie zdAc0Vx3jYq_IH&Pxqt8F*K#c5({3YDnKJ=g7>Mh1jrOFV7+c!vL6TWRf;nbrVnplr zJ1Mv5b7pIS$Beeh-&rlR4Yv98xNt1rmgD}l)VwL)bI7-KI2)@ufh<<)@3Q}kv;)4U z0|%m*Ak&7n&d6cr&!Pn<0ieu9qCX_m#$Xh|Q`VeEW`;gU(y~4`W+;8(an6GQ3Tfj( z)csEIX`qk-p45Atp956ifqzxsG3N1-0<^RkHc)+I6LgO|=>NO=KG9zAZvWV^+!RB# z{pi3W>6=o2=QKH>R;%0we&T0AktgOo z^?&p_OoTjrlMzm@pz71lZ+A!?)6xGFl-rj6{9fwDYV0d$LuB+`gO~D$qKnTzzO1>7 zK7^VnA=HR{LBFs>XwV34upX&>UGS^#hUAAHRah&yO)VNEne%m>$fUNM;G`^ z&2hxU#u<9M34m%`3{YDBMrl!{9?gkwFaQt+>}ts{*kzp;ag^TA7Kxd4N}d%*Jn*BX z1E{U^r^Y^WZ>vLC@A1$nv)Vsgbsp1mUN5F3_Dkv`GR(pQYu~%XrC*l0-`)MV+wcZ| znZHGGw!H{+-1FyXr>4F4(?ZkGJYqge$`d(7u1%nthq53Dds=xDg%CMv(RH@yLEx-y z7HYMwCax-5**!tFMHTr#_gl*DBAY!@3CzpJb{l{3j~6m-(<5H6{oLt<7D*v`L?opN zODDHVyesv;*$}SKI##pE^?I+cufX;T`KeYnTuCRGW{aMHP@v7q{Sm?2?V&JBT0you zgRf4mriNuTy#GON(&|k$hjX)7Ba^+?zslOEvlLLx#=2U_)}4#F1ppxd$alh@P665L zi;4mc#h+9@3W{8p-Q&QtM|K~5n@Lo%SzcW)Z-9qN5JL)vrZI+= zw{olly@>;k5L3-*lBy1awS9{TrGUc0G>7%^2o{859*dOs$T~fs`oCW~8vi?KVzut* zhVt*Y`p-zjgD26zAMp<|SR*KM8Y-pg=H`mt=8(%`t!Vga9^t~A!#M%Hg`G&xuj(hDuMR$O}(YErvA zs|ZCw)q1;Gz!pOvcF+*#5~zKCXq659)Sg|@IzQw*9<%b|bf(WGUa_7-K$jeLwV1r> zINKk_Q3akHhmZ&Qgxs-ec(KW#=(g+p@z%WTXrC*CkbHL=Cw4)*NcR<+)qIv7 z;?cjd!}CmFP7jI+UW&n(hf{Nz=~5yd_9Z=M6LRbfg$eF1QJrazaQam@t<=P&G6G+psTWY1Pk&33^K5wq1$4MmD{c$o=wttVA!&MJa4J7BH+IrsU+c-FoV7DVKWW9j zC(!e309_h}M-DYA!IJZWNd0yg%%IUW|7V_aZ;@?7E=nC{jD z`KLqkQH#PZ0}K53!u_Kg3&k1mXNAQ;IyyOMB~*4iA6F0I*H#)7XQvijM@z2o3kE{CPnn4zC=o zVwMa9N0U}vxw_qY9K3wFcBee9lqm#xX-uH)w90yyKKLAe(_{8#Yi>JszE!X}9wmdn ziX6()1+sn>(>b(cP~kngSaiYI0roc;50Rr5XN+3%6!MY;HLdn19W>SiS|Y$F_8*VS z%Q4FqZ{coJHr}b9hA`|hIEJ97t-D~`wc=_DE&I8J&0_sp4i;kzp(*i=G~jW|SOB%I zWhbR0q1;~nb#~3LYF|$V_+L}b4}K@JAazIc&aZX9d2ATN`MQq+qWZHQAmnMm>>H!1 zTW<8jrnz3hO~dK2!NLXl=_ZlcDbdx7r&*T-&wrBtkf2F(@9Y<4>oP6o`1k$T!H%&( zb8~L~E1;@Yc@n2f#>9u!p(h)1>K%ug7Vvodqz!l$B<7X1hi-r_`w{$lF}c)Jizm=E z#8X4>YU$VJq?`VyOZM*B|Fk^XU$9+iaNIYTRcTDBEgI{~bNSKzK`Zdrh%$6-Y@1IlWv@)L|XNz?>fe6HQ++Si+v;XKS%G6V>Z(_rEr7 zw7pD%eFgZ2YUWfc%2glZVUVtxm!)}*N|9Gg-p_$Ah_P5Rmne9f-^GsmC#>8Y+luxl zL&5B$z;|s9G+s@~LeKf^gKcM>q#LC6jc$)No2YFmEq8y(Em1sOqG-u4U7sr!koW89 zq=ZSy(uiu31M$`l1X-|=nr4sDynuG?c}j+COfX2j^jU8D(zqP_L1_Ch*|Ma8x$k`gJj`%40|F?GqD5fYFC%0X=OHS$)gd7r(J?ge$;qP|^^!y@>vEaF&Y2k!H^QP8EJV$HKo@E=yE7`rOQ~>AnAAxmePg zhWCyxj;ofz3z{Mii!ati%ci?NXyrNe5?F8JIgI<{>yOd*M&p1lX;}y)5cV@5+ZB>I zO)OyVc1$&$qK2$ict?CfHD5+5tdI{9X427^^++A{A_tENYAI4AoOq}9irOO_iS*8K z7FpS~(D=!}Rc*D1dp{y%4iwE%U?#(zeJJLF%$HE?kiB(Hg2k|01LUsa5ye=ewlluP z5b?=-LLaOnUh3)wVQ05n5&(jf;RwES79}O2QDGOFdR&*xFg^i6O`kt5Gq&2f{iv}z z{41qyXE3k6xFJ(j0+Ex~B=!ucZ!irZbp%S38ZZyw3FOXWByD6Ifu5 zpwudO6$_^$@+0iXeU3Vrv#G+=9{NiiWIJ&L=#Y^tqn`kcstb} zDe)KX2wrMdxglK~*7hO^Hi$d~ph=k%8K(TA(0S$gOm54plCOszi+L#fOgn8 zKz6{F&H_}7Nm7gyBb}!@JqZE`kwG21nIpaikJrzpJvq`oou(YfClOja=|Agy(jsPC zA;jp{YXi=T{Bi*$Eg8Nljta)gHgqRJFB@Zi%pHgJO}o#d|Jzo(0>T%clbv)c1n)E- z{ULKUe}g+BKJm$Ju?vadJ|6I_v6ekX`rtQ+U;T&U$em5ffz%8Nh*ZMiS^r<*&^@Ns zW7EuKaj|x>)B(eW{{tHuTjeyJdF7{~0jR56hn!~WogVBJ8(O$ls9StKX>%b>dDoj& z0?P%T{P=hL5lb8~gb*FwDRrzjFG#sXSDqeT<|B{=Q57;l->Hi~cTH`e<=-hq-WoK4l(?;6C~pql?Z0urpL2RQQC9`9`Y*BNCMp1nTV%TXD|SAb<+a|L z_U7j_8b~n*wcbc?%|m)^GTWJ zot{TlE$!RnFz%2lsouz{4)ON~11mLuX(fO?_`pm>aG0(Rpk*y=M^A(RKOd)~HG5Uh zkuDa-zUzOA{1VymS$wUADINJxx~J)0x5$Rcf!XN#i=P@Y>gvgZU|3W7$i&*kQEE=E zh*IUt@r~arYMCin(K}au8KYC34(+}JC|(`t=0PE*eEgk;kLg|H>lVO7~$95(r7CFSucNMbYB zhVm~v&IPswQv^`Pu-VF^x+j)7(zI`WL1Zh;=vLWLJJoen)d{;3mwMao>!^1rsZmY^ zo|gt>xEPi(TZdjq1ypwo-sF44j8?P++cT$vk=j&buj~YA_X%CJoi^p$v-nj;P&=YC zeNs>(oivVhx-eJ$R%Yp0Yt~9ZDy*=$7RMPJ&NN1;EG&5RCqwbTe0XVz9E);Eh$i#v za09Mkn@C-8_Kojs&?_HmoL*~MYOT2MUa6~d0_?Wuy57c=&q#5^Njj=y{n*9i83Hde zxqYIz!wse?c01!v-68GDcsaL;t52eLTmD&gst7PI$fuA1Pno9YLf2}B^+NPUFcpz$ z0lHxN(N}Sz`OZFv`4~p&6!5ej_qQ_K`3Lz*{OgcFa7}b<@l_iYmog$?E_Lb&8F%z_ zt;fp1uOl4#)OJ;mhBjjSVe9Up=3&S)2u-?Fi@At{hm$gmgPG0r{jP{MA1QUMYKVCJ zbxJt8yneqx;@9$szvDDpC;X$%^>h}{vinCo*7TAfizSvhz+)8+*g|xn0>9m(DovtY zeW!rN0S1+lvAF>j26Sd9{;l-mq*3nS)f+|f zTr+z^to81zlalIZ5@SaR&pD@8$b33>?iE4K4x>7k%YUxg6DK-{i9Yg3znzKtA~q8YBoKNIPNmf>0`_o${5ak))r@2R)&2El7{kp z3w)LusDgKs)O7sjU~o<6;|f%pt-@5E1I4Ga)6K&Waugr&2GW35 zL3HOL_kUz^Rj#0OuSU_GTcG^lS+xRQ7zG)dc%37 zpL(wCt432)MKzW<#xW;S&`dl0Oh^`7}2>5x=Spv`UiS(?tujO!&;wU_TE^r*K0nd{ymKj2Zmg5PfAdv1 zcs4My;;ADq$)=vAiecJL{kv3+07}*Df0e2f^BAzCjz4|L27{xo$Fd#guJr0^`1t5H zl}vhRKnx&q0tEp|8hr;3dX;$EtB3a~t}H2*?EJu$Hcs}X*5oUC1A6v@czePXa(=u) zgL$|Vw+@uv*mfk332MR1(gTVs->3KJ51k!W+k3RsIm)g!!Qo-k+?+gH9nDtEG~tMB zvo9Cg#23KsAaaL)$D=seP~pv$zKxIGH`s8?pFIW^kkBeG(A zl21n2_;H0+hPcm%`IO@m!pOM)j!AHFQP6LUQe&SQclOp_QDx z?IBeg`0bx=Nc;bnt#h!gMh;I5-47^k04$BvSc(4kttJ!WA;6zw1F0RE!PE!cwR~~2 zF8qETk4#VM#Fx14!s3@s0Qcp90=)xEPvh`Bnpld$Kzf}vZ|r{5oI2aQ_Tk&;#T&^I+{PLYl|>T1!h78nY%X5o6-#x zufh9t;B>N0-4L6923RiCa|e^qmqofU=sxWBS|je;n_LkGdXl=+0zH`nh#iId@&N!1 zi*v${BPupN$LR+$tq2xBORRqq@18M_WVubT0yZ=2=QOF)!pz*cgmEJ0klrjn-H{u? z5O}9yWI>QB+qFCh>5jq2Ill@`QuLPAb$NnLlRCfGR_%~q{l(nl-B35OuBXA3-+qp} zQ{K0I%cl%e#E!a^Cda`*kh?Yt#8p8ZYnn7uji? z*)_MNW2pq-8?;V$kAL0Dwxo+iRPaa2H$`;g8?mu{DsGvNdEDYYM0i7z9r{<(=q#Y0 zyUtWJ>`aJ2iC_{$9NFp#dURF5qJOpM8G5Wi6fLa5=X_En=ZXv0O@V=X4R4T-77H-5 zJb?+dzmVO;UyDCUeG^kx%uI5SJtHBIi9cMkE99?iEYpr=(*ZrD`TGKTKhvabT7Bfq zt4U+`?4N$iVm#uf#T0p~5A1)Dr2ZA)U7rXNasUWZB~5&7_G)DxSJFd%+t?#>|3!t_ z`ilxvH2?UT4)N#qsv@uqWg8gw08i)~(|)41lFn*9x6A?8W9e#GS~Nu2(Q?9eHevO% zlS7|g=Oc?3cVa(w{iP(C22!~L-n+$Y0hY}KTXYyFpU=LZGYtJGsk~A%|#G8Cp7sskZ(za1Dho+=Fn-4YP*EPTW z2M`MYf5Ml-x`!~NkpaxW4pyGF9O2(3Sw&pv>1E2Uan|~0t(be}I{$j+ zL*f8ztaA8aJe% zUiw!=H%LYK=v*mkg;xZnyH?VZza;6+Vs+PD zFkI_~kY^FMDu)oxw46cHhY+ZMQ~SaCr*@-$kFBp&cU!%^9QsXo{yck65{#|0+7gujX0Ff3-|7UApDp4~P_J8%`!v1hoMf{hBoPhd&*}gJG>F^|S zrFx8i4Opnx96I4ij8luh6SMW<@>-K}ecqfJjBcSD3K+P07D;WEcFm zm)K&;j86cbg8+n!m>Nf^j%oStPtkns_tRaoQi@ESkCd1^*q`)O^z0qi#C+eulhu3o zT)FXL6SSK6hwCsPP@MAPh;_2nK-H@eEGf=0(CQRxgX1%yJKmwbKpp3dhS+Ex4>2k# z6RFrm#?VhTjTLMMphC;Gp?5oBjdb)XK<=3Bd`@LsQKTYtuK>w=(6MGfe1Bl7>=lc% zI6kc|;Y|%+!i4g$#De^02rpvPL?Gl@=_R zQMjY==Gy5j{!wsM8ubXhdM<%2+yjWFp5s+lveZU&C2A8W9tf*!uL_lP-6+?Smb;lr z@{*2KbkQz>dv*7b@bTgzWy>YVL>`7}dX~7`6nf>^F^9W|WHUe0C za+@%&!3f-~ehN4I&lY#X=0W>|#2lFKDUGV!t-%*dC`bG(QEEeGLvY!~#)d~iwU=@a zjLir==jS4hp=j6YWbwNVfS2E*paDnIB^<#iXc_B-_kNDfO?Ccpx!jy{DBDL4%@*;S znba_#n}}kSw6&=&58#(h$F~Jr(+Ub>3Qb%UI@kR^Kv+qH_pgfU9u(i3>ab+hKaj;U zR)dEB4j;$Kx7#B6vl2jyw5Tleb{Fl+ThI1EuoFNF1X1mi49J!EcLgq-72nBltg zrTo(9;vE?Hv)jgNW zt6U;KB>x6YVthA@BLoAKppVGmNKx8!BX_ta^=_Le;o-=_Yj?+sMw7SX1+YCbXIr{o zJzxFT+OC*?ROHu|)_XL>gqV^V!b~}yT7xU0@Yk2+@1{bW6!DY2`Mz{yBFr%a3zN(N&g!O)YZft=YDbXm<|NEG{8PHQCn_H8Dudv_LiqCfX{ zl)0VqGJ(DV3zdtt!mF(mXJbY=eejqwcBsIOb8!QV565C9);1jyTKdEA=b1k%y7HLv zEly|Y@kNKvQcSM$|JD67YUZjpvU;Z=dpI#(KNPrb4s`Dp>&h^FIJ_1Vs+b`i8};jy zd<)(7?0ffoue-LbUV~%TWvdQEy*=*Y=};4)^5wbN_m9Dy|2$O~8%WBOhvZnGwB)4H z+R#qZF5TO&L^pu&mqvE=X=69j6P|0XM<7)jzUy4i@dA2V&ZooYOovtGF^yQiSmm}E zZLCa~M(^L^C9$d*k<5HRMAU4Ag87Ua8ZjaMbobUQIn0xMy}AA6a0lGQl^Vy2s|CNct|W|AP;6dsRFR`n$8^Oy=|X_NIkVL6$4+?)B?u8P>KCN? z_9nd%lZ)J$)SwGe4P>7qEj?03#B@t0Jg4qfH{phC2(A8f82l>PBZsjKnqQAow_RN>`=p%OiR}Xw--A;70cT`b6g26qGdU?Ng{vkDywBM#Y$eevv`>}84B?%nf z9(pe2Vg^eQ*^1Yt>$h*A+d@vAXW3~5sy_=<)ww%v?DORGRhOr>c@LktJv8dl%r~== z6J34#vtVc9-sDso+@|;0SYLWZGM&TX4J=ndvmjSL)(-ADz2y$*qsG zv+Gdj#B(19DQ!d!zid8iz<+D^{6ED8O!@dGrB7{+qh9NimU>~o$d(?gt!I)wsq1Xh z5_TC1EJGhMXBtzQAhYd%xMJZ5b&5pAp`SL&?jhy+g|~O$AE?+zmJSCt2Ks)rRPPN0 zos5PaV@uQBUm=d?Fq5rmgvc7gQDz#7VNeuU(0e4cN+PHPja(Y}gLFYdTJ-pTW{0<91xA?eNg-0>NKsTQ6) z_X!Lys(}jH{oFAR`=xq*nm;1o#FZt(m{!sgm|VH;UEEoR7u&<1ep_%U+kf~-NbesC zsjwcIn^Hun*EjD@PU~If@rR_SK#XDw)B?=_ph9no#`_ z9rie_QEOsA9Q^fA(zI==AZesvQ%~%)NXI}r1^*wht)Ld{>p=e`N>>30Bm%!m){nvL z$&uw3$Z>)YzPKA3kWS32AJNVUen}P@1h4tSYn{PAQ2%US>}XQLx|jaCB;;w+9JhCO zHt<|4&UJ|7Sxi9%k*7<}^p_7KQqXXUsrArTx zssYam=MU65J`d$3ld^lg9KJ!@R^>kX)S)Ird>08 zK<^{sZ2ZIo-ta4E6M@#u0r$^<=LUovCLi6Rg6HJh5=1qD1;=pB{zE}Ac6C{uZ98UY zKe-OorFZbO-ovgvf=6X1uI&@~f%+${Q)>~~-MG=DrG>z?6jP}_?caIHUfUDuPNWpJ zPBb(myktRDC!?XMjAqzU@q(iX@F98&gQS`{3iQ-$AE^x0@`!x%PrZUq0nkz<-X{y8b5b1v9&gL!jDVjBw7(=5);2x)cnKuL<9jJQSQH0 zdy+W*-7>m-2Uw`a{8*4$zdda_oAPzazeiR3nY&AEquM@PG{@QdkrZ0o;bA$pUV(HE z7$8#?eB^VHvlgEK0l<_Wwg_(ti)>>1gAOVW*D> z^4lLSkzc5jK{EF^?R0~%b-B3p@$CAI<8vNkzx`x7#tk2ADz0SJX$~X%3ANkppmApi z-6?klEMoj|DrkCO)xSyw?rpgv_V638sYLOI>IZL>kF@RGqq%V5&ei|}HoxtZP`u1% zYV(u>ySHm&HpTz+?|YM?{6S1bVkg|E0}xnAX44O{EQxsW{%8KPjVzLcNk+_Z?=ehk zqp^TSnmh;c``wRo%FUmOeZ6n__``IINf1l}kG?`(S?2mu==#bq19X%_Mv3C&3z<$t zbGrLDl`TejhI7sZSX~*R307~D<@)Rep|a>H{Etpo02*k+;kBXnFanrGfc+v!gK{)K zdxfKkOS?lnr3%l-413E41f)=1;>xzY1DXZm8Y3N!Dz_>WB{b$e9V9Eu`Is0e56BH1 zb=q#PfM${iewP`eeWQ$Xv*Ck9&6*}f~^Ien2niYX1kUiToI3?IwS9y+15d5o0D zo7kfFd|aRVv?OMl{RC(eG;;=_HGwT575kW-l+=>qAh#XO@Z~`XKIOAO+iibUGp~vC z2jB8Gt;ev%VnyF_b9Y7{)`W0oQxoigo!Es>EKN!72YyfXGP!DrEmSeH6u}W-U&qnb z+xZVOUpiz!YGTaKchuV4E)#nv|GKQ;@V#@;4@F$FMhEdwW+e-XFk{ZrfvtOZ1$udX zQP9SyZ2@L!{H8~^M^o@#fXT~bvp%D&xX*rA+W0EXsWgVZ3u>+llwJs7v{A#-Pf2C`vEw&1G zuU(Qki%W`@$@PUa={iQJI(IWxgXO7WEIWk$ZYf@wUxIyuZUv0Aad#38_uG^vl6KQC zbtzQJDn%VTZ1O+^=_X%vw#o1B_*scPzbqFVviesUKerF;0)`+W0g6+|iM}7oPmAF2 zHnOfGc$gyctzbU30j`p!lR7jWcRuuD_twL3__T|sEDe`fG(9Q9#V2?U_V#aa6gIS# z>d_i#>r%3HBUt*GjneBHv!74R8#b>x&k?A-bQt3ulaR+`bxdoIViH7us7m|{4im1? zb~fNVlz95W@{-YG35AdI`$ikdfTqqCJYm9!XPN_$Lvgm{h`;$^vccymd%Xv)F2pAZ zGpV*`j9u==TaAUU9YKuf8!F8+Q0^g58#h4ji&*-2;)*v>8vyGwSxnw{NUo07}6I^h7^nj+xK$Wo8(U>M921as=Z{^f0h1 ziiB#o3gX@S?G%!auoqdq&sJ#N$z1<($mrrI=~-}qa43mX&Ov57RkM_kQ&OU+hpK*e zhIK`mLzc9>i7F+h_LFx2x)8N*NLDDf?OS8UVH@9n9gFnnPhDm2&qt@mNoE4e-}{)k zECa;jYG&e`)bZtsinw1x`)rqsss>H=?emHGYHKBUDj`)u1o;pGoCqnP!y?MhNZQTC z3rz({b%2F2j(1zN21>Q8-;CMWX-+yb+6m941e|Gn3DvZ)=&rwt9-p34W5+Cd zAqRXgJ0wiM12cr>kGRLQnkDb?)aH*yHW#whN0x{P4KW7%17REsDALN(Ktjg@-PgJu z4eu)h%tH*h%{-FKy+{+SrbyKWna#B&GaF2#K0^!}?`7J#)@=%^%YQo_{)Kcf$ifM( ze;G#D0!UpO>HtW{d7M`pzUu=t7EFM4Qs|gXC8rBWC+~n_p`TZGG7zftj_g^Ft;_<( zB!o0=KY5;3{-7@2X!}J6t+BG>iPL5MdoH6bPt5&R%*Tcp+r$1907R{|KbCw-=Sh*5 zfT#A07dCTOUaX)}? zU?yHLn;fQLN2nnK$sFY;E&rnm(2-H+f$>rrHkVFXSq9|&Cj z+tFnRS#OdFZ0rH+=Go=zDhrGE1aH}Wxt#JY_Wu1Rj-4%1Or>?|0h;{GJ@jF~MR8)I z^UDUr-0ecwFOu>|^l|L7#JuE|4THjv$FW>0M$Hvj3PlSJ<)`Ete(c&+0`YJ+!hM)D>l3fZ&u3Ul)%xE&@vr@kwD}t1j%vN0ir0vq$Lk^oIG1-n z;m=M6^-#E@Fd*Teq@PwNHUNR-fU)vPkB_oX!i)jq4WCfF>5~iAANt>$lm>)0UE$T1 z7pW$HTh-M;Jfpi)HR$Gd>DYKpD3u@tle8g$kiAE+nG0=+0Nvnb>;nPA?%YdVU9vnD7C=-<+Qv9=JzOdv~~#K@E!JZ&=)j4 z|9SRReDfc!7|l(%@IvV`$*G3@q2qpr$R!gRYECR#mkVJ$hH(bE1tH^>tp=kvW+ADgz65Mzn=#Eb|faRHG*$EvnEViBVpBRxP*tab?P=9))I_* zO??VTj6<`?%}Du-4sC!z={k-b+p;r0@34?9w_&_XT8j;^aDvhKIvcR<=8`a{v&3>d zxjZO*2X1nwej^D~<8XV?SnA;c{T}s8cewhwcsp~l^_697Nj*0S3hlwN4bs1}@FBZY zj<3%Mb|hU=kRDJpBPHy)Gad2C$y2){`Ego+O>Oc8jfrou$7KyIf%d>L!&^Hq{~`m< zb4HwGMt^1A*rY7x%kD^br+#WM%RI^58`-vKlsajs@yKmYzP0P*tvAM+8=)eW+qqq; zjZcXNa(VTsOQy7hIjv~qK7`pI+jRyI<+XAY2HdqogI@!*46)NCkFOstE$#09Qlfn9 z`u=Dt*b7itWKhu5W=bZo+$EQiz`Uh-m3M5yws$wf({=tP^qFHVAPd<%x$r`lSs|B` zIRz+o)2!xM<>b@L3nM?+J1b;Iv(~xJPP8a;2rRq>mI#`&;*jVUD;GkmwpYKCo=rO# z3nJHqjXDH`5ycv@ACgS{|4zJdGSpYl)%WlmGHdHrvR?eT^C+0uDMhNLYy+!76O5TJ z=0K9L^upK+`y@PrV{fOz^WTOp!v_!Cd=>G#Dw;3=$HaWbfGX!2cx8 zSXSc(#b`b*y5`Z*>-&8V>CD>l|}+T0}#>O zf$+i4Hm*QD3bOgK*NV1_V^}YSYRX*>8l5*>s&S7s7!=-fhih-S4kKEweD@K@(=N0} zf80Z0$UBW4$lBSy>dtt$Td%8x?A&K-9)VO!)~hA9Ip3*CZy{RLG^i(8Oz?fmj|rZC zKC8!N)W;(-$ms+4oaPDODtLdSEHjkOyV*)-=5S2!TGpNj%^b-iT1sWPhIu$COnu&? zUQ8?2R@nE&qj)i}X$P`Ukd>~glc-ZXiiNOQJIetmDX@pn3Bc?u1VTKZ?`yMtyxq;1zV$Fc__4C@$2{m*&f$;t9!FkWJiEy3-nVTL{Rs!E-;g4 zMbUF8Nl%9E5lmG=tE3`qW#Cf~yJNo=eVN=O@7lqri@enKP{eSdiZ_d@7PO*FT_7)n zVo`3?bA@GAJRXg|8Nav3y;l~-gr{-R=B~tKKu-BC znJ1ZCmJK^DmuP{vN(}#YtSm)E19~4h3Y6UsSl2kcy0T1tVC>YH9-8nH{wSB$8EwDw z%S#fh{^AHb7`tvf{-mi~`l!12Ym48H63+a?&*@uhO1CG$U-cB0TCjq_LTXa8<<|@> zrkbqNk@3VPMsOarowhaOAC^hFf4IiKK*{j+>Pzd6 zcmnH8P*TsVR4ZE0(|RW@Qj1&OMSFH`8e0(Zu$=t{C{EZ z&BLMY|Gs~fQkEnk#1tZgvL?&4AtWjLHWjiACi^x_k$o#d5wa!gWEs1e>>*^&42Bs? zmN7HQ7|odT_c_1UbzjHt{@us#xWDIlANTh-uIsq|m_Lj8_`F~5*X#X$KA#UV_OWRS z1l6;e!qg&;h^$*`jCGZ{TZ#1Sf6Zc@cE2$|GnBmiuwksOH<_ePHnh{X(1u2`>V6I=>aP>d*gbiEMA^6(_{PZ&%fvySX~F~ z$JJ%jRDy2eqL-j5;C`qk)-@gvEUY`@?KCW)Z~g8J8+1-riYc}KP8T#(6?`ukM=)7U z@;A?%Lw&4gJozTwmUO1KCiPcx%(Z)$q=Nb#ObUaL)v1IZ|Dd)f9|| z!_~(?D8<1i2kw{|fZo1yuDRIt-6~~+1)9*7t#WX0DM?<*`8ad?aTBT~x*(fF%wqJJ zi{!VYso*39qm#=YTlDs9&61`U&qsX4alE$_C zNmmD@$;9tv+v<#ZK& z>tuP>H7QTdLb%yiij2jQ5QC5#Xq4Xd2|xP^{jJLUoJ($1sr+zlDo13cr#C8>*Lutg zrKGayI}hC6i{UeI&Oc{9^P-xx{GvK4L*w;IpFr;xyNbJMA9vD>6t4D6-tqgpU&?4p6o!G$77UEec= zYpO6kqVIDA&wc^(95f83HOHIqTU*4dXG1dDs*X>>JMLhRpfEeq$U>)2Kw-JD6p>pm zmyh{Mqy_0d{VNNYVZw9OxCr0^yyYWsN}%jv55k)=?f_u{13RDt&Bi*v(P zTkn3Y)FXhwRact2+g)Mf8F8A9Az0=Bw@)D`62C!RtFj4O`f6jEwPaAEvfNdUUULBA z*kgV&-H5UClU!QscwWLW4XNCLzYkAGD-b8PEOkz<7@p5DFq3~g zIe$$o``piy3zy{#*_N!#{)&>nk|^I}3}h&t>$kNp%^ii9{B0vg>a)D7bgpt+>wh_IT-F6IR8(@dfw^IWGT1 zrN3R(q0hRi(+Y4y?J4XnY(%V|pLp3tNfm=b5`6Od2QHSSz4uE9oGcl`r~SdE6-o+t zGWa7OK?g4*OyBm5+B#kW)U1^4?p>@*oNBJ|&8hmCJ3^Tv(G}P^+b>s(Uo~+j=^Q=M z+Owaat8!&@fGI_P*VS!Sk2Mn)1RQkn*%u?As-Twr^|%h-2WORr#KHhAPEOX4W2V8d{+axy1k~2Vj~04Ifra7^B8U z1*FF2$)HEIuNSY|ilaUZJZ$?kq2M^RK6QOkD*3bXqaWAQW`d(=x9ByCO0oHrEDsD9 zOTs;m|7RwGRDn6}c(XLb>lt#j{;^J}BuC(J5A$^U!G{}z6WcBFe;W{Yl3qqR)R%t{ zm8byj1=7%hq5^n~!0KZ-`_V1cz3TM9xzXY;B{5sd2ZRal{^u9Uz`9u>y>SkJh8rfhJ&?~PB)fu~`7Q}OP? z{rj(RWanytDiD4EdZBMG+ZZ*UNc~1{NLWMj0N4{zAjHYw)*o!q(SQv|gLw|&4gw4V zl++LqHc$U}#K=Hnp1vNEQ4g|80yTRBil7kE>3wITMl zbWn$`A~j>EoSdh?WzaO?{35irGs!&M4f0G}8cY}F>9(zOh>m5d zcWK_JT|WP#7(Br=&Z+U6Vw)^Xywn#c#ma^ku~*~m1gn3tZI1H3%sLQ%|2Bt2Bh!_k z2sfeoENCGFf@2p)QhtHB9oa8IMN*yzK_3C*NpnL`l0L5WQ8US=*D4ll0tS691%+iG zEUy^J*HdCQ=cxPyft196_rV;!*~`dynQYwc9Mf-G-cFO}Up#SJaK3Tg?eqBzW%J`c z_GBQuxf0mnb!hPf9vL8ivr7HJ;pLbD4_c#T?eQ`x??aNjHx87CYJoR?w=nu`D~kR) zrtE#rqDDd$S`r!MOc{xjr2081ME>w9y`v`iwEOT2JJPmx=j{XPOG`cwc(4rX=ng=7 zhtxF2GX1DwKqS6;4G|$^@NxEf0bQswewl8m_4vL@IoHReSMkTC*gf|&9*VUlq%Rk* zw`0JjnMDcSg(Z_L@%Gf=&m^I7z5#AUhz#k3c327Xih)dKP; zJ-=53)utcfS#P2keuHqOgRRxz-z_$2@)w2-X97(^O2e&YSw#2or&i%&`RSIUd+X@! zH$WqElrCgQcc-p&-K6&y(aBxE74w57se<{B+%j8s>aF{&2`vXK@9MKZ5;@sBg^l!U51Ws~5!M4SrH(OpNWroC-#EVUAk?NTe4*H^-RrFm^0C9u^srwkM64 z?K@>SiI4PEF1`?IHroFKI5`P5CVQP<=?OOv#r$k#q81cK131dy zVS!j9jtbNw_XzEmU7=|8Pcb?-yN1M9UgcJOiCGA_Fm@p+<=Xx0npGIA{G!t4qeWBR z;I1wf2mLt}06Nhh%Z`mam{QFVhU*ZxKKg2ZOgr0nsWOSPV&GD9|Cfz-C2q3l#@hA0 zAosvYJB)E=QOHjjoMU1(4Kurckz7C}3D7c2fyy&QDVb*SZRpYWi`UW8Iep_0d*hGp zFjd}CgzHTNO;#%9@`=}1+op2|?|^S=qlE_%WqH8!MKS4G}P5s-TOEh}hvxP8ccSF;&CXvn1P`NPmJ#&`EZBF54o zG}2bPe|xJ3{DGdpPTyu7;|%jG5IpVNkJgCzmM1}_Wi0C0*&~kAo%ATqf54xXk z$>9CD<+($+hLs1p&XRcS(HrSAux)px_ImVVOj}`N7(5-eWr%t8Q%7J&hLj6@%Uu-R zi-3p;E$x7kPr~m~z`a#h9d34B=DA!vt^LK$rRUwZ8>R5kGtRy5K{?9@eBs93h&qk# zR1T&V=A)N<|6bWFv`lo5<;NCp;XPjBVVk-Y5)({%txgXeepKU$l z%n4pKhx_Y2=w1_n^=#Ko6>5b|tZmx#B5(IbGzI55X%zf;2UC~x_=_cEj+rFsA708X zd4$n6t@2OoTzEZT4^?D64}daL^bt$B$#ZX8k?LawPS{r;!~aMvHa8XH)%7c$lxmZij|*K9r^A`w5&Uh zI*;rG#ZPlBHq4a2ru1weT-AGCR$^NBPV4_*+&!w#vm1hxF98k?e?A&p)H`+Wz<0nx6c$WqNdweF}W$4MYkOHWtL1AqKHC3mEo$JR>_>gO(@ zeMvN4Lekx`X=e3I%5jL4tJ<1=JLeng(Ms&=Gw(dpP2UrKJ(vqwasow8M$6HG37q{aU4LF+3fTq@D1%~~vVV43 zM*b-F^X7{`6~k9|!sdF{Df=aEs{ktU=2+V!;Pg_94hkT^>Sp^0;ruty6Wle`xWU3| z{@@?DrP~up4^u9MTJ^L{_mKI56BqLm7Z^h~hbgPE-ZCxYB<;AY&7XJtzJoAiXM99!&^bkoq3xv%r}o7>cxiQ*%5)8SyMd>e0WmN0 zGIWGSG#P!?BmKv&;L4N*L#JidSopNu^ufz2&L@Gyc3#cun+pacLn3hWoO7?OnF5Z7 zsR~Y9pPF=5GhVf*d}KO?`__RFrvEzX}RZr{;qo*S<-owqe) z(m%DGi!X|;eWCe!QPE1{f@!953Z~T_BQV{nb)}btGr_YnZ&G8sN3g~KP?4x$Y&%Il zQu?9CC8R7f&7BmzWgaiO^6KW>BLuqwVd5c@DekV<)xkyA-Zw064^Fgf!*m`jUSX+r zy;0EjpwVY0A5`?R0jDPC(mO$A0PW00dqr*RfhExLG^oeheaeILI&V8Sw56SXeeIDK zH9FZ`zr1SrTa#4U_5LB`an@vnE+xO$V z&}d|CN*0o7X<{_CJl5N{2_~9Ybz)H9E=HJ`-Mw)yHPFem8pl4EKcz1KguN&5QuaU= zdy=|=bh|0dtTAnz#YuvmscG{yAnaS%0KBgJU)4vEnMaD0J;2apW@2>uu+@vBZ4JZM z?=^8nji2uG*lD+-(djkS!HHch?f8UDqB*6qmuS-JB{w*naFZ{t6_frp{>F9Xt)*3@ znx>TSyp z43li+D>lP+JCMl{7wOvz7_6T@RlPZ^>_WQ_m`^az+Fi81J>5FKiUuC`bEFP(u=$ojPm3yfjH6)XzixlpA!MrP2oF_6Tm3_03Qi7u|nDo1SOEQ zEj{nTLkR!+__TQ`4D0;|X~}m-|mW+d5u( z$>KR%<>rG%j+byvI9g`kioQTFsR6ITbh0_=8wIqoq8 z@mIqqp?z>+>UIx?7kw(Y>+^5jDjJxJPM^sQ9o+oX59rKlZ;#`}}*0@XWhH2{*+PkL(=M#96>#yd=KQx@IS`tzpJJodg@>}ERe2+N&(Y5q-k?`WFh9?^H1zy~cCpgTC+~Y3s+iDisWwt7w?Lmzg`uYXV4Z5*FE6F&6^pA* zD6G0r!;z7LgSG3{!(xgyPG&0M3+3G}evzI5oK(hL6-b}0vk(F)P@Q7EzMHr!~EJwB+?n4SMm zQP+T5Hb>Iu$43P$Rm8i$=a_rhhv;l!0>TKwDAUUdo=OjN7@zymzAEG8pIyKA32$ZU;>=)_InX?&Y%u|P{;j)8 z$yf8r7EI}KGKor+Ot1z($CDvMFAt&PrnY{1JTNG4Eosa=RVRFu>sfK`?4dEtb>`pC zGP2sPAQ~`F#S*PZ$2g+<65&2RWe&mWGzH_^n8dqvbrW9Ih4;#|96C;#N=314z52f7 zJseV<_19$E_OD7kCAz!`*$x^BR$)7~Js+|S9UO8UC$%3SYrQmJ(sM0AV}>7c+H+q4 z(D)m$)OE?_pp=>x6EANh%Julyj#oFA<2j_J zyYmHEI>FmSbQLs&h!F{H?X|+fpK!VFkQ|9-*)zxbZ@K3tRBt`Kq+(2wC*qU9Phj!C zVM$C5q+>9w8*Av~74B7Ed*ps)WhLj;+B5(Ga(&6_!C#_bdd&Y?H1kd~U0T{|ZTy;L zBDl}(9`@-q$SMFJ(jw?Qzt?H&Vfo!45Ivoc%H#tXp{YkuRrCaaem8plQ`3af`L;0Y zyKx_`>}sCp*P>Nl8{P~;>P-XU=zkA;gFH_Q=IRCmqT96oHkl=Bm8fbbAIq(}c# zu~@vHrUnz~hXtdrP)c6}m^`s5yw{RU-99L6z&Y<6&-v=v<=&%&Rt#MROj2UpWCA^G zT}BSzVkrmcMOH2PY7N6YJt0WR~b<8#Na7b zrtC~9N>5*+BG`i*hd5JRA1<*DIu^`H{@isv8@m_rv!#)a+=YU$O=^0mcLgBK>zmOQCMKT4v}3W=RrgAsj^a zvR|ALv3$H~6aU01%{0`=Y*f@dOZ8oA-6kdu2=0^V0nsINGr|cxP&=wXZw|H4_>s>? zN8@1Hr(C`}K3l#<(m^Eq=egg>j)~O~D^>abRSGdY`(wGP_wEivjRwJidoz)?1hdv{Llrqu*V81&oLjf|0PQq1z zG)z-Cm|7acl=%onOHd#Q-bJkx*!QVJVpI9-X56=Ig390CKpQ@6yA1iN^yhmq-3?1} z)TE@wqk!C32YV>%(0FBi)j<~asOOV$h0X7%+M;Xm+xmSH`h%+#XE=ZTMbnPJSgvNL zj*D53XO>pWPD56riM#XW9GO?5XSHn5fD4$& zIQWzOGL}rRYcDWR^{kW-kVif`2tBB;YXHa{H8R|N^O}M8qJO^}2v1zQ8ok;xWMueDFGIo1Klkbt-W=$<|HKD;qy-NPNMX!T?_$j279jDOeE zm^Mtf{Un)?DShF`2I^HTJKy(IBZd=;)Af;$#-=Fa^g0*!&_g&s!c*}E|FI0%0k_>> zvs%@@@~b0%#jNF^(E+$nWcu=FMi#=!T?h{54fHsi4XtXqOC}k zC;Q&=EbzPzk4{@ezj>OI z6}ZARiRgf7yM`=~*?{P5ex_&@+~OP4IAn3|uBca7_qal8QXYF6=zR4mN`8AY?~Z_` ztRiqn4?fKrz)i0bBa*xrWT?PhGS)lZi;1!LJ{sUe`VIlfQiW z^JfB*PexPb_&>0w8HebHm6_$KO0T?U}^CVHNS0skHDt_aKGn3BL}hmqT3f zl4Gd;W9mzPy0*zsowjpsP-h!ki$&U$*VPNE7zhpszb$N*N`*Dv>5sf zwU5Q=LItdD5W$@hA&-0>oB>r;SMD3iD$@jXt2RY8Vz{3_RdFUb(K)W%{t{Syb9xoi zN2XtZ^eSN!Z+-KG2M~p(g}O9kLrUj(l!vE&%Z?trhz#JC)vjg(siyQv2Ko&JK!h+0 z$o%@OzSOAkV6GmB0BXp%bN3#XU5;}Dsv(^!5WWXSl$hK^>*v5;yTBg^f(YZ|3RIt=^$5AXnn2Jk}jL>w^$ zvba3Zd=qL&k&PPrbz74zTl^cRbVOQR!SR|plIy)|2!#V*PHX2gg(`=tSffBuW}1Y{ z%|gX50j@%loq5yG&i1)+1GzS23fGCmZ^zlhDwaWf5u>`wRLE!iai;o&T55f;QfJWg z)s&3V@U+7W1t51Coc-~9_3;#U&-g$N>N3 zvOlpJv|1Gg+61CE4CGV@F%BsA zXw4q9l0CfQ&&YDYZk)TZS^KoF+Rp)KPZ>^dhcU#$TSRS28I<~fpjTZ&7y@@ERy*_% z>?ZPUj=^8OZ}yR1i!6}S?)-lL8UcNp{?~v3Zd5Xfj|hs#b25b%a{a6sK{2}GeE~uM zUbded@zCxqdtK_~6Nb{OY%FSy*bxqacjT+SiFOlyjkof(pup{+gIZ%ju>$9-G{z+} zjOCaixTF17bC1HoJzbD>8e)b2O7}E-{=vt35eHN0f82mjVTy2>`m?tr-UtE)m zoR+_)in@r!el4vI1r&mu3H&EAe|PsU&TDZ5~1$) z@Hkmgn6sv(SS)rebNAtijwi;}h5Q#D9zE&J_RQy%eb#0vBM5H4ABRe0;G^f&C)(tG z7e=>5OT?^CZ3uIYz^-cF8BC9nZE{{nn%0q;1Uu92nK_nwn6x+6TDCU)o-6v$_Ikag zBE+!2dN9+>5Z0&?)X<`!;0M@|fD(X$M1no`B^Opo7Il<}>{%kmqy0)u36Quz!J2hP z=|-E3_vs|Tt@}&8wl1#N(u>MA@oN9X{k(=E z>X*sRn92xv=L%XjL&)AW1avwARi$CSB=Qo>!Zg0N+a}o}F3f?o?8=sQb~$<+IJW`U z=ZVHe>5|1k8zd=0Fc@cBL%m^J@N$h5(f|#MkNjDaaqiHkUTa0)YslD*39t(WXFy2Z zv?2_)Ll+TA0ZPa49()%y9-m4G3q##E+WT||c`C;@F!P3$Pp`6{iR^<6&49YSGT9Iq z6i#lrR$VGwoyB}i{Ikl)2Q-^5=#aaSQ3ye%FoAq<4J}bey`#ZX792>JHc4}ByR@|} zBK7^&mxE1D4=K)dG!2F0DIC4?TtH{rrO`daMd0`hK1`SF&E|~>P~rpBN1YUVemBb6 z^wYAZ0iwPmXVB2C*`Mmfn9uBF(_~!$HG31S28Yo%3V=XRrEUf9-CmY3Ry7wu%;&hj zKk0MoX`%kJrL6-~}l;W@fiFIYg$;bvF%iwKjslB(#;T-q0E z)ET4~H%x-B!}4*}tjKW5s$K_~Y{#gokd4Dr=e0Jv z)a;aYz_5reL@hulDW#cCYkL(zf)hW7_K=fRO;5UK-cI%jbJZTWmZVjdFzB>F0%Ly2`Dc>KO1tj&T56JD?5@ao~7W<8nxt+>e@C_qIf08?|ma4;Uo zwu}&4&+fyvi7n(LR#XX@GNg{tWEHKoNh{^YAbxC5H$MmVh|BL6!d-}nNVEVws2mFN zpaeyFD^}M#fHz;td@pW(xZU{YmiP5QSKR@efOY0(|zpS6LZ^V~>(PjmtFq=kcn50vtFO zQ;yge+&>IAaO_~nu<$_l@CZk`Ph5m0BirQn>rX&#G)(PgPM=pnW&cSQ_uV?HKKJ>g zN#MzWuG;$|A0dUXBqQ)QDUtZ!h7Woimupp6Hh>a z?QbGayEN4(H>U_S{mfh=T)464ds}~2_Vj6Cf_xG6zV>bS5&OO|J_g)xdaMH*gFAt|} z>(&B)=H-Y<5FZoh3xV+Iz{DatuKV}#^u^#x{yTMJDA~$KD0k1ZX*LJD2e@lht8H&) zKD;L5c25KR$XWsM1VWdQg79mHQxl21QOrXGypX;1+Hc-Y^~mA*W?FJtU@Pc(V zX76?<4kCo1d7!r>SdsN2$T`6-F7@ph*X6#i&oa3p&usMo|DfF?v@aRW#TpR5Nd4A? zNN|*(-0JJ*pYK|RINO%FqA5zJFuM4?SB-4A#!xX;I6TOC*T z_C`V4Ze}BQoBSJZ$uyk>pEku!pLbU00j_E)bp${MsuO!5C$vqBN#MW) zLu;bm0m-D3w{Kb8vwr6bEi*Uf<7_`wAT#HCGi|V)rI=eaF_0AUaD0Buv2A>{b=xk0 z91;5+Pq9a0iwNKt;E!J-t~lzC5Dm`1J_c73h;+{kwJcFfQm;~Yanks#_1o*2`Wb__ zeZL-MCvkFo4)_iarf(BQu&#u>QX=e(2L=}*J*ACoaNN%pg=r1OOPJ1e#-Hw#NX^jq zNl!DZ)@{Df(R<7|;zRO}!WJnEJ0Q0cC_DFGP+#+3Q8V

pQsxLprld0nLkpjNW(v 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 M1UiglEdT!|0G^5JB>(^b literal 0 HcmV?d00001 diff --git a/content/v3/deployment/csmoperator/install_olm_pods.jpg b/content/v3/deployment/csmoperator/install_olm_pods.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fff68a99e013d2aa2059503dcd7c716afcfb80e6 GIT binary patch literal 107093 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

7gDyo&)|9p=KtVQX{H6TJM<&*-Xc$ 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

nAH@fT`g^#3~&S-Gw&|F{y+}dY`1m^o^ z_K(aXRiB9f_I>-b`9ZI=*2ud(NWuuiGa)CeGeO#OEmL4|t2rhOL(Y=S6%& zJD`d%a-GU1(x8pftvX7Bvb{JG7YqWmj3VQnx6 zg`cnP@PrB*X}2oMrO%f>ydQK6*;e z11oKc2my8?DE#WfT3D2~+TtAH5$BVVy#mLQ>k|HPJTMr$6UOxj2Y?^tYA1EaxWD41 z6VJ5m7tJE46HPTay)sr_@nYfH=6d z>7K7#x$E7PnVRP8bME4Aj;DFMDAF7pVcu~?aV36)XC?~l_a?JJ)#6g>`z7a7;2Y5h zdxjCIkP@Zl4iu3kVfwvF(t!dsC16l%asAcN4qCotTHT-R%w(DGVET)c;2EhlM0>A| z>_I2xTjAE)NdUpwHuS{MO7`+r-)*$N9_Ayamr_>RNQs>&gRQ0(GcACzEVOvfeZc>~ z+kCA(rIw1|f-$jnveK06g+}o*pSM5dl|NKV&$0~IhfHQhkbt}-ZuK_@vS3j?EhVoA z>pm?yhg>b#swApQTTH|}Z&GNA!vrWCnu@E%TR+NNwsLk}@mgCYI1V87O1_rM$}AOT z%!q|9dH3f`C=G0wj>V@gme&4bXVeAhGU1c(Xy?;_E5piuf4 zqt`(ozxbyrdHPOsc0zW9j>|FKDSgf-2i(mZRzj8XH~sC%?PHHuPzWW9u^;#qECZFY zGB|EFR*L!nlU^(xj6a4}`A%^IEx-O#HWeu36oqpH_|Sl*rXm9AeXYoxC6V$)V)jOR z=)77~cboy2ru;;`v=As$)f-m8MmVP-tD)0M=1sVhWI<*ipf1TgQUZG-*9Yx0a((N} z`H(u)sKED^oP39dMAgNMvhCbZhm~x?s8n5mS=U$XOUf7KanRTH>$};r$)uc${$ZAR zhd7u*@F(;2(tE5*>}19`KkyGu%^Sc^!VfGDL!Yibg7UOaGgd<7%tUMgiBvnii=AmV z%HBWMig5^krmWxi-5NQT3oGA1430W>j#N-26rHj?7#qn<=k*Nj`RruI*q+DO7EIlv z)c+4=inS^)Jmq+5h|@{%@SD;b*GwOb!2Qday3t$6AvwCo0ObK_6=?v+qMH8qU5kPW zS4W!tA2ff{WL3u5b94K`se5aV??j^FmGi6>F~ZsFCoI7DRJLTcvl*Pk>w;so@>fd z!hc)$B%#ELVl|A*-jmO+A+^;)PYk-d@2CV1mIq+I4X~XC1Lor;@a6}CAof7)w7eRY z&tosIuE>eU;{jpCNV!DzV8m###}UcG;#STlIhov{N`GQ*ZUDt=Eq~&%8p28adQBSQjdWR}-8<)IEnUf;^KG}c#ZE>xyNc;s_{SCKePi2Tv4JU- zgWjgHhxCRvLa>eW-KFolJO4oj-=4(GAXA9a3Kz#5M8NnSVY$$!fm>4)L6eg;Ow2xN zTTkv_ZF#lL9JBR2srq!_Le{rLKJd`sT46;g!zSP3Bm?;N4+Du{4vhVxNX-xRTlPnu z&xbtBz5C#+XsqL>1G(O;7s#p`c+_wfdo)sS6q*KQ3>N$`^|Ae%hw*r+__%;{k{IL zG`ktopf+dlfJR~H5fExpR#SNMzsPf+`&hqhb_pe`%g0+i82EQaJm^lI%67-3#w zy=BXwUBAzP(dFRxv4ySJ_xHOIBh-gQTifpj^49mof)ZZ;Wpj)0ZtCf};wbh{qOW%O zRu^c4po@sN7V&-wBS}k*Ch)4P*b!3@rs_6T6=Ck4(l%~}qlyBB`(#|6@OTxUzi*$N zhimFJ&%-0;>$sy|f9y*(f=2E*J+d#ATYiW+OC{$|mL7NZywa5snzLMk&O1`1ID#Tp zRlW)^i2dSvcl0=~W$7o_gYK{tEJ1`Rv@ipWSZCgSAEaPnETY z;Bdz+sl$)ys!R1V5M%JrV_C1+LO~LZIH`+fJE2wv*x$Eyi- zyYHIsjcmvY6GamxXAd2lcjor9!gof-oq6o6&V=pCiSFzqZI9;&`l`Gqw^y*S%;?v( zyW;k^`2H<0U4qCy1Tv?1Y2fHOifIF(z5ovbIXZMVB9ycS_h1;XF2(yyNKa^z?&H#O zoDx+cZ4W;bb?04I?OuTA;;23g%mF?|7-$sHtyyd~_EgpIe2;C?#BJY!{rUku`ivVHgajgME64(fm@DD6fsBhG$F7kKXTNE1sG!9*x;w;SHa(Cr!l?HsCQU53P-MuH{}-wEU&+7! zsmJ~dV#J)$yY14y#tM*a)>Qw#0j3NM!&@K~3oWttTgR{bpj2pG!>jDZJeQ6fSF`xs zC~!&dc1^!o}B6vn&R6jmuUigeUs~)!1oIfb}@i)h} zV_Ou4(hg+rUNi~vf8eg`b-1zhSHZrg6I2A1wM3@0k$O=LJ6F;X(EMd*(cX&Z?13H` zeOL9A-ZElJH02y82kmR8=9OFd%u&j-8R$3YyljA#>Ke91C4Si*%u+qm$2`sOW}fP= zK&)s(P5QJvbDW%=ojN`_4C|(TR{bgyqnoV|W^#dp!zhnEN{${zu*o_^(G9!rsg|=_kjvnGVt_M=~V$pX)X*|t)d8ERNwP`7z17zp= z9EO__{E7PKN6x&kxjZN{WodnNlH+o5&0BTZW5{ywWhMDdtj{q`Y+k0t_0EApTQGiS z6Ot{G$?Yb1T$q+1{vtS1wnFER`;g7V8v?m(sPE3u$4@)#B*w-B5DEBaX4`N?qZqE7Du5mwA z9Q?H&T~KjOvoz4m%!HJfm_jNlF!6p@n_M0fd=F34lfk))2or{eS~S;FNF;VNxV`sB z5Yq(;)j0kH0Bgp96G@NwaJCE$MRJ_dP;H7alN(naGR-VO8r z^5DR!b3kQu#%}etnHEJUB!J|%9XO&(C!S47ObxviKjo1N-p?2yhT;MMfi&QrLkK*p z44ycUKCuZVX|W|t_@XXCc~+!v^<6a8KVZ^UeD7T$r(&_6axW!l-@7z076^1YBkLv2 z>7M}y+J_bhKX&Tq4=pk3Ap3ZoLjzGDa$z{pz#46&e*7E}Aj+Vsa2>pHaRQM~s$L`I@5zW?#lUmxSyVGBp ziug{9w1_={&DR4qIm$O(jR|RK!!HN@2?yNXl*dHM2psJm>3;Ha%FUSvZh=9d!j7OL2Q!suen!Zb*PUvG0m4s2!dwM&!edPCiv~ zlLg8AnlAS)HJ+p@M6J%zb|#&0;n;f;SgD|wUqq~e+#50S<>?G#!vG27QLl2d$Ob3< zu{&>O#!}$w9z1->Bej^DJ@y*TK29T;)BxxB56=BVTV-y(`QH+qgebr4eftC8BwHt+ z9)@=)0}ezE(*0RkTGF&~dIcasGv2TVLJQ)LE@Fg|%pC;%B90%)3FF;SdR5?sSM)yG z3K;ED{t(6jPgk=vb1e4{AtbH#dasOWu3!r6+pimEZUtX)qSVReBfvPGf%P@kKNf6L z8i?e5K0zF8lJuWCe+7-2j>^@&75ym06Nsew& z+x5_oW?ac18p4yYPjd>Li4}|eY3rpTP@kc_rT-TTA843ffI{cJ`!AMrJ13k; zs~IDG-bt3<7wFikM^`TYV%B)q6{nEaH&^MvW6^Vs&AmAVdW(t91rFGn1-)Q~eOyiop16bs{3{31 zx2E|(gVvLz+q6q{xzHC{!No<(;w^d9rGazWP4Cq<%M@CVUag$}JIngootJd;Gc6nr@+^ z+I+4oIm4sOh-)M#;nS<8BY&Obc6`NAnz)Gf{Nali->{XiXC)K1dP3V;a&^3{vI$m{ znb6PxY;Yg*!H-k@7}cPfLZ=ZmouXoer_)dQ8tG2N@dHfm|fBgaSuFgTKEmM$> zewvlJ1v`R90}j*>Yrw$WH-CjKNz1GmKBF`;Dt0X2Yb3B+?a8{#eTh$w#~Uc>izR67 zi^k79knQd63xd5^|HtTokHdrvcOtY#m?Bv;j!&3}JQ)L{JIs z%g|ed5l}7hFVn74BNNjgFXd=@@sR}ovy9Y`0y7J;zVvXuU)H`zI=sVJAy;^*1_iuJ z58Wlpkl?r1=nmH;6rw#ng#=RpTM~v|_IN1(E4>9b0AL`$QIWDbMinva#VDiIfe@Pc zROLG|=Z{Aa5ij1q176S~)=;Mh- zwgjLFrUAi@5Jo7+4b@WmHzp%cyT09@b`#q=3d5C7#rv&ui8Esfq?Cqbjmbnqw}_^M zuM$EYKTn1ooIM`gR)U+cZH0<}Js>|+%Wft%#DWHWzR@ec4&4w{D?4vl>~WdnVIdD^ zX1+|K7iB{*vBxB%g0<9QIS&U;j#Unp8K&vX#AMRuOnOyfia}qUXwil%e&hi|gng)h z;koRrK!e*N+Rc2Wu)n$H~*>5?uK;wTA8_3JUc8Wuc<`4s-u7gugNf4o18+2sw$Ce|=G!>PgUip7 z#u5nb$?f>IczyqQZy$taI*X;@v`buNp^@0#7-xou7FwMr=}L=SkbuW#9y80q=> z;k6f(t~g(ai`{mtxi|~X`qnl^I9n%p!5TDgf@<*+54%B|52sSVPCb&Tj-0|BL^#Vt z8y1(||7?+P=qK;MilSC=*_DjKg6eBB$J!gn+@L4^1Rwn>Fy~#2MuIh&K?_AxOA|bU zOJc!4!hzt$4>iP|DIa$-;}@2T5tc80zdd~C^O4;Ny<;%aLvy>cIeTQpCd|$$zt2hF zadJRcuJ@Tflk7R7!lv=pm7?Wgm=*ZXy@PRUK^WTXHZb3r$ph9b2(TRUFhA+geiSu+ zh4$_eFLkeZN8e`nr%drqnX-wI{MDxo5w2tN!SGe}kbmY5B=%ucp$ATYtOW2h4a4JW z)e9DD^5f9j_zZWWuu$W%=V>N+w@0TfxMCU)JEoj+jj9*4N!D<;{E8R%MKJJcy`k!L zdv#77QzD{%`S>5Dtl2)(oeI1+KI_jB#}KeIvKy+d{yIj&@LR&e)NF3|s}W2o%tK>r zxjam3N)d`-1l;C(ahxe#6*o6Wpt%&Ci#Mz`9LsXQ@Tx8Tl;P0csaNIu--qwXG9EKA zY;b=d%oiAGoRA`4K_3KmX;&DQpJ03oR8cWq{H_y(wE_ zi3Ttlb>yj_bc)C}37&qbfsQ>L=IHR%_l$}1zOb{KBAu6Q?(9%`(QA4L`*wZR@(d`|*m(+Bcjl0_vcsNVi`pSjG{d&mVy)t?XgAaD~&^z3$t+ z+fY$2qD?B83pcQ1sXbbpsK0Dnrt<3ge(*l*6vY%E&Y&VeixF<5{R>8(7P{%_d@^F= zJQP`5eB>@_{x&GPFF&*b!zYX`_7+11n^{R&uu}0b*X|LDWBGv28T4gZUVH)iB292mgv~`e`uKY}@y2rvEcAfJ;lywGTr-u5 z$$z{^F#~$QVe~Q@WEC}2=ia0vR@Q?o4d~pz)0mW3aI~x`WyeE6-|}Qa!YR%iwu)avcGPn$os+a?tNnz6q5%HLCxy{q6o6YcU4%0z($pb_b&S(svRH z37#@+TjB@XiLXvb^ez^qfOH$#^45bnNdve)4x0Z9BZ&QKMIB^Ccw@Kx24T(>R6hDR z@PeTltk?g3QMu5Vv4O3B}TJ-WE*imqK^`?C&TKix682^>G P@&7;e@19S{@1g$zKzN!u literal 0 HcmV?d00001 diff --git a/content/v3/deployment/csmoperator/install_pods.jpg b/content/v3/deployment/csmoperator/install_pods.jpg new file mode 100644 index 0000000000000000000000000000000000000000..174dd64d9badbdfcfee1754e63237b71eeba7dc2 GIT binary patch literal 116545 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

8-7d*3z&rD2sf)kZAj2pS(Cn1;?M=zcG82 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