Support and Validation of NetApp Trident with Fibre Channel(FC) and

Internet SCSI(iSCSI) Protocols

Change-Id: I07c4034e1313cb12c9d89c835b0d5c17e7dd9af0
Signed-off-by: Suzana Fernandes <Suzana.Fernandes@windriver.com>
This commit is contained in:
Suzana Fernandes
2025-12-04 17:18:25 +00:00
committed by Juanita-Balaraj
parent b0bd45904b
commit b461cdb598
2 changed files with 128 additions and 101 deletions

View File

@@ -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)`

View File

@@ -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: <sysadmin password>
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: "<management IP>"
dataLIF: "<data IP>"
svm: "<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: "<netapp/svm user>"
password: "<netapp/svm 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: <sysadmin password>
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: "<iscsi or fcp>"
backendName: san-backend
managementLIF: "<management IP>"
dataLIF: "<data IP>"
svm: "<svm>"
credentials:
name: backend-tbc-secret
tbc_secret:
- metadata:
name: backend-tbc-secret
type: Opaque
stringData:
username: "<netapp/svm user>"
password: "<netapp/svm 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
<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
<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: <sysadmin_password>
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
<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
<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=<directory>"`` 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=</home/sysadmin/mynetappconfig>"
ansible-playbook --ask-vault-pass /usr/share/ansible/stx-ansible/playbooks/install_netapp_backend.yml -e "override_files_dir=</home/sysadmin/trident>"
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 <tridentNamespace> 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
<configure-an-external-netapp-deployment-as-the-storage-backend>`
\(``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
<kubernetes-user-tutorials-create-readwriteonce-persistent-volume-claims>`.