StarlingX/Containers/Applications/app-dell-storage
< StarlingX | Containers | Applications
Contents
Application: app-dell-storage
Source
Tarball Package
- Get the .tgz file located at:
/usr/local/share/applications/helm/dell-storage-XX.XX-XX.tgz
- From Debian Build environment:
build-pkgs -c -p csi-powerstore-helm,csi-powerscale-helm,csi-unity-helm,csm-replication-helm,csm-observability-helm,python3-k8sapp-dell-storage,stx-dell-storage-helm
Common Commands
- Get list of enabled/disabled dell-storage application charts
~(keystone_admin)$ system helm-override-list dell-storage --long
- Check csm/csi overrides
~(keystone_admin)$ system helm-override-show dell-storage <chart_name> dell-storage
- Enable/Disable chart:
~(keystone_admin)$ system helm-chart-attribute-modify --enabled <true/false> dell-storage <chart_name> dell-storage
- Apply overrides
~(keystone_admin)$ system helm-override-update dell-storage <chart_name> dell-storage --values=<override_file>
- Get dell-storage pods list
~(keystone_admin)$ kubectl get pods -n dell-storage
- Apply/Abort/Remove dell-storage application
~(keystone_admin)$ system application-<apply/abort/remove> dell-storage
Testing
Requirements
The following tests assume that you first done the following checks:
- Verify dell-storage is successfully uploaded
~(keystone_admin)$ system application-list +--------------------------+-----------+-------------------------------+------------------+----------+-----------+ | application | version | manifest name | manifest file | status | progress | +--------------------------+-----------+-------------------------------+------------------+----------+-----------+ | dell-storage | 1.0-36 | dell-storage-fluxcd-manifests | fluxcd-manifests | uploaded | completed | +--------------------------+-----------+-------------------------------+------------------+----------+-----------+
- Check enabled charts
~(keystone_admin)$ system helm-override-list dell-storage --long +--------------------------+----------------------+---------------+ | chart name | overrides namespaces | chart enabled | +--------------------------+----------------------+---------------+ | csi-powerflex | ['dell-storage'] | [False] | | csi-powermax | ['dell-storage'] | [False] | | csi-powerscale | ['dell-storage'] | [False] | | csi-powerstore | ['dell-storage'] | [True] | | csi-unity | ['dell-storage'] | [False] | | csm-observability | ['dell-storage'] | [False] | | csm-replication | ['dell-storage'] | [False] | +--------------------------+----------------------+---------------+
- Enable the charts that will be tested and disable any other chart
~(keystone_admin) system helm-chart-attribute-modify --enabled true dell-storage <testing_chart> dell-storage ~(keystone_admin) system helm-chart-attribute-modify --enabled false dell-storage <any_other_chart> all-storage
- Changes on user overrides will only be effective after the application apply. So if the dell-storage application is already applied you need to remove and re-apply the application.
# Remove dell-storage application ~(keystone_admin)$ system application-remove dell-storage # Apply user override ~(keystone_admin)$ system helm-override-update dell-storage <chart> dell-storage --values=<user_override_file> # Apply dell-storage application ~(keystone_admin)$ system application-apply dell-storage
csi-powerstore
- Create user override
~(keystone_admin)$ cat << EOF > ~/powerstoreOverrides.yaml
storageClasses:
- name: csi-powerstore-nfs
arrayID: <ARRAY_ID>
fstype: ext4
nasName: NAS1
secret:
arrays:
- globalID: <GLOBAL_ID>
username: <USERNAME>
password: <PASSWORD>
endpoint: https://<POWERSTORE_ADDRESS>/api/rest
isDefault: true
blockProtocol: None
nasName: NAS1
EOF
- Apply user override
~(keystone_admin)$ system helm-override-update dell-storage csi-powerstore dell-storage --values=~/powerstoreOverrides.yaml
- Check if install is successful
~(keystone_admin)$ kubectl get pods -n dell-storage NAME READY STATUS RESTARTS AGE csi-powerstore-controller-6646dc49f6-6dpxm 6/6 Pending 0 6h csi-powerstore-controller-6646dc49f6-pshjn 6/6 Running 0 6h csi-powerstore-node-7g7ff 2/2 Running 0 6h csi-powerstore-node-8qchp 2/2 Running 0 6h csi-powerstore-node-p7z4t 2/2 Running 0 6h csi-powerstore-node-vtg4l 2/2 Running 0 6h
- Test configuration by creating StatefulSet
~(keystone_admin)$ cat << EOF > ~/powerstoreTest.yaml
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvol0
namespace: dell-storage
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: 8Gi
storageClassName: csi-powerstore-nfs
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: powerstoretest
namespace: dell-storage
---
kind: StatefulSet
apiVersion: apps/v1
metadata:
name: powerstoretest
namespace: dell-storage
spec:
serviceName: powerstoretest
selector:
matchLabels:
app: powerstoretest
template:
metadata:
labels:
app: powerstoretest
spec:
serviceAccount: powerstoretest
hostNetwork: true
containers:
- name: test
image: quay.io/centos/centos:latest
command: [ "/bin/sleep", "3600" ]
volumeMounts:
- mountPath: "/data0"
name: pvol0
volumes:
- name: pvol0
persistentVolumeClaim:
claimName: pvol0
EOF
- Apply it and check if the PVC is bound
~(keystone_admin)$ kubectl apply -f ~/powerstoreTest.yaml ~(keystone_admin)$ kubectl get pvc -n dell-storage
csi-unity
- Enable chart:
~(keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csi-unity dell-storage
- Create override to configure the storage connection:
~(keystone_admin)$ cat << EOF > ~/unityOverrides.yaml
csm:
resiliency: false
app.starlingx.io/component: platform
storageClasses:
- name: <NAME>
arrayId: <ARRAY_ID>
nasServer: nas_2
provisioner: csi-unity.dellemc.com
fstype: nfs
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: Immediate
mountOptions: ["hard"]
hostIoSize: 8192
tieringPolicy: 0
isDataReductionEnabled: "false"
thinProvisioned: "true"
storagePool: pool_2
protocol: NFS
allowedTopologies:
- matchLabelExpressions:
- key: "csi-unity.dellemc.com/<ARRAY_ID>"
values:
- "true"
secret:
arrays:
- arrayId: <ARRAY_ID>
username: <USER>
password: <PASSWORD>
endpoint: https://<UNITY_ADDRESS>
isDefault: true
skipCertificateValidation: true
EOF
- Apply override
~(keystone_admin)$ system helm-override-update dell-storage csi-unity dell-storage --values=~/unityOverrides.yaml
- Apply chart:
~(keystone_admin)$ system application-apply dell-storage
csi-powerflex
- Enable chart:
~(keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csi-powerflex dell-storage
- Create override to configure the storage connection:
~(keystone_admin)$ cat << EOF > ~/powerflexOverrides.yaml
app.starlingx.io/component: platform
storageClasses:
- name: csi-powerflex-nfs
arrayId: <ARRAY_ID>
nasServer: nas_2
provisioner: csi-vxflexos.dellemc.com
fstype: nfs
path: /target
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: Immediate
mountOptions: ["hard"]
hostIoSize: 8192
tieringPolicy: 0
isDataReductionEnabled: "false"
thinProvisioned: "true"
storagePool: pool_2
protocol: NFS
secret:
arrays:
- arrayId: <ARRAYID>
username: <USERNAME>
password: <PASSWORD>
systemID: <SYSTEM_ID>
allSystemNames: "pflex-1"
endpoint: https://<POWERFLEX_ADDRESS>/api/rest
isDefault: true
skipCertificateValidation: true
nasName: nas_2
EOF
- Apply override
~(keystone_admin)$ system helm-override-update dell-storage csi-powerflex dell-storage --values=~/powerflexOverrides.yaml
- Apply chart:
~(keystone_admin)$ system application-apply dell-storage
csi-powermax
- Enable chart:
~(keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csi-powermax dell-storage
- Create override to configure the storage connection:
~(keystone_admin)$ cat << EOF > ~/powermaxOverrides.yaml
secret:
username: <USERNAME>
password: <PASSWORD>
authorization:
configs:
- username: <USERNAME>
password: <PASSWORD>
intendedEndpoint: endpoint1
systemID: <SYSTEM_ID>
isDefault: true
global:
managementServers:
- endpoint: https://primary-1.unisphe.re:8443
credentialsSecret: primary-1-secret
username: <USERNAME>
password: <PASSWORD>
skipCertificateValidation: true
storageClasses:
- name: <NAME>
SRP: <SRP
SYMID: <SYMID>
ApplicationPrefix: <APP_PREFIX>
HostLimitName: "1000"
DynamicDistribution: "Optimized
- Apply override
~(keystone_admin)$ system helm-override-update dell-storage csi-powermax dell-storage --values=~/powermaxOverrides.yaml
- Apply chart:
~(keystone_admin)$ system application-apply dell-storage
csi-powerscale
- Enable chart:
~(keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csi-powerscale dell-storage
- Create override to configure the storage connection:
~(keystone_admin)$ cat << EOF > ~/powerscaleOverrides.yaml
isiPath: "/my/isi/path"
controller:
replication:
replicationPrefix: "myCustomReplicationPrefix"
secret:
arrays:
- clusterName: Cluster1
username: <USERNAME>
password: <PASSWORD>
endpoint: https://<cluster1_address>
endpointPort: 8888
isDefault: true
skipCertificateValidation: false
isiPath: "/my/isi/path"
isiVolumePathPermissions: "0755"
ignoreUnresolvableHosts: true
replicationCertificateID: "dd9c736cc17e6dd5f7d85fe13528cfc20f3b4b0af4f26595d22328c8d1f461af"
authorizationEndpoint: "https://localhost:9999"
- clusterName: "Cluster2"
username: <USERNAME>
password: <PASSWORD>
endpoint: https://<cluster2_address>
isiPath: "/my/isi/path2"
storageClasses:
- name: "storageClassDefault"
proxyAuthzTokens:
access: "YWJjZGVmCg=="
refresh: "YWJjZGVmCg=="
- Apply override
~(keystone_admin)$ system helm-override-update dell-storage csi-powerscale dell-storage --values=~/powerscaleOverrides.yaml
- Apply chart:
~(keystone_admin)$ system application-apply dell-storage
CSMs
CSM Observability
- Enable the csm-observability chart:
~(keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csm-observability dell-storage
- Create and apply user overrides enabling the metrics that you need:
~(keystone_admin)$ cat << EOF > ~/observabilityOverrides.yaml
karaviMetricsPowerstore:
enabled: true
karaviMetricsPowerflex:
enabled: false
karaviMetricsPowerscale:
enabled: false
karaviMetricsPowermax:
enabled: false
EOF
- Apply the overrides:
~(keystone_admin)$ system helm-override-update dell-storage csm-observability dell-storage --values=~/observabilityOverrides.yml
- Apply the application
~(keystone_admin)$ system application-apply dell-storage
- You can check that the metrics are being generated by accessing the otel-collector pod API:
curl -k https://$(kubectl get -n dell-storage pods -o wide | grep otel-collector | awk '{print $6}'):8443/metrics
CSM Resiliency
To enable csm-resiliency, you need to enable it by adding csm.resiliency: true parameter on the user overrides and apply it. Using the Powerstore as example:
~(keystone_admin)$ cat << EOF > ~/powerstoreOverrides.yaml
csm:
resiliency: true
storageClasses:
- name: csi-powerstore-iscsi
arrayID: <ARRAY_ID>
fstype: ext4
secret:
arrays:
- globalID: <GLOBAL_ID>
username: <powerstore_user>
password: <powerstore_password>
endpoint: https://<powerstore_address>/api/rest
isDefault: true
blockProtocol: "ISCSI"
EOF
- Apply the user overrides
~(keystone_admin)$ system helm-override-update dell-storage csi-powerstore dell-storage --values=~/powerstoreOverrides.yaml
- Apply the application
~(keystone_admin)$ system application-apply dell-storage
CSM Replication
- Ensure that the csm-replication chart is enabled
~(keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csm-replication dell-storage
- Enable it by adding ``csm.replication: true`` on user overrides and apply it. Using the Powerstore as example
~(keystone_admin)$ cat << EOF > ~/powerstoreOverrides.yaml
csm:
replication: true
app.starlingx.io/component: platform
storageClasses:
- name: csi-powerstore-iscsi
arrayID: <ARRAY_ID>
fstype: ext4
replication:
remoteStorageClassName: remote_storageclass
remoteClusterID: remote_clusterid
remoteSystem: remote_system
rpo: "Five_Minutes"
ignoreNamespaces: false
volumeGroupPrefix: <VOLUME_GROUP_PREFIX>
secret:
arrays:
- globalID: <GLOBAL_ID>
username: <USERNAME>
password: <PASSWORD>
endpoint: https://<powerstore_address>/api/rest
isDefault: true
blockProtocol: "ISCSI"
EOF
- Apply the user overrides
~(keystone_admin)$ system helm-override-update dell-storage csi-powerstore dell-storage --values=~/powerstoreOverrides.yaml
- Apply the application
~(keystone_admin)$ system application-apply dell-storage