From b461cdb5985c358db8c9ace70e422da61be740b0 Mon Sep 17 00:00:00 2001 From: Suzana Fernandes Date: Thu, 4 Dec 2025 17:18:25 +0000 Subject: [PATCH] Support and Validation of NetApp Trident with Fibre Channel(FC) and Internet SCSI(iSCSI) Protocols Change-Id: I07c4034e1313cb12c9d89c835b0d5c17e7dd9af0 Signed-off-by: Suzana Fernandes --- doc/source/shared/abbrevs.txt | 3 + ...tapp-deployment-as-the-storage-backend.rst | 226 ++++++++++-------- 2 files changed, 128 insertions(+), 101 deletions(-) diff --git a/doc/source/shared/abbrevs.txt b/doc/source/shared/abbrevs.txt index 22dc718c5..a58ef8baa 100755 --- a/doc/source/shared/abbrevs.txt +++ b/doc/source/shared/abbrevs.txt @@ -81,6 +81,7 @@ .. |ECDSA| replace:: :abbr:`ECDSA (Elliptic Curve Digital Signature Algorithm)` .. |ePRTC| replace:: :abbr:`ePRTC (Enhanced Primary Reference Time Clock)` .. |FEC| replace:: :abbr:`FEC (Forward Error Correction)` +.. |FC| replace:: :abbr:`FC (Fibre Channel)` .. |FM| replace:: :abbr:`FM (Fault Manager)` .. |FPGA| replace:: :abbr:`FPGA (Field Programmable Gate Array)` .. |FQDN| replace:: :abbr:`FQDN (Fully Qualified Domain Name)` @@ -151,6 +152,7 @@ .. |OID| replace:: :abbr:`OID (Object Identifier)` .. |OIDC| replace:: :abbr:`OIDC (OpenID Connect)` .. |ONAP| replace:: :abbr:`ONAP (Open Network Automation Program)` +.. |ONTAP SAN| replace:: :abbr:`ONTAP SAN (Storage Area Network)` .. |OPA| replace:: :abbr:`OPA (Open Policy Agent)` .. |OPAs| replace:: :abbr:`OPAs (Open Policy Agents)` .. |OVS| replace:: :abbr:`OVS (Open Virtual Switch)` @@ -240,6 +242,7 @@ .. |SWACT| replace:: :abbr:`SWACT (SWitch ACTivity)` .. |SWQ| replace:: :abbr:`SWQ (Shared Work Queue)` .. |TAI| replace:: :abbr:`TAI (International Atomic Time)` +.. |TBCs| replace:: :abbr:`TBCs (Trident Block Controllers)` .. |T-BC| replace:: :abbr:`T-BC (Telecom Boundary Clock)` .. |TBF| replace:: :abbr:`TBF (Token Bucket Filter)` .. |TCP| replace:: :abbr:`TCP (Transition Control Protocol)` diff --git a/doc/source/storage/kubernetes/configure-an-external-netapp-deployment-as-the-storage-backend.rst b/doc/source/storage/kubernetes/configure-an-external-netapp-deployment-as-the-storage-backend.rst index 54c03559d..594fa957b 100644 --- a/doc/source/storage/kubernetes/configure-an-external-netapp-deployment-as-the-storage-backend.rst +++ b/doc/source/storage/kubernetes/configure-an-external-netapp-deployment-as-the-storage-backend.rst @@ -102,115 +102,133 @@ procedure. :command:`ansible-vault create $HOME/localhost.yml` or :command:`ansible-vault edit $HOME/localhost.yml` commands. - The following parameters are mandatory: + NetApp backend supports NetApp ONTAP |NAS| (|NFS|) and NetApp |ONTAP SAN| + (iSCSI and Fibre Channel) configurations. - ``ansible_become_pass`` - Provide the admin password. + The following examples show minimal configuration options for ONTAP NAS + and SAN in localhost.yaml: - ``netapp_backends`` - **name** - A name for the storage class. + .. note:: + This file is sectioned into ``netapp_k8s_storageclasses``, + ``netapp_k8s_snapshotstorageclasses``, ``netapp_backends``, and + ``tbc_secret``. You can add multiple backends and/or storage classes. - ``provisioner`` - This value must be ``netapp.io/trident``. + #. NetApp ONTAP |NAS| Configuration (|NFS|): - ``backendType`` - This value can be anything but must be the same as - StorageDriverName below. + .. code-block:: none - ``version`` - This value must be 1. + ansible_become_pass: + netapp_k8s_storageclasses: + - metadata: + name: netapp-nas + provisioner: csi.trident.netapp.io + parameters: + backendType: ontap-nas - ``storageDriverName`` - This value can be anything but must be the same as - backendType below. + netapp_k8s_snapshotstorageclasses: + - metadata: + name: netapp-snapshot + driver: csi.trident.netapp.io + deletionPolicy: Delete - ``managementLIF`` - The management IP address for the backend logical interface. + netapp_backends: + - metadata: + name: nas-backend + spec: + version: 1 + storageDriverName: ontap-nas + backendName: nas-backend + managementLIF: "" + dataLIF: "" + svm: "" + credentials: + name: backend-tbc-secret - ``dataLIF`` - The data IP address for the backend logical interface. + tbc_secret: + - metadata: + name: backend-tbc-secret + type: Opaque + stringData: + username: "" + password: "" - ``svm`` - The storage virtual machine type to use. + For more details about the options, see the documentation: + https://docs.netapp.com/us-en/trident/trident-use/ontap-nas-examples.html - ``username`` - The username for authentication against the netapp backend. + #. NetApp |ONTAP SAN| Configuration (iSCSI / |FC|): + + .. note:: + If an iSCSI backend is configured, the ``find_multipaths`` setting + in ``/etc/multipath.conf`` will be automatically changed to ``no``. + + .. code-block:: none + + ansible_become_pass: + netapp_k8s_storageclasses: + - metadata: + name: netapp-san + provisioner: csi.trident.netapp.io + parameters: + backendType: ontap-san + + netapp_k8s_snapshotstorageclasses: + - metadata: + name: netapp-snapshot + driver: csi.trident.netapp.io + deletionPolicy: Delete + + netapp_backends: + - metadata: + name: san-backend + spec: + version: 1 + storageDriverName: ontap-san + sanType: "" + backendName: san-backend + managementLIF: "" + dataLIF: "" + svm: "" + credentials: + name: backend-tbc-secret + + tbc_secret: + - metadata: + name: backend-tbc-secret + type: Opaque + stringData: + username: "" + password: "" + + If ``sanType`` is not provided, the iSCSI protocol will be used by default. + + For more details about the options, see the documentation: + https://docs.netapp.com/us-en/trident/trident-use/ontap-san-examples.html - ``password`` - The password for authentication against the netapp backend. The following parameters are optional: + ``trident_force_reinstall`` + Force a new installation if Trident is already installed. + The default is false. + ``trident_setup_dir`` - Set a staging directory for generated configuration files. The - default is /tmp/trident. + Set a staging directory for generated configuration files. + The default is /tmp/trident. + + ``trident_clean_folder`` + Clear the staging directory of the generated configuration files. + The default is true. ``trident_namespace`` Set this option to use an alternate Kubernetes namespace. - - ``trident_rest_api_port`` - Use an alternate port for the Trident REST API. The default is - 8000. + The default is 'trident'. ``trident_install_extra_params`` Add extra space-separated parameters when installing trident. - For complete listings of available parameters, see - - `https://opendev.org/starlingx/ansible-playbooks/src/commit/d05785ffd9add6553662fcab43f30bf8d9f6d2e3/playbookconfig/src/playbooks/host_vars/netapp/default.yml - `__ - - and - - `https://opendev.org/starlingx/ansible-playbooks/src/commit/d05785ffd9add6553662fcab43f30bf8d9f6d2e3/playbookconfig/src/playbooks/roles/k8s-storage-backends/netapp/vars/main.yml - `__ - - The following example shows a minimal configuration in - localhost.yaml: - - .. code-block:: none - - ansible_become_pass: - trident_clean_folder: true - netapp_k8s_storageclasses: - - metadata: - name: netapp-nas-backend - provisioner: netapp.io/trident - parameters: - backendType: "ontap-nas" - mountOptions: ["rw", "hard", "intr", "bg", "vers=4", "proto=tcp", "timeo=600", "rsize=65536", "wsize=65536"] - - netapp_k8s_snapshotstorageclasses: - - metadata: - name: csi-snapclass - driver: csi.trident.netapp.io - deletionPolicy: Delete - - netapp_backends: - - metadata: - name: backend-tbc - spec: - version: 1 - storageDriverName: "ontap-nas" - backendName: "nas-backend" - managementLIF: "10.0.0.1" - dataLIF: "10.0.0.2" - svm: "svm_nfs" - credentials: - name: backend-tbc-secret - - tbc_secret: - - metadata: - name: backend-tbc-secret - type: Opaque - stringData: - username: "admin" - password: "secret" - - This file is sectioned into ``netapp_k8s_storageclass``, - ``netapp_k8s_snapshotstorageclasses``, ``netapp_backends``, and - ``tbc_secret``. You can add multiple backends and/or storage classes. + If no option is provided, the default option defined in the file will be used: + `https://opendev.org/starlingx/ansible-playbooks/src/branch/master/playbookconfig/src/playbooks/host_vars/netapp/default.yml + `__ .. note:: To use IPv6 addressing, you must add the following to your @@ -220,10 +238,6 @@ procedure. trident_install_extra_params: "--use-ipv6" - For more information about configuration options, see - `https://netapp-trident.readthedocs.io/en/stable-v20.04/kubernetes/operations/tasks/backends/ontap.html - `__. - .. note:: By default, NetApp is configured to have ``777`` as unixPermissions. |prod| recommends changing these settings to @@ -238,12 +252,12 @@ procedure. #. Run the playbook. - The following example uses the ``-e`` option to specify a customized + The following example uses the ``-e "override_files_dir="`` option to specify a customized location for the localhost.yml file. .. code-block:: none - sudo ansible-playbook --ask-vault-pass /usr/share/ansible/stx-ansible/playbooks/install_netapp_backend.yml -e "override_files_dir=" + ansible-playbook --ask-vault-pass /usr/share/ansible/stx-ansible/playbooks/install_netapp_backend.yml -e "override_files_dir=" Upon successful launch, there will be one Trident pod running on each node, plus an extra pod for the REST API running on one of the @@ -256,18 +270,28 @@ procedure. .. code-block:: none - (keystone_admin)$ kubectl -n get pods - NAME READY STATUS RESTARTS AGE - trident-csi-c4575c987-ww49n 5/5 Running 0 0h5m - trident-csi-hv5l7 2/2 Running 0 0h5m + (keystone_admin)$ kubectl -n trident get pods + NAME READY STATUS RESTARTS AGE + trident-controller-7ffbfcfd8f-q76nz 5/5 Running 0 0h1m + trident-node-linux-dp84f 2/2 Running 0 0h1m + +#. Checking configured |TBCs|. + + To view the configured |TBCs|, run the following command: + + .. code-block:: none + + (keystone_admin)$ kubectl -n trident get tbc + + This will list the |TBCs| in the trident namespace, allowing you to check + the status and configuration of storage volume provisioning. .. rubric:: |postreq| To configure a persistent volume claim for the NetApp backend, add the -appropriate storage-class name you set up in step :ref:`2 -` -\(``netapp-nas-backend`` in this example) to the persistent volume -claim's yaml configuration file. For more information about this file, see +appropriate netapp_backends name you set up (``netapp-nas-backend`` or +``netapp-san-backend``) to the persistent volume claim's yaml configuration +file. For more information about this file, see |usertasks-doc|: :ref:`Create ReadWriteOnce Persistent Volume Claims `.