Installare Trident su un cluster OpenShift e creare oggetti di storage
Installa Trident con il Red Hat Certified Trident Operator e crea oggetti di storage per ONTAP e Amazon FSx for NetApp ONTAP per abilitare il provisioning dinamico dei volumi per container e VM. Prepara i nodi worker per l'accesso a blocchi quando richiesto.
-
Completa le procedure in questa pagina prima di installare OpenShift Virtualization. OpenShift Virtualization richiede un StorageClass predefinito basato su Trident e un VolumeSnapshotClass per creare immagini golden per i template delle VM.
-
Se hai già installato OpenShift Virtualization prima di configurare Trident, elimina tutte le golden images create con una classe di storage diversa. Dopo aver impostato Trident come predefinito, OpenShift Virtualization ricrea le golden images utilizzando lo storage Trident.
oc delete dv,VolumeSnapshot -n openshift-virtualization-os-images --selector=cdi.kubevirt.io/dataImportCron
Passaggio 1: installa Trident
L'operatore Trident certificato da Red Hat è supportato da NetApp per OpenShift on-premises, nei cloud pubblici e nei servizi gestiti come ROSA. A partire da Trident 25.02, l'operatore può anche preparare i nodi worker per iSCSI quando si utilizza Amazon FSx for NetApp ONTAP e si prevede di eseguire carichi di lavoro VM di OpenShift Virtualization.
Per altre opzioni di installazione, vedere "la documentazione di Trident".
-
In OperatorHub, seleziona Certified NetApp Trident.
Mostra esempio

-
Nella pagina Install, mantieni la versione più recente e seleziona Install.
Mostra esempio

-
Dopo l'installazione dell'operatore, selezionare View operator e creare un'istanza di Trident Orchestrator.
Se vuoi preparare i nodi worker per iSCSI, passa alla visualizzazione YAML e aggiungi
iscsianodePrep.Mostra esempio

-
Verificare che tutti i pod di Trident siano in esecuzione nel cluster.
Mostra esempio

-
Se hai abilitato la preparazione del nodo iSCSI, accedi ai nodi worker e verifica che
iscsidemultipathdsiano attivi e chemultipath.confabbia delle voci.Mostra esempio

Mostra esempio

Mostra esempio

Il seguente video mostra una dimostrazione dell'installazione di Trident utilizzando il Red Hat Certified Trident Operator.
Passaggio 2: Preparare i file di backend dello storage e di configurazione di StorageClass per il proprio ambiente
Crea le definizioni di TridentBackendConfig e StorageClass per il tuo ambiente. Puoi configurare più protocolli di storage all'interno del tuo ambiente. Crea file YAML per ogni protocollo che desideri utilizzare e sostituisci i valori segnaposto con i dettagli specifici della tua configurazione.
|
|
Completa la sezione relativa all'ambiente locale o ROSA riportata di seguito in base al tuo ambiente, quindi procedi al passaggio 3. |
Cluster OpenShift locali
Crea file YAML per ogni protocollo che desideri configurare. Puoi configurare uno o più dei seguenti protocolli: NAS per file storage basato su NFS, iSCSI per storage a blocchi iSCSI, NVMe/TCP per storage a blocchi NVMe over TCP dalle performance elevate o FC per storage a blocchi Fibre Channel.
Crea un TridentBackendConfig e un StorageClass per ONTAP NAS per abilitare il provisioning di storage persistente basato su NFS. La configurazione del backend include le credenziali memorizzate in un Secret di Kubernetes e fa riferimento al tuo ONTAP SVM e al LIF di gestione.
Segreto del backend e file di configurazione del backend (salva come tbc-nas.yaml):
# tbc-nas.yaml
apiVersion: v1
kind: Secret
metadata:
name: tbc-nas-secret
type: Opaque
stringData:
username: <cluster admin username>
password: <cluster admin password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: tbc-nas
spec:
version: 1
storageDriverName: ontap-nas
managementLIF: <ONTAP management LIF>
backendName: tbc-nas
svm: zoneb #<replace with your SVM name>
storagePrefix: testzoneb #<replace with your prefix>
defaults:
nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
credentials:
name: tbc-nas-secret
StorageClass definition (salva come sc-nas.yaml):
# sc-nas.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: sc-nas
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-nas"
media: "ssd"
provisioningType: "thin"
snapshots: "true"
allowVolumeExpansion: true
Crea un TridentBackendConfig e un StorageClass per ONTAP SAN per abilitare il provisioning dello storage a blocchi basato su iSCSI. La configurazione del backend utilizza il driver ontap-san e include le credenziali memorizzate in un Secret di Kubernetes.
Segreto del backend e file di configurazione del backend (salva come tbc-iscsi.yaml):
# tbc-iscsi.yaml
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-ontap-iscsi-secret
type: Opaque
stringData:
username: <cluster admin username>
password: <cluster admin password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: ontap-iscsi
spec:
version: 1
storageDriverName: ontap-san
managementLIF: <management LIF>
backendName: ontap-iscsi
svm: <SVM name>
credentials:
name: backend-tbc-ontap-iscsi-secret
StorageClass definition (salva come sc-iscsi.yaml):
# sc-iscsi.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: sc-iscsi
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-san"
media: "ssd"
provisioningType: "thin"
fsType: ext4
snapshots: "true"
allowVolumeExpansion: true
Crea una TridentBackendConfig e una StorageClass per ONTAP SAN con NVMe su TCP per abilitare il provisioning di storage a blocchi dalle performance elevate. La configurazione del backend utilizza il driver ontap-san ottimizzato per il trasporto NVMe/TCP e include le credenziali memorizzate in un Secret di Kubernetes.
Segreto del backend e file di configurazione del backend (salva come tbc-nvme.yaml):
# tbc-nvme.yaml
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-ontap-nvme-secret
type: Opaque
stringData:
username: <cluster admin username>
password: <cluster admin password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-nvme
spec:
version: 1
storageDriverName: ontap-san
sanType: nvme
managementLIF: <ONTAP management LIF>
backendName: backend-tbc-ontap-nvme
svm: <SVM name>
credentials:
name: backend-tbc-ontap-nvme-secret
StorageClass definition (salva come sc-nvme.yaml):
# sc-nvme.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: sc-nvme
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-san"
media: "ssd"
provisioningType: "thin"
fsType: ext4
snapshots: "true"
allowVolumeExpansion: true
Crea una TridentBackendConfig e una StorageClass per ONTAP SAN con Fibre Channel per abilitare il provisioning dello storage a blocchi basato su FC. La configurazione del backend utilizza il driver ontap-san con il protocollo FCP specificato e include le credenziali memorizzate in un Secret di Kubernetes.
Segreto del backend e file di configurazione del backend (salva come tbc-fc.yaml):
# tbc-fc.yaml
apiVersion: v1
kind: Secret
metadata:
name: tbc-fc-secret
type: Opaque
stringData:
username: <cluster admin username>
password: <cluster admin password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: tbc-fc
spec:
version: 1
storageDriverName: ontap-san
managementLIF: <ONTAP management LIF>
backendName: tbc-fc
svm: openshift-fc #<replace with your SVM name>
sanType: fcp
storagePrefix: demofc #<replace with your prefix>
defaults:
nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
credentials:
name: tbc-fc-secret
StorageClass definition (salva come sc-fc.yaml):
# sc-fc.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: sc-fc
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-san"
media: "ssd"
provisioningType: "thin"
fsType: ext4
snapshots: "true"
allowVolumeExpansion: true
Cluster ROSA con Amazon FSx for NetApp ONTAP
Crea file YAML per ogni protocollo che desideri configurare. Puoi configurare uno o entrambi i seguenti protocolli: NAS per file storage basato su NFS o iSCSI per storage a blocchi.
Crea un TridentBackendConfig e un StorageClass per Amazon FSx for NetApp ONTAP con ONTAP NAS per abilitare il provisioning di storage persistente basato su NFS sui cluster ROSA. La configurazione del backend utilizza i nomi DNS di Amazon FSx for NetApp ONTAP per le LIF di gestione e dati, e include le credenziali memorizzate in un Secret di Kubernetes nel namespace trident.
Segreto del backend e file di configurazione del backend (salva come tbc-fsx-nas.yaml):
# tbc-fsx-nas.yaml
apiVersion: v1
kind: Secret
metadata:
name: backend-fsx-ontap-nas-secret
type: Opaque
stringData:
username: <FSx for ONTAP, for example fsxadmin>
password: <FSx for ONTAP password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-fsx-ontap-nas
spec:
version: 1
backendName: fsx-ontap
storageDriverName: ontap-nas
managementLIF: <Management DNS name>
dataLIF: <NFS DNS name>
svm: <SVM NAME>
credentials:
name: backend-fsx-ontap-nas-secret
StorageClass definition (salva come sc-fsx-nas.yaml):
# sc-fsx-nas.yaml (storage class name is trident-csi)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: trident-csi
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-nas"
fsType: "ext4"
allowVolumeExpansion: true
reclaimPolicy: Retain
Crea una TridentBackendConfig e una StorageClass per Amazon FSx for NetApp ONTAP con ONTAP SAN per abilitare il provisioning dello storage a blocchi basato su iSCSI sui cluster ROSA. La configurazione del backend utilizza il driver ontap-san e include le credenziali memorizzate in un Secret di Kubernetes. Assicurati che i nodi worker siano predisposti per l'accesso iSCSI.
Segreto del backend e file di configurazione del backend (salva come tbc-fsx-iscsi.yaml):
# tbc-fsx-iscsi.yaml
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-fsx-iscsi-secret
type: Opaque
stringData:
username: <FSx for ONTAP, for example fsxadmin>
password: <FSx for ONTAP password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: fsx-iscsi
spec:
version: 1
storageDriverName: ontap-san
managementLIF: <Management DNS name>
backendName: fsx-iscsi
svm: <SVM name>
credentials:
name: backend-tbc-fsx-iscsi-secret
StorageClass definition (salva come sc-fsx-iscsi.yaml):
# sc-fsx-iscsi.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: sc-fsx-iscsi
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-san"
media: "ssd"
provisioningType: "thin"
fsType: ext4
snapshots: "true"
allowVolumeExpansion: true
Passaggio 3: Creare un file di configurazione VolumeSnapshotClass
Crea una definizione VolumeSnapshotClass sia per le implementazioni on-premises che per quelle ROSA. Questa configurazione abilita le operazioni basate su snapshot per i volumi persistenti.
VolumeSnapshotClass definition (salva come snapshot-class.yaml):
# snapshot-class.yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: trident-snapshotclass
driver: csi.trident.netapp.io
deletionPolicy: Retain
Passaggio 4: applica i file di configurazione al tuo cluster
Applica i file di configurazione che hai creato nei passaggi precedenti al tuo OpenShift cluster.
-
Applica i file TridentBackendConfig e StorageClass per ciascun protocollo configurato.
Per i cluster on-premises:
oc create -f tbc-nas.yaml -n trident oc create -f sc-nas.yaml oc create -f tbc-iscsi.yaml -n trident oc create -f sc-iscsi.yaml oc create -f tbc-nvme.yaml -n trident oc create -f sc-nvme.yaml oc create -f tbc-fc.yaml -n trident oc create -f sc-fc.yamlPer i cluster ROSA:
oc create -f tbc-fsx-nas.yaml -n trident oc create -f sc-fsx-nas.yaml oc create -f tbc-fsx-iscsi.yaml -n trident oc create -f sc-fsx-iscsi.yaml -
Applica la configurazione VolumeSnapshotClass.
oc create -f snapshot-class.yaml -
Verificare che le risorse siano state create correttamente.
Controlla gli oggetti TridentBackendConfig:
oc get tbc -n tridentControlla gli oggetti StorageClass:
oc get storageclassVerifica VolumeSnapshotClass:
oc get volumesnapshotclass
Passaggio 5: Imposta le classi di storage e snapshot predefinite di Trident
Imposta StorageClass e VolumeSnapshotClass di Trident come predefiniti nel cluster OpenShift. Questo è necessario affinché OpenShift Virtualization crei sorgenti di immagini golden per i template delle VM.
-
Imposta il StorageClass predefinito di Trident.
Imposta una StorageClass supportata da Trident come predefinita del cluster, in modo che le PersistentVolumeClaims la utilizzino automaticamente quando non viene specificata alcuna classe di storage. È necessario configurare due annotazioni: una per l'impostazione predefinita a livello di cluster e una specifica per la virtualizzazione OpenShift.
-
Imposta l'annotazione StorageClass predefinita a livello di cluster.
Assicurati che solo uno StorageClass sia impostato come predefinito. Se un altro StorageClass è già impostato come predefinito, imposta la relativa annotazione su false.
Nella console, modifica l'annotazione:
storageclass.kubernetes.io/is-default-class: "true"Dalla CLI:
kubectl patch storageclass <storage class name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' -
Imposta l'annotazione predefinita specifica per la OpenShift Virtualization.
OpenShift Virtualization utilizza un'annotazione specifica che ha la precedenza sull'annotazione generale del cluster
is-default-class. Se un'altra StorageClass è già impostata come predefinita, imposta la relativa annotazione su false.Nella console, modifica l'annotazione:
storageclass.kubevirt.io/is-default-virt-class: "true"Dalla CLI:
kubectl patch storageclass <storage class name> -p '{"metadata": {"annotations":{"storageclass.kubevirt.io/is-default-virt-class": "true"}}}' -
-
Imposta la VolumeSnapshotClass predefinita di Trident.
Imposta un VolumeSnapshotClass supportato da Trident come predefinito del cluster per abilitare le operazioni basate su snapshot per i volumi persistenti. Questo garantisce che i VolumeSnapshots utilizzino automaticamente il driver CSI Trident quando non viene specificata alcuna classe di snapshot e consente a OpenShift Virtualization di creare snapshot di immagini golden.
Assicurati che solo un VolumeSnapshotClass sia impostato come predefinito. Se un altro VolumeSnapshotClass è già impostato come predefinito, imposta la relativa annotazione su false.
Nella console, modifica l'annotazione:
snapshot.storage.kubernetes.io/is-default-class: "true"Dalla CLI:
oc patch volumesnapshotclass <snapshot class name> --type=merge -p '{"metadata":{"annotations":{"snapshot.storage.kubernetes.io/is-default-class":"true"}}}'