Skip to main content
NetApp 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.

Integrar la protección en canalizaciones CI/CD con Astra Control de NetApp

Colaboradores

Descripción general

Uno de los usos más comunes de los flujos de trabajo de DevOps es la integración continua y las canalizaciones de implementación continua (CI/CD) que crean, integran y ejecutan suites de pruebas automatizadas en aplicaciones, mientras los desarrolladores aplican nuevo código. Los ingenieros de DevOps y los ingenieros de fiabilidad del sitio (SRE, "Site-reliability engineer") suelen tener canalizaciones dedicadas a los distintos flujos de trabajo para el desarrollo de nuevas funciones, las pruebas de regresión, las correcciones de errores, la ingeniería de calidad y otras funciones del proceso de desarrollo.

A medida que los equipos aumentan su nivel de automatización, el ritmo de los cambios de las aplicaciones en producción puede resultar abrumador. Por lo tanto, algunos equipos prefieren proteger los servicios o las aplicaciones de producción. Además de proteger las imágenes de código y contenedor, también quieren proteger el estado de la aplicación, los datos de configuración (como objetos y recursos de Kubernetes asociados con la aplicación) y los datos persistentes de una aplicación.

En este caso de uso, analizamos con detalle una canalización de promoción a producción que pone en marcha una nueva versión de una aplicación: Primero, a un entorno de almacenamiento provisional y, finalmente, a un entorno de producción. Este ejemplo se aplica de igual forma a los principales clouds públicos y también a un entorno local. Aunque mostramos el despliegue de una versión de la aplicación, la canalización también se puede utilizar con otras estrategias, como la implementación azul/verde o canaria. Como parte de la canalización de CI/CD, vamos a proteger la aplicación creando una copia de seguridad completa de la aplicación. Un backup coherente con las aplicaciones de la aplicación de producción y sus datos, estado y configuración pueden ser útiles para numerosos flujos de trabajo de DevOps.

DevOps con la arquitectura Astra de NetApp para el caso de uso 1

Se utilizó la aplicación para validar este caso de uso "Magento", Una solución de comercio electrónico con un front-end basado en la web; una instancia de Elasticsearch para las funciones de búsqueda y análisis; y una base de datos MariaDB que realiza un seguimiento de todos los detalles del inventario de compras y las transacciones. Esta aplicación en contenedor se instaló en un clúster de Red Hat OpenShift. Cada pod de la aplicación usaba volúmenes persistentes para almacenar datos. Los volúmenes persistentes fueron creados automáticamente por NetApp Astra Trident, el orquestador de almacenamiento compatible con Container Storage Interface para Kubernetes que permite aprovisionar el almacenamiento en los sistemas de almacenamiento de NetApp. Además, para utilizar las funcionalidades de protección de aplicaciones de Astra Control Center, Astra Control gestiona esta aplicación, que se utiliza para activar los backups de aplicaciones que almacenaban el estado de la aplicación y los datos contenidos en volúmenes persistentes. Utilizamos la "Kit de desarrollo de software Astra Control Python de NetApp" Para automatizar el proceso de activación de backups de aplicaciones, que posteriormente se introdujo en una canalización de CI/CD. Esta canalización se creó y ejecutó utilizando una herramienta de CI/CD conocida llamada ["Jenkins"] para automatizar el flujo para crear, proteger e implementar la aplicación.

Repasemos los requisitos previos y el procedimiento para introducir la protección en una canalización CI/CD.

Requisitos previos de validación de casos de uso

Se pusieron en marcha y configuraron como requisitos previos las siguientes herramientas o plataformas:

  1. OpenShift Container Platform de Red Hat

  2. Astra Trident de NetApp instalado en OpenShift con un back-end al sistema ONTAP de NetApp configurado

  3. Se configuró un storagegrid predeterminado, que apunta al back-end ONTAP de NetApp

  4. NetApp Astra Control Center instalado en un clúster OpenShift

  5. OpenShift Cluster se ha agregado como un clúster gestionado a Astra Control Center

  6. Jenkins se ha instalado en un clúster de OpenShift y se ha configurado con un nodo de agente con un motor Docker instalado en él

Instalación de la aplicación

Comencemos por la instalación inicial de la aplicación en los entornos de configuración y producción. Para este caso de uso, este paso es un requisito previo, por lo que se realiza de forma manual. La canalización de CI/CD se utiliza para los flujos de trabajo posteriores de creación e implementación como resultado de las versiones nuevas de la aplicación.

El entorno de producción en este caso de uso es un espacio de nombres llamado magento-prod`y el entorno de ensayo correspondiente es un espacio de nombres denominado `magento-staging Configurado en el clúster de Red Hat OpenShift. Para aplicar la aplicación, realice los siguientes pasos:

  1. Instale la aplicación Magento mediante el gráfico de timón de bitnami en el entorno de producción. Utilizamos RWX PVs para las vainas Magento y MariaDB.

    [netapp-user@rhel7 na_astra_control_suite]$ helm install --version 14 magento bitnami/magento -n magento-prod --create-namespace --set image.tag=2.4.1-debian-10-r11,magentoHost=10.63.172.243,persistence.magento.accessMode=ReadWriteMany,persistence.apache.accessMode=ReadWriteMany,mariadb.master.persistence.accessModes[0]=ReadWriteMany
    Nota La tabla de timón de Magento bitnami requiere un servicio LoadBalancer para exponer el servicio de GUI de Magento. Nosotros usamos "MetalLB" para proporcionar un servicio de equilibrador de carga en las instalaciones en este ejemplo.
  2. Después de unos minutos, verifique que estén en ejecución todos los pods y servicios.

    [netapp-user@rhel7 na_astra_control_suite]$ oc get pods -n magento-prod
    NAME                                                     READY   STATUS    RESTARTS   AGE
    magento-9d658fd96-qrxmt                                  1/1     Running   0          49m
    magento-elasticsearch-coordinating-only-69869cc5-768rm   1/1     Running   0          49m
    magento-elasticsearch-data-0                             1/1     Running   0          49m
    magento-elasticsearch-master-0                           1/1     Running   0          49m
    magento-mariadb-0                                        1/1     Running   0          49m
  3. Repita el mismo procedimiento para el entorno de ensayo.

Gestione la aplicación Magento en Astra Control Center

  1. Desplácese a aplicaciones y seleccione la ficha aplicaciones detectadas.

  2. Haga clic en los puntos suspensivos con la aplicación Magento en el entorno de producción (magento-prod) Y haga clic en Administrar.

  3. La aplicación Magento es ahora gestionada por Astra Control Center. Todas las operaciones compatibles con Astra Control se pueden realizar en la aplicación. Anote también la versión de la aplicación.

    Comprobación de la versión de Magento antes de la actualización
  4. Repita los pasos para administrar la aplicación Magento en el entorno de ensayo (magento-staging).

Canalización de CI/CD con protección integrada

Cuando trabajamos con nuevas versiones de aplicaciones, utilizamos una canalización CI/CD para construir la imagen de contenedor, realizar backups tanto de los entornos de ensayo como de producción, implementar la nueva versión de la aplicación en el entorno de ensayo, esperar la aprobación de la promoción a la producción, a continuación, implemente la nueva versión de la aplicación en el entorno de producción. Para utilizar una canalización de CI/CD, lleve a cabo los siguientes pasos:

  1. Inicie sesión en Jenkins y cree las credenciales necesarias: Una para Magento creds, una para MariaDB admin creds y la tercera para MariaDB root creds.

  2. Desplácese hasta Manage Jenkins > Manage Credentials y haga clic en el dominio adecuado.

  3. Haga clic en Agregar credenciales y establezca el tipo en Nombre de usuario con contraseña y ámbito establecido en Global. Introduzca el nombre de usuario, la contraseña y el ID para las credenciales y haga clic en OK.

    Cree credenciales
  4. Repita el mismo procedimiento para las otras dos credenciales.

  5. Vuelva a la consola, cree una canalización haciendo clic en Nuevo elemento y, a continuación, haga clic en canalización.

  6. Copie la canalización del archivo Jenkinsfile "aquí".

  7. Pegue la canalización en la sección de canalización Jenkins y, a continuación, haga clic en Guardar.

  8. Rellene los parámetros de la canalización Jenkins con los detalles respectivos, incluida la versión del gráfico del timón, la versión de la aplicación Magento a la que se va a actualizar, la versión del kit de herramientas de Astra, el FQDN de Astra Control Center, el token de API y su ID de instancia. Especifique el registro docker, el espacio de nombres y Magento IP tanto de los entornos de producción como de ensayo, y también especifique los identificadores de credenciales de las credenciales creadas.

    MAGENTO_VERSION = '2.4.1-debian-10-r14'
    CHART_VERSION = '14'
    RELEASE_TYPE = 'MINOR'
    ASTRA_TOOLKIT_VERSION = '2.0.2'
    ASTRA_API_TOKEN = 'xxxxxxxx'
    ASTRA_INSTANCE_ID = 'xxx-xxx-xxx-xxx-xxx'
    ASTRA_FQDN = 'netapp-astra-control-center.org.example.com'
    DOCKER_REGISTRY = 'docker.io/netapp-solutions-cicd'
    PROD_NAMESPACE = 'magento-prod'
    PROD_MAGENTO_IP = 'x.x.x.x'
    STAGING_NAMESPACE = 'magento-staging'
    STAGING_MAGENTO_IP = 'x.x.x.x'
    MAGENTO_CREDS = credentials('magento-cred')
    MAGENTO_MARIADB_CREDS = credentials('magento-mariadb-cred')
    MAGENTO_MARIADB_ROOT_CREDS = credentials('magento-mariadb-root-cred')
  9. Haga clic en Crear ahora. La canalización comienza a ejecutarse y avanza a lo largo de los pasos. La imagen de la aplicación se crea primero y se carga en el registro del contenedor.

    Progreso de la canalización
  10. Las copias de seguridad de aplicaciones se inician mediante Astra Control.

    Backup iniciado
  11. Una vez que las fases de copia de seguridad se hayan completado correctamente, compruebe las copias de seguridad desde Astra Control Center.

    Backup realizado correctamente
  12. A continuación, la nueva versión de la aplicación se implementa en el entorno de almacenamiento provisional.

    Se inició la implementación de almacenamiento provisional
  13. Una vez completado este paso, el programa espera a que el usuario apruebe la implementación a producción. En esta fase, suponga que el equipo de QA realiza algunas pruebas manuales y aprueba la producción. A continuación, puede hacer clic en aprobar para implementar la nueva versión de la aplicación en el entorno de producción.

    Esperando promoción
  14. Compruebe que la aplicación de producción también se ha actualizado a la versión deseada.

    Prod App actualizada

Como parte de la canalización CI/CD, demostramos la capacidad para proteger la aplicación creando un backup completo compatible con aplicaciones. Dado que se ha realizado un backup de toda la aplicación como parte de la canalización de promoción a producción, puede sentirse más seguro de las puestas en marcha de aplicaciones altamente automatizadas. Este backup consciente de la aplicación que contiene los datos, el estado y la configuración de la aplicación puede ser útil para numerosos flujos de trabajo de DevOps. Un flujo de trabajo importante sería volver a la versión anterior de la aplicación en caso de problemas imprevistos.

Aunque demostramos un flujo de trabajo CI/CD a través de la herramienta Jenkins, este concepto se puede extrapolar de forma sencilla y eficiente a distintas herramientas y estrategias. Para ver este caso de uso en acción, vea el vídeo a continuación.

Protección de datos en canalización CI/CD con Astra Control Center