Tech ONTAP Blogs
Tech ONTAP Blogs
NetApp Trident is a storage orchestrator developed by NetApp that adheres to the CSI specification, providing persistent storage solutions for Kubernetes environments. It integrates seamlessly with NetApp storage systems and is fully compatible with Amazon EKS, a managed Kubernetes service.
Trident operates by automatically handling persistent volume claims (PVCs) within Kubernetes. When a PVC is made, Trident communicates with the relevant NetApp storage service to provision the necessary volumes. In AWS environments, Trident integrates effortlessly with Amazon EKS deployments, using the robust capabilities of NetApp ONTAP to deliver reliable persistent storage.
Add-on software gives an application more capabilities, and the same is true with Amazon EKS add-ons. The AWS Marketplace hosts numerous verified and compatible third-party add-ons that can provide operational capabilities for Amazon EKS that aren’t available out of the box.
When you install these add-ons through the AWS Marketplace, you can be sure that they’re all AWS compliant, have up-to-date security patches, and have been tested to work properly with your underlying Amazon EKS deployment.
With this new functionality, you can now download NetApp Trident directly from the AWS Marketplace through the Amazon EKS console.
This enhancement simplifies the deployment and integration of Trident within the Amazon EKS deployment wizard. Whether you use UI or CLI tools like eksctl, the Trident add-on provides the same capabilities, a consistent and seamless experience across different interfaces. As a result, Trident is now seamlessly incorporated into the Amazon EKS deployment workflow, eliminating the need for manual installation on your part.
In summary, this update significantly streamlines the process of using Amazon EKS with NetApp ONTAP, making it much more convenient and efficient for you.
Previously, users had to manually configure numerous prerequisites—like the Trident back end, storage classes, before deploying their applications. Starting with the 25.02 release, Trident now supports automatic back-end configuration after you install it, which sets up Trident related configurations automatically, providing a seamless experience. Here is a list of resources that are created as part of this process:
Currently, automatic back-end configuration on Amazon FSx for NetApp ONTAP is supported only for the NFS and iSCSI protocols.
Following are the prerequisites for automatic Trident back-end configuration for FSx for ONTAP:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-5.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-5.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-5.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml
Let’s take a high-level look at how to deploy and to auto-configure Trident through the Amazon EKS console:
{
"cloudIdentity": "'eks.amazonaws.com/role-arn: arn:aws:iam::<accountID>:role/<AWSEKS_FSxN_CSI_DriverRole>'"
"ontapConfigurator": {
"enabled": true,
"svms": [
{
"authType": "awsarn",
"fsxnID": "fs-0dfeaa884a68b1cab",
"protocols": [
"nfs",
"iscsi"
]
},
{
"authType": "awsarn",
"fsxnID": "fs-5dclba491a31c2cdc",
"protocols": [
"nfs",
]
}
]
}
}
kubectl get pod -n trident
NAME READY STATUS RESTARTS AGE
trident-controller-6fcb4d9c8d-2hrw6 6/6 Running 0 9m51s
trident-node-linux-bxmvn 2/2 Running 0 9m50s
trident-node-linux-gldkc 2/2 Running 0 9m50s
trident-node-linux-w47w6 2/2 Running 0 9m50s
trident-node-linux-wq6sm 2/2 Running 0 9m50s
trident-operat
kubectl get tconf -n trident
NAME PHASE STATUS CLOUD PROVIDER
netapp-nas-backend-configurator Done Success AWS
netapp-san-backend-configurator Done Success AWS
---------------------------------------------------------------------------------------
kubectl describe tconf netapp-nas-backend-configurator -n trident
Name: netapp-nas-backend-configurator
Namespace:
Labels: app.kubernetes.io/managed-by=Helm
Annotations: meta.helm.sh/release-name: trident
meta.helm.sh/release-namespace: trident
API Version: trident.netapp.io/v1
Kind: TridentConfigurator
Metadata:
Creation Timestamp: 2025-03-13T12:44:53Z
Generation: 1
Resource Version: 1008274
UID: 18d9311f-931c-4f37-b4ee-5adb5d163039
Spec:
Storage Driver Name: ontap-nas
Svms:
- Auth Type: awsarn
Fsxn Id: fs-0dfeaa884a68b1cab
Protocols:
- nfs
- iscsi
Svm Name: trident-fs-0dfeaa884a68b1cab
- Auth Type: awsarn
Fsxn Id: fs-5dclba491a31c2cdc
Protocols:
- nfs
Svm Name: trident-fs-5dclba491a31c2cdc
Status:
Backend Names:
- trident-fs-04f8f55e27350a9c1-nfs
- trident-fs-04f8f55e27350a9c2-nfs
Cloud Provider: AWS
Deletion Policy:
Last Operation Status: Success
Message: Completed Trident backend configuration
Phase: Done
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Processing 119s trident-operator.netapp.io Provided backend configuration is correct
Normal Processing 118s (x2 over 2m1s) trident-operator.netapp.io Validating backend configuration
Normal Processing 118s trident-operator.netapp.io Creating backend with the provided configuration
Normal Processing 118s trident-operator.netapp.io Backend creation successful
Normal Processing 118s trident-operator.netapp.io Creating storage classes for the backend
Normal Processing 118s trident-operator.netapp.io Storage class creation successful
Normal Success 118s trident-operator.netapp.io Completed Trident backend configuration
kubectl get tbc -n trident
NAME BACKEND NAME BACKEND UUID PHASE STATUS
trident-fs-0dfeaa884a68b1cab-iscsi trident-fs-0dfeaa884a68b1cab-iscsi 86018ab1-5dfe-4292-9efb-7a143fa43fa1 Bound Success
trident-fs-0dfeaa884a68b1cab-nfs trident-fs-0dfeaa884a68b1cab-nfs 18c35c18-29c4-40fc-84b3-dd0c05bee7bb Bound Success
trident-fs-5dclba491a31c2cdc-iscsi trident-fs-5dclba491a31c2cdc-iscsi 13f2c4e5-9b8d-4f1e-bc3a-7a9f6d8e7c2b Bound Success
trident-fs-5dclba491a31c2cdc-nfs trident-fs-5dclba491a31c2cdc-nfs 91e2d3c4-5b6a-7d8e-9f0a-1b2c3d4e5f6a Bound Success
------------------------------------------------------------------------------------------------------------------------------------------------------
kubectl describe tbc trident-fs-0dfeaa884a68b1cab-iscsi -n trident
Name: trident-fs-0dfeaa884a68b1cab-iscsi
Namespace: trident
Labels: <none>
Annotations: <none>
API Version: trident.netapp.io/v1
Kind: TridentBackendConfig
Metadata:
Creation Timestamp: 2024-11-14T12:46:01Z
Finalizers:
trident.netapp.io
Generation: 1
Resource Version: 1008310
UID: 44f2e0c0-e842-41f5-a8e3-b94b485107eb
Spec:
Aws:
Fsx File System ID: fs-0dfeaa884a68b1cab
Credentials:
Name: arn:aws:secretsmanager:us-west-2:186785786363:secret:trident-fs-0dfeaa884a68b1cab-iNA9nP
Type: awsarn
Management LIF: 10.0.255.230
Storage Driver Name: ontap-san
Svm: trident-fs-0dfeaa884a68b1cab
Version: 1
Status:
Backend Info:
Backend Name: trident-fs-0dfeaa884a68b1cab-iscsi
Backend UUID: 86018ab1-5dfe-4292-9efb-7a143fa43fa1
Deletion Policy: delete
Last Operation Status: Success
Message: Backend 'trident-fs-0dfeaa884a68b1cab-iscsi' created
Phase: Bound
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Success 33s trident-crd-controller Backend 'trident-fs-0dfeaa884a68b1cab-iscsi' created
kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
gp2 kubernetes.io/aws-ebs Delete WaitForFirstConsumer false 3d17h
trident-fs-0dfeaa884a68b1cab-iscsi csi.trident.netapp.io Delete Immediate true 3m40s
trident-fs-0dfeaa884a68b1cab-nfs csi.trident.netapp.io Delete Immediate true 3m44s
trident-fs-5dclba491a31c2cdc-iscsi csi.trident.netapp.io Delete Immediate true 2m10s
trident-fs-5dclba491a31c2cdc-nfs csi.trident.netapp.io Delete Immediate true 2m14s
-------------------------------------------------------------------------------------------------------------------------------------------
kubectl describe sc trident-fs-0dfeaa884a68b1cab-iscsi
Name: trident-fs-0dfeaa884a68b1cab-iscsi
IsDefaultClass: No
Annotations: <none>
Provisioner: csi.trident.netapp.io
Parameters: backendType=ontap-san
AllowVolumeExpansion: True
MountOptions: <none>
ReclaimPolicy: Delete
VolumeBindingMode: Immediate
Events: <none>
root@scspa3026497001:~/trident# kubectl describe sc trident-fs-0dfeaa884a68b1cab-iscsi
Name: trident-fs-0dfeaa884a68b1cab-iscsi
IsDefaultClass: No
Annotations: <none>
Provisioner: csi.trident.netapp.io
Parameters: backendType=ontap-san
AllowVolumeExpansion: True
MountOptions: <none>
ReclaimPolicy: Delete
VolumeBindingMode: Immediate
Events: <none>
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-new-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: trident-fs-0dfeaa884a68b1cab-iscsi
Auto-configuration offers significant benefits by eliminating the need for manual configuration, enabling you to deploy and to configure Trident seamlessly. This streamlined process enhances the user experience to the level of built-in cloud CSI drivers like Amazon EBS and Amazon EFS, making it easier and faster for you to set up and to manage storage solutions. Another important highlight is the simplicity of the process, which means that Amazon EKS users no longer need to be experts in storage or in FSx for ONTAP. Developers, for example, can use the add-on to effortlessly configure storage back ends for their stateful applications. For more details about this offering, review the official documentation.
Ready to get started? Head over to the Amazon EKS add-on section of the AWS Marketplace to install and to automatically configure the NetApp Trident add-on.
Happy provisioning!