Available with limitations in CSE Lite (1.73), CSE Pro (1.73)

Available without limitations in:  EE

The module lifecycle stageGeneral Availability
The module has requirements for installation

The module installs and configures the CSI driver for Huawei SAN. The module allows you to create a StorageClass in Kubernetes by creating Kubernetes custom resources HuaweiStorageClass.

The user is not allowed to create a StorageClass for the csi.huawei.com CSI driver.

Currently, supports DSS Huawei Dorado storage devices. For other Huawei SAN support please contact tech support.

Volume snapshots require a module that provides the snapshot.storage.k8s.io CRDs, for example snapshot-controller. Without it, the rest of the module keeps working and no VolumeSnapshotClass is created.

Supported access modes for the module: RWO, RWX — only in DVP.

System requirements and recommendations

Requirements

  • Presence of a deployed and configured Huawei SAN.
  • Unique iqn in /etc/iscsi/initiatorname.iscsi on each of Kubernetes Nodes

Quickstart guide

Note that all commands must be run on a machine that has administrator access to the Kubernetes API.

Enabling module

  • Enable the csi-huawei module. This will result in the following actions across all cluster nodes:

    • registration of the CSI driver;
    • launch of service pods for the csi-huawei components.
    d8 k apply -f - <<EOF
    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: csi-huawei
    spec:
      enabled: true
      version: 1
    EOF
  • Wait for the module to become Ready.

    d8 k get module csi-huawei -w

Creating a StorageClass

To create a StorageClass, you need to use the HuaweiStorageClass and HuaweiStorageConnection resource.

  • Here is an example command to create such a resource:

    d8 k apply -f -<<EOF
    apiVersion: storage.deckhouse.io/v1alpha1
    kind: HuaweiStorageConnection
    metadata:
      name: huaweistorageconn
    spec:
      storageType: OceanStorSAN
      pools:
        - test
      urls: 
        - https://192.168.128.101:8088 
      login: "admin"
      password: "<your-password>"
      protocol: ISCSI
      portals:
        - 10.240.0.101
        - 10.250.0.101 
      maxClientThreads: 30
    
    EOF
    d8 k apply -f -<<EOF
    apiVersion: storage.deckhouse.io/v1alpha1
    kind: HuaweiStorageClass
    metadata:
      name: huaweisc
    spec:
      fsType: ext4
      pool: test
      reclaimPolicy: Delete
      storageConnectionName: huaweistorageconn
    EOF
  • Check objects creation (Phase must be Created):

    d8 k get huaweistorageconnections.storage.deckhouse.io <huaweistorageconnection name>
    d8 k get huaweistorageclasses.storage.deckhouse.io <huaweistorageclass name>

Connecting over Fibre Channel

A Fibre Channel connection uses the same HuaweiStorageConnection resource as iSCSI. The only differences are protocol: FC and the absence of portals: that field holds the data-plane IP addresses of the storage system and is used by IP transports only. The urls field still points to the management interface, because the driver talks to the storage system over the REST API, and Fibre Channel carries the data path only.

  • Here is an example command to create such a resource:

    d8 k apply -f -<<EOF
    apiVersion: storage.deckhouse.io/v1alpha1
    kind: HuaweiStorageConnection
    metadata:
      name: huawei-fc
    spec:
      storageType: OceanStorSAN
      pools:
        - prod
      urls:
        - https://192.168.128.101:8088
      login: "admin"
      password: "<your-password>"
      protocol: FC
      maxClientThreads: 30
    EOF
    d8 k apply -f -<<EOF
    apiVersion: storage.deckhouse.io/v1alpha1
    kind: HuaweiStorageClass
    metadata:
      name: huawei-fc-sc
    spec:
      fsType: ext4
      pool: prod
      reclaimPolicy: Delete
      storageConnectionName: huawei-fc
    EOF

Keep the following in mind:

  • The storageType, protocol and maxClientThreads fields are immutable. To switch an existing connection from ISCSI to FC, recreate the HuaweiStorageConnection resource and the HuaweiStorageClass resources referencing it.
  • The supported protocols are ISCSI, FC, ROCE, FC-NVME, DPC and SCSI. For NVMe over Fibre Channel, use FC-NVME instead of FC.
  • Zoning on the fabric and a host (or host group) holding the WWPNs of the node HBAs must be configured on the storage system beforehand. The driver looks the hosts up by their WWPNs, but it does not create zones.
  • The nodes need the multipath-tools (device-mapper-multipath) and sg3_utils packages. They are installed by the NodeGroupConfiguration resources of the module, the same ones that are used for iSCSI.
  • The topology.kubernetes.io/protocol.fc label is set by the module controller on the nodes matching the module node selector, so no manual labeling is required.

Checking module health

You can verify the functionality of the module using the corresponding FAQ section.