Skip to main content
NetApp virtualization solutions
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Instala Trident en un clúster Red Hat OpenShift y crea objetos de almacenamiento

Colaboradores banum-netapp netapp-jsnyder kevin-hoke

Instala Trident con Red Hat Certified Trident Operator y crea objetos de almacenamiento para ONTAP y Amazon FSx for NetApp ONTAP para habilitar el aprovisionamiento dinámico de volúmenes para contenedores y VMs. Prepara los nodos trabajadores para el acceso a bloques cuando sea necesario.

Antes de empezar
  • Completa los procedimientos en esta página antes de instalar OpenShift Virtualization. OpenShift Virtualization requiere un StorageClass respaldado por Trident por defecto y un VolumeSnapshotClass para crear imágenes golden para plantillas de máquinas virtuales.

  • Si ya instalaste OpenShift Virtualization antes de configurar Trident, elimina cualquier imagen golden creada con una clase de almacenamiento diferente. Después de que configures Trident como predeterminado, OpenShift Virtualization vuelve a crear las imágenes golden usando el almacenamiento de Trident.

    oc delete dv,VolumeSnapshot -n openshift-virtualization-os-images --selector=cdi.kubevirt.io/dataImportCron

Paso 1: instalar Trident

El Red Hat Certified Trident Operator es compatible con NetApp para OpenShift en las instalaciones, en nubes públicas y en servicios gestionados como ROSA. A partir de Trident 25.02, el operador también puede preparar nodos de trabajo para iSCSI cuando usas Amazon FSx for NetApp ONTAP y planeas ejecutar cargas de trabajo de VM de virtualización de OpenShift.

Para otras opciones de instalación, mira "la documentación de Trident".

Pasos
  1. En OperatorHub, selecciona Certified NetApp Trident.

    Mostrar ejemplo

    centro de operadores

  2. En la página Instalar, mantén la última versión y selecciona Instalar.

    Mostrar ejemplo

    instalar

  3. Después de que el operador se instale, selecciona View operator y crea una instancia de Trident Orchestrator.

    Si quieres preparar los nodos trabajadores para iSCSI, cambia a la vista YAML y añade iscsi a nodePrep.

    Mostrar ejemplo

    Agregar iscsi para la preparación del nodo

  4. Confirma que todos los pods Trident están en ejecución en el clúster.

    Mostrar ejemplo

    Trident instalado

  5. Si activaste la preparación de nodos iSCSI, inicia sesión en los nodos trabajadores y verifica que iscsid y multipathd estén activos y que multipath.conf tenga entradas.

    Mostrar ejemplo

    iscsid en ejecución

    Mostrar ejemplo

    multipathd en ejecución

    Mostrar ejemplo

    archivo multipath.conf en ejecución

Demostración en video

El siguiente vídeo muestra una demostración de cómo instalar Trident usando el Red Hat Certified Trident Operator.

Instalación de Trident 25.02.1 utilizando el operador Trident certificado en OpenShift

Paso 2: prepara el backend de almacenamiento y los archivos de configuración de StorageClass para tu entorno

Crea definiciones de TridentBackendConfig y StorageClass para tu entorno. Puedes configurar varios protocolos de almacenamiento dentro de tu entorno. Crea archivos YAML para cada protocolo que quieras usar y reemplaza los valores de los marcadores de posición por los detalles específicos de tu configuración.

Nota Completa la sección local o ROSA según tu entorno y luego sigue con el paso 3.

Clústeres on-premises OpenShift

Crea archivos YAML para cada protocolo que quieras configurar. Puedes configurar uno o más de los siguientes protocolos: NAS para almacenamiento de archivos basado en NFS, iSCSI para almacenamiento de bloques iSCSI, NVMe/TCP para almacenamiento de bloques NVMe sobre TCP de alto rendimiento o FC para almacenamiento de bloques Fibre Channel.

NAS

Crea un TridentBackendConfig y un StorageClass para ONTAP NAS para habilitar el aprovisionamiento de almacenamiento persistente basado en NFS. La configuración del backend incluye credenciales almacenadas en un Kubernetes Secret y hace referencia a tu SVM de ONTAP y a tu LIF de gestión.

Secreto de backend y archivo de configuración de backend (guarda como 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

Definición de StorageClass (guarda como 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
iSCSI

Crea un TridentBackendConfig y un StorageClass para ONTAP SAN para habilitar el aprovisionamiento de almacenamiento en bloques basado en iSCSI. La configuración del backend usa el controlador ontap-san e incluye credenciales almacenadas en un Kubernetes Secret.

Secreto de backend y archivo de configuración de backend (guarda como 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

Definición de StorageClass (guarda como 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
NVMe/TCP

Crea un TridentBackendConfig y un StorageClass para ONTAP SAN con NVMe sobre TCP para habilitar el aprovisionamiento de almacenamiento en bloque de alto rendimiento. La configuración del backend usa el controlador ontap-san optimizado para el transporte NVMe/TCP e incluye credenciales almacenadas en un Kubernetes Secret.

Secreto de backend y archivo de configuración de backend (guardar como 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

Definición de StorageClass (guarda como 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
FC

Crea un TridentBackendConfig y un StorageClass para ONTAP SAN con Fibre Channel para habilitar el aprovisionamiento de almacenamiento en bloques basado en FC. La configuración del backend usa el controlador ontap-san con el protocolo FCP especificado e incluye credenciales almacenadas en un Kubernetes Secret.

Secreto de backend y archivo de configuración de backend (guárdalo como 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

Definición de StorageClass (guardar como 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

Clústeres ROSA con Amazon FSx for NetApp ONTAP

Crea archivos YAML para cada protocolo que quieras configurar. Puedes configurar uno o ambos de los siguientes protocolos: NAS para almacenamiento de archivos basado en NFS o iSCSI para almacenamiento en bloques.

NAS

Crea un TridentBackendConfig y un StorageClass para Amazon FSx for NetApp ONTAP con ONTAP NAS para habilitar el aprovisionamiento de almacenamiento persistente basado en NFS en clústeres ROSA. La configuración del backend usa los nombres DNS de Amazon FSx for NetApp ONTAP para la gestión y los LIF de datos, e incluye credenciales almacenadas en un Secret de Kubernetes en el namespace de trident.

Secreto de backend y archivo de configuración de backend (guarda como 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 definición (guarda como 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
iSCSI

Crea un TridentBackendConfig y un StorageClass para Amazon FSx for NetApp ONTAP con ONTAP SAN para habilitar el aprovisionamiento de almacenamiento en bloques basado en iSCSI en clústeres ROSA. La configuración del backend usa el controlador ontap-san e incluye credenciales almacenadas en un Kubernetes Secret. Asegúrate de que los nodos worker estén preparados para el acceso a iSCSI.

Secreto de backend y archivo de configuración de backend (guárdalo como 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 definición (guarda como 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

Paso 3: crea un archivo de configuración VolumeSnapshotClass

Crea una definición de VolumeSnapshotClass tanto para implementaciones locales como para ROSA. Esta configuración permite operaciones basadas en instantáneas para volúmenes persistentes.

Definición de VolumeSnapshotClass (guarda como 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

Paso 4: aplica los archivos de configuración a tu clúster

Aplica los archivos de configuración que creaste en los pasos anteriores a tu clúster OpenShift.

Pasos
  1. Aplica los archivos TridentBackendConfig y StorageClass para cada protocolo que configuraste.

    Para clústeres locales:

    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.yaml

    Para los clústeres 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
  2. Aplica la configuración de VolumeSnapshotClass.

    oc create -f snapshot-class.yaml
  3. Verifica que los recursos se hayan creado correctamente.

    Revisa los objetos TridentBackendConfig:

    oc get tbc -n trident

    Comprueba los objetos de StorageClass:

    oc get storageclass

    Revisa VolumeSnapshotClass:

    oc get volumesnapshotclass

Paso 5: establece las clases predeterminadas de almacenamiento e instantáneas de Trident

Configura Trident StorageClass y VolumeSnapshotClass como los predeterminados en el clúster OpenShift. Esto es necesario para que OpenShift Virtualization cree fuentes de imágenes doradas para plantillas de máquinas virtuales.

Pasos
  1. Configura el StorageClass predeterminado de Trident.

    Configura un StorageClass respaldado por Trident como predeterminado del clúster para que las PersistentVolumeClaims lo usen automáticamente cuando no se especifique ninguna clase de almacenamiento. Necesitas configurar dos anotaciones: una para el valor predeterminado de todo el clúster y otra específica para OpenShift Virtualization.

    1. Establece la anotación predeterminada de StorageClass para todo el clúster.

      Asegúrate de que solo un StorageClass esté configurado como predeterminado. Si otro StorageClass ya está configurado como predeterminado, pon su anotación en false.

      En la consola, edita la anotación:

      storageclass.kubernetes.io/is-default-class: "true"

      Desde la CLI:

      kubectl patch storageclass <storage class name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
    2. Establece la anotación predeterminada específica de OpenShift Virtualization.

      OpenShift Virtualization utiliza una anotación específica que tiene prioridad sobre la anotación general del clúster is-default-class. Si otro StorageClass ya está configurado como predeterminado, pon su anotación en false.

      En la consola, edita la anotación:

      storageclass.kubevirt.io/is-default-virt-class: "true"

      Desde la CLI:

    kubectl patch storageclass <storage class name> -p '{"metadata": {"annotations":{"storageclass.kubevirt.io/is-default-virt-class": "true"}}}'
  2. Establece el Trident VolumeSnapshotClass predeterminado.

    Establece un VolumeSnapshotClass respaldado por Trident como el predeterminado del clúster para habilitar operaciones basadas en instantáneas para volúmenes persistentes. Esto asegura que VolumeSnapshots use automáticamente el controlador CSI de Trident cuando no se especifica ninguna clase de instantánea y permite que OpenShift Virtualization cree instantáneas de imágenes doradas.

    Asegúrate de que solo un VolumeSnapshotClass esté configurado como predeterminado. Si ya hay otro VolumeSnapshotClass configurado como predeterminado, pon su anotación en false.

    En la consola, edita la anotación:

    snapshot.storage.kubernetes.io/is-default-class: "true"

    Desde la CLI:

    oc patch volumesnapshotclass <snapshot class name> --type=merge -p '{"metadata":{"annotations":{"snapshot.storage.kubernetes.io/is-default-class":"true"}}}'