The module lifecycle stageGeneral Availability

Available with limitations in:  CSE Pro (1.67)

Available without limitations in:  EE

The csi-netapp module implements Container Storage Interface (CSI) for managing volumes using NetApp storage systems. The module enables creation of StorageClass in Kubernetes through management of Kubernetes Custom Resources NetappStorageClass.

Creating StorageClass for csi.netapp.com CSI driver by users is prohibited. Currently, the module supports storage systems compatible with NetApp Trident CSI. For support of other NetApp storage systems, please contact Deckhouse technical support.

This page provides instructions for connecting NetApp to Deckhouse Kubernetes Platform (DKP), configuring the connection, and creating StorageClass.

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

System Requirements

Before configuring work with the NetApp storage system, make sure that the following requirements are met:

  • Availability of deployed and configured NetApp storage system.
  • Unique IQNs in /etc/iscsi/initiatorname.iscsi on each Kubernetes node.

Configuring cluster integration with the NetApp storage system

To start working with the NetApp storage system, follow the step-by-step instructions below. Run all commands on a machine with administrative access to the Kubernetes API.

To work with snapshots, the snapshot-controller module must be connected.

  1. Execute the command to activate the csi-netapp module.

    d8 s module enable csi-netapp
    

    After activation, the following will be deployed on all cluster nodes:

    • CSI driver will be registered.
    • Service pods of csi-netapp components will be deployed.
  2. Wait for the module to transition to the Ready state:

    d8 k get module csi-netapp -w
    
  3. Ensure that all pods in the d8-csi-netapp namespace are in the Running or Completed state and deployed on all cluster nodes:

    d8 k -n d8-csi-netapp get pod -owide -w
    
  4. Create a NetappStorageConnection resource:

    d8 k apply -f -<<EOF
    apiVersion: storage.deckhouse.io/v1alpha1
    kind: NetappStorageConnection
    metadata:
      name: netapp
    spec:
      controlPlane:
        address: "172.17.1.55"
        username: "admin"
        password: "password"
        svm: "svm1"
    EOF
    
  5. Verify object creation with the following command (Phase should be Created):

    d8 k get netappstorageconnections.storage.deckhouse.io <netappstorageconnection name>
    
  6. Create a NetappStorageClass resource:

    d8 k apply -f -<<EOF
    apiVersion: storage.deckhouse.io/v1alpha1
    kind: NetappStorageClass
    metadata:
      name: netapp
    spec:
      pool: "test-cpg"
      accessProtocol: "iscsi" # fc or iscsi (default iscsi), immutable parameter.
      fsType: "xfs" # xfs, ext3, ext4 (default ext4), configurable parameter.
      storageConnectionName: "netapp" # Immutable parameter.
      reclaimPolicy: Delete # Delete or Retain.
      cpg: "test-cpg"
    EOF
    
  7. Verify object creation with the following command (Phase should be Created):

    d8 k get netappstorageclasses.storage.deckhouse.io <netappstorageclass name>
    

The NetApp storage system is now ready for use. You can use the created StorageClass to create PersistentVolumeClaims in your applications.