NetApp beschreibt Trident wie folgt:
Astra Trident ist ein Open-Source- und vollständig unterstützter Storage-Orchestrator für Container und Kubernetes-Distributionen, einschließlich Red hat OpenShift. Trident kann mit dem gesamten NetApp Storage-Portfolio eingesetzt werden, einschließlich NetApp ONTAP und Element Storage-Systeme. Es unterstützt auch NFS- und iSCSI-Verbindungen. Trident beschleunigt den DevOps-Workflow, da Endbenutzer Storage über ihre NetApp Storage-Systeme bereitstellen und managen können, ohne dass ein Storage-Administrator eingreifen muss.
Zu der Dokumentation geht es hier lang: https://docs.netapp.com/de-de/netapp-solutions/containers/rh-os-n_overview_trident.html
wget https://github.com/NetApp/trident/releases/download/v22.01.0/trident-installer-22.01.0.tar.gz
Zuerst den Trident-Operator herunterladen und installieren. Ich habe mich für den HELM Weg entschieden, da dieses Tool schon installiert war:
Den Trident-Operator werde ich in einen eigenen Namespace installieren
helm install trident helm/trident-operator-22.01.0.tgz --create-namespace --namespace trident-operator
Zur Kontrolle folgende Befehle absetzen:
helm status trident helm get all trident
In meinem Fall hatte ich eine NetApp FAs8200 im Zugriff und dort sind folgende Vorarbeiten nötig:
Eigenen VServer erzeugen
fas8200::> vserver create -vserver NFS-Datastore06-K8S -subtype default -rootvolume NFS_Datastore06_K8S_root -rootvolume-security-style unix -language C.UTF-8 -snapshot-policy none -data-services data-iscsi,data-nfs,data-cifs,data-flexcache,data-nvme-tcp -foreground true -aggregate aggr_n1_sas_1TB
[Job 7843] Job succeeded:
Vserver creation completed.
"Dummerweise" hat eine LIF eine Firewall-Policy und es braucht deswegen 2 LIF´s.
Ein Data-LIF erzeugen
DataLIF
fas8200::> net int create -vserver NFS-Datastore06-K8S -lif NFS-Datastore06-K8S-lif1 -address 172.16.14.10 -netmask 255.255.255.0 -service-policy default-data-files -home-node fas8200-n1 -home-port a0a-14
(network interface create)
Ein extra MGMT-Lif erzeugen
MGMT-LIF
fas8200::> net int create -vserver NFS-Datastore06-K8S -lif NFS-Datastore06-K8S-adm -service-policy default-management -address 172.16.14.11 -netmask 255.255.255.0 -home-node fas8200-n1 -home-port a0a-14
Default Route einstellen
fas8200::> route add -vserver NFS-Datastore06-K8S -destination 0.0.0.0/0 -gateway 172.16.14.1
Einen ArbeitsUser erstellen (mit den Rechten auf die OntapAPI und SSH)
fas8200::> security login create -user-or-group-name sdeiss -application ontapi -authentication-method password -role vsadmin -is-ns-switch-group no -second-authentication-method none -vserver NFS-Datastore06-K8S
Please enter a password for user 'sdeiss':
Please enter it again:
fas8200::> security login create -user-or-group-name sdeiss -application ssh -authentication-method password -role vsadmin -is-ns-switch-group no -second-authentication-method none -vserver NFS-Datastore06-K8S
Jetzt kann per SSH auf die 172.16.14.11 eingelogged werden.
Ausserdem muss dem vServer ein Aggregat fest zugewiesen werden:
vserver modify -vserver NFS-Datastore06-K8S -aggr-list aggr_n1_sas_1TB
Zuerst erstellten wir eine Datei backend.yaml
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-ontap-nas-secret
namespace: trident-operator
type: Opaque
stringData:
username: admin
password: changeme
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-nas
namespace: trident-operator
spec:
version: 1
storageDriverName: ontap-nas
managementLIF: 172.16.14.11
dataLIF: 172.16.14.10
backendName: tbc-ontap-nas
svm: NFS-Datastore-K8S
autoExportCIDRs:
- 172.16.155.0/24
autoExportPolicy: true
credentials:
name: backend-tbc-ontap-nas-secret
Dann die Datei dem Kubernetes Cluster bekannt geben:
kubectl apply -f backend.yaml
Jetzt braucht es eine Storage Classe ( Gold,Silber,Bronze usw ).
Dazu erzeugt man eine Date mit dem Namen: storageclass.yaml
apiVersionstorage.k8s.io/v1
kindStorageClass
metadata
nameontap-nfs
annotations
storageclass.kubernetes.io/is-default-class"true"
provisionercsi.trident.netapp.io
mountOptions"rw" "nfsvers=3" "proto=tcp"
parameters
backendType"ontap-nas"
Und dem Cluster bekannt geben und bestehende StorageClassen erweitern
kubectl apply -f storageclass.yaml
Zur Überprüfung am Besten sich das Backend und die PODs ansehen:
kubectl get pods -n trident-operator
kubectl get tridentbackend -n trident-operator
kubectl get sc
