Servicio Red Hat OpenShift en AWS con NetApp ONTAP
Descripción general
En esta sección, mostraremos cómo utilizar FSx para ONTAP como una capa de almacenamiento persistente para aplicaciones que se ejecutan en ROSA. Se mostrará la instalación del controlador NetApp Trident CSI en un clúster ROSA, el aprovisionamiento de un sistema de archivos FSx para ONTAP y la implementación de una aplicación con estado de muestra. También mostrará estrategias para realizar copias de seguridad y restaurar los datos de su aplicación. Con esta solución integrada, puede establecer un marco de almacenamiento compartido que se escala sin esfuerzo entre zonas de disponibilidad, lo que simplifica los procesos de escalamiento, protección y restauración de sus datos mediante el controlador Trident CSI.
Prerrequisitos
-
Usuario de IAM"con los permisos apropiados" para crear y acceder al clúster ROSA
-
Timón 3"documentación"
Este diagrama muestra el clúster ROSA implementado en múltiples AZ. Los nodos maestros y los nodos de infraestructura del clúster ROSA están en la VPC de Red Hat, mientras que los nodos de trabajo están en una VPC en la cuenta del cliente. Crearemos un sistema de archivos FSx para ONTAP dentro de la misma VPC e instalaremos el controlador Trident en el clúster ROSA, lo que permitirá que todas las subredes de esta VPC se conecten al sistema de archivos.
Configuración inicial
1. Aprovisionamiento de FSx para NetApp ONTAP
Cree un FSx multi-AZ para NetApp ONTAP en la misma VPC que el clúster ROSA. Hay varias maneras de hacer esto. Se proporcionan los detalles de la creación de FSxN utilizando una pila CloudFormation
a. Clonar el repositorio de GitHub
$ git clone https://github.com/aws-samples/rosa-fsx-netapp-ontap.git
b.Ejecute la pila CloudFormation Ejecute el siguiente comando reemplazando los valores de los parámetros con sus propios valores:
$ cd rosa-fsx-netapp-ontap/fsx
$ aws cloudformation create-stack \
--stack-name ROSA-FSXONTAP \
--template-body file://./FSxONTAP.yaml \
--region <region-name> \
--parameters \
ParameterKey=Subnet1ID,ParameterValue=[subnet1_ID] \
ParameterKey=Subnet2ID,ParameterValue=[subnet2_ID] \
ParameterKey=myVpc,ParameterValue=[VPC_ID] \
ParameterKey=FSxONTAPRouteTable,ParameterValue=[routetable1_ID,routetable2_ID] \
ParameterKey=FileSystemName,ParameterValue=ROSA-myFSxONTAP \
ParameterKey=ThroughputCapacity,ParameterValue=1024 \
ParameterKey=FSxAllowedCIDR,ParameterValue=[your_allowed_CIDR] \
ParameterKey=FsxAdminPassword,ParameterValue=[Define Admin password] \
ParameterKey=SvmAdminPassword,ParameterValue=[Define SVM password] \
--capabilities CAPABILITY_NAMED_IAM
Dónde: region-name: igual que la región donde está implementado el clúster ROSA subnet1_ID: id de la subred preferida para FSxN subnet2_ID: id de la subred en espera para FSxN VPC_ID: id de la VPC donde está implementado el clúster ROSA routetable1_ID, routetable2_ID: id de las tablas de rutas asociadas con las subredes elegidas anteriormente your_allowed_CIDR: rango de CIDR permitido para las reglas de ingreso de los grupos de seguridad de FSx for ONTAP para controlar el acceso. Puede utilizar 0.0.0.0/0 o cualquier CIDR apropiado para permitir que todo el tráfico acceda a los puertos específicos de FSx para ONTAP. Definir contraseña de administrador: una contraseña para iniciar sesión en FSxN Definir contraseña de SVM: una contraseña para iniciar sesión en SVM que se creará.
Verifique que su sistema de archivos y su máquina virtual de almacenamiento (SVM) se hayan creado mediante la consola de Amazon FSx , como se muestra a continuación:
2. Instale y configure el controlador Trident CSI para el clúster ROSA
b.Instalar Trident
Los nodos de trabajo del clúster ROSA vienen preconfigurados con herramientas NFS que le permiten utilizar protocolos NAS para el aprovisionamiento y acceso al almacenamiento.
Si desea utilizar iSCSI en su lugar, deberá preparar los nodos de trabajo para iSCSI. A partir de la versión Trident 25.02, puede preparar fácilmente los nodos de trabajo del clúster ROSA (o cualquier clúster OpenShift) para realizar operaciones iSCSI en el almacenamiento FSxN. Hay dos formas sencillas de instalar Trident 25.02 (o posterior) que automatiza la preparación del nodo de trabajo para iSCSI. 1. usando el indicador node-prep-flag desde la línea de comando usando la herramienta tridentctl. 2. Utilizar el operador Trident certificado por Red Hat desde el centro de operadores y personalizarlo. 3.Usando Helm.
|
Si utiliza cualquiera de los métodos anteriores sin habilitar la preparación del nodo, podrá utilizar únicamente protocolos NAS para aprovisionar almacenamiento en FSxN. |
Método 1: utilizar la herramienta tridentctl
Utilice el indicador node-prep e instale Trident como se muestra. Antes de emitir el comando de instalación, debe haber descargado el paquete de instalación. Consulte "La documentación aquí" .
#./tridentctl install trident -n trident --node-prep=iscsi
Método 2: utilizar el operador Trident certificado por Red Hat y personalizarlo Desde OperatorHub, busque el operador Trident certificado por Red Hat e instálelo.
A continuación, cree la instancia de Trident Orchestrator. Utilice la vista YAML para establecer valores personalizados o habilitar la preparación del nodo iscsi durante la instalación.
La instalación de Trident mediante cualquiera de los métodos anteriores preparará los nodos de trabajo del clúster ROSA para iSCSI iniciando los servicios iscsid y multipathd y configurando lo siguiente en el archivo /etc/multipath.conf
c.Verifique que todos los pods Trident estén en estado de ejecución
3. Configurar el backend Trident CSI para usar FSx para ONTAP (ONTAP NAS)
La configuración del back-end de Trident le dice a Trident cómo comunicarse con el sistema de almacenamiento (en este caso, FSx para ONTAP). Para crear el backend, proporcionaremos las credenciales de la máquina virtual de almacenamiento a la que conectarse, junto con las interfaces de administración de clúster y de datos NFS. Usaremos el"controlador ontap-nas" para aprovisionar volúmenes de almacenamiento en el sistema de archivos FSx.
a. Primero, cree un secreto para las credenciales de SVM usando el siguiente yaml
apiVersion: v1
kind: Secret
metadata:
name: backend-fsx-ontap-nas-secret
namespace: trident
type: Opaque
stringData:
username: vsadmin
password: <value provided for Define SVM password as a parameter to the Cloud Formation Stack>
|
También puede recuperar la contraseña SVM creada para FSxN desde AWS Secrets Manager como se muestra a continuación. |
b. A continuación, agregue el secreto de las credenciales de SVM al clúster ROSA usando el siguiente comando
$ oc apply -f svm_secret.yaml
Puede verificar que el secreto se haya agregado en el espacio de nombres trident usando el siguiente comando
$ oc get secrets -n trident |grep backend-fsx-ontap-nas-secret
do. A continuación, crea el objeto backend. Para ello, dirígete al directorio fsx de tu repositorio Git clonado. Abra el archivo backend-ontap-nas.yaml. Reemplace lo siguiente: managementLIF con el nombre de DNS de administración, dataLIF con el nombre de DNS NFS de la SVM de Amazon FSx y svm con el nombre de la SVM. Cree el objeto backend usando el siguiente comando.
Cree el objeto backend usando el siguiente comando.
$ oc apply -f backend-ontap-nas.yaml
|
Puede obtener el nombre DNS de administración, el nombre DNS de NFS y el nombre SVM desde la consola de Amazon FSx como se muestra en la siguiente captura de pantalla. |
**d. Ahora, ejecute el siguiente comando para verificar que se haya creado el objeto backend y que la fase muestre "Bound" y el estado sea "Éxito".
4. Crear una clase de almacenamiento Ahora que el backend de Trident está configurado, puede crear una clase de almacenamiento de Kubernetes para usar el backend. La clase de almacenamiento es un objeto de recurso disponible para el clúster. Describe y clasifica el tipo de almacenamiento que puedes solicitar para una aplicación.
a. Revise el archivo storage-class-csi-nas.yaml en la carpeta fsx.
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
b. Cree una clase de almacenamiento en el clúster ROSA y verifique que se haya creado la clase de almacenamiento trident-csi.
Esto completa la instalación del controlador Trident CSI y su conectividad al sistema de archivos FSx para ONTAP . Ahora puede implementar una aplicación con estado de Postgresql de muestra en ROSA usando volúmenes de archivos en FSx para ONTAP.
do. Verifique que no haya PVC ni PV creados utilizando la clase de almacenamiento trident-csi.
d. Verifique que las aplicaciones puedan crear PV usando Trident CSI.
Cree un PVC utilizando el archivo pvc-trident.yaml proporcionado en la carpeta fsx.
pvc-trident.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: basic
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: trident-csi
You can issue the following commands to create a pvc and verify that it has been created. image:redhat-openshift-container-rosa-011.png["crear una prueba de PVC usando Trident"]
|
Para utilizar iSCSI, debe haber habilitado iSCSI en los nodos de trabajo como se mostró anteriormente y debe crear un backend iSCSI y una clase de almacenamiento. A continuación se muestran algunos archivos yaml de muestra. |
cat tbc.yaml
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-ontap-san-secret
type: Opaque
stringData:
username: fsxadmin
password: <password for the fsxN filesystem>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-san
spec:
version: 1
storageDriverName: ontap-san
managementLIF: <management lif of fsxN filesystem>
backendName: backend-tbc-ontap-san
svm: svm_FSxNForROSAiSCSI
credentials:
name: backend-tbc-ontap-san-secret
cat sc.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: trident-csi
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-san"
media: "ssd"
provisioningType: "thin"
snapshots: "true"
allowVolumeExpansion: true
5. Implementar una aplicación con estado de PostgreSQL de muestra
a. Utilice Helm para instalar PostgreSQL
$ helm install postgresql bitnami/postgresql -n postgresql --create-namespace
b. Verifique que el pod de la aplicación se esté ejecutando y que se haya creado un PVC y un PV para la aplicación.
do. Implementar un cliente Postgresql
Utilice el siguiente comando para obtener la contraseña del servidor postgresql que se instaló.
$ export POSTGRES_PASSWORD=$(kubectl get secret --namespace postgresql postgresql -o jsoata.postgres-password}" | base64 -d)
Utilice el siguiente comando para ejecutar un cliente postgresql y conectarse al servidor usando la contraseña
$ kubectl run postgresql-client --rm --tty -i --restart='Never' --namespace postgresql --image docker.io/bitnami/postgresql:16.2.0-debian-11-r1 --env="PGPASSWORD=$POSTGRES_PASSWORD" \
> --command -- psql --host postgresql -U postgres -d postgres -p 5432
d. Crea una base de datos y una tabla. Cree un esquema para la tabla e inserte 2 filas de datos en la tabla.