CI/CD en AWS - Integración y entrega continuas para redes 5G en AWS

CI/CD en AWS

CI/CD se puede representar como una canalización, donde el código nuevo se envía en un extremo, se prueba en una serie de etapas (origen, creación, prueba, ensayo y producción) y, a continuación, se publica como código listo para producción.

Diagrama que muestra un ejemplo de la canalización de código de AWS

Información general de la canalización de CI/CD

Cada etapa de la canalización de CI/CD se estructura como unidad lógica en el proceso de entrega. Cada etapa actúa como una puerta que examina un aspecto determinado del código. Se supone que, a medida que el código avanza a través de la canalización, su calidad va mejorando en las etapas posteriores, ya que se van verificando más aspectos de este. Los problemas que se descubren en una etapa temprana impiden que el código avance a través de la canalización. Los resultados de las pruebas se envían inmediatamente al equipo y todas las compilaciones y versiones posteriores se detienen si el software no supera la etapa.

AWS aporta un completo conjunto de herramientas para desarrolladores de CI/CD a fin de acelerar los ciclos de desarrollo y lanzamiento de software. AWS CodePipeline automatiza las fases de compilación, prueba e implementación del proceso de lanzamiento cada vez que se produce un cambio de código, en función del modelo de lanzamiento definido. Esto permite una entrega rápida y fiable de las características y las actualizaciones.

Las canalizaciones de código pueden integrarse con otros servicios. Estos pueden ser servicios de AWS, como Amazon Simple Storage Service (Amazon S3), o productos de terceros, como GitHub. AWS CodePipeline puede abordar diversos casos de uso de desarrollo y operación, entre los que se incluyen los siguientes:

  • Compilación, creación y prueba de código con AWS CodeBuild

  • Entrega continua de aplicaciones basadas en contenedores a la nube

  • Validación previa a la implementación de los artefactos (como descriptores e imágenes de contenedor) requerida para las funciones de servicio de red o funciones de red nativas en la nube concretas

  • Pruebas funcionales, de integración y de rendimiento para una función de red en contenedores o una función de red virtual (CNF/VNF), incluidas las pruebas de base de referencia y de regresión

  • Pruebas de fiabilidad y recuperación de desastres (DR).

Diagrama que muestra los componentes de la canalización de CI/CD de AWS

Componentes de la canalización de CI/CD de AWS

AWS puede configurar canalizaciones de CI/CD con las herramientas para desarrolladores de AWS siguientes:

La creación de canalizaciones de CI/CD puede automatizarse con AWS CDK y AWS CloudFormation. En el dominio de virtualización de las funciones de redes (NFV), esta automatización nativa de AWS puede integrarse en un marco de administración y orquestación (MANO) y en el marco de orquestación de servicios del CSP.

El proceso de CI/CD incluye los pasos siguientes:

  • Configuración de red: AWS CDK y AWS CloudFormation inician la creación de los requisitos previos de red:

  • Implementación de la infraestructura: AWS CDK y AWS CloudFormation inician la creación de las pilas de recursos siguientes:

  • Implementación de funciones de red en la nube (CNF): en esta etapa, se implementan funciones CNF en clústeres de EKS mediante Kubectl y las herramientas de gráficos de Helm. En esta etapa también se implementa cualquier aplicación o herramienta específica que las CNF necesiten para funcionar de forma eficaz (como Prometheus o Fluentd). Las CNF pueden implementarse mediante funciones Lambda o con AWS CodeBuild.

  • Implementación y actualizaciones continuas: son una secuencia de pasos que se llevan a cabo de forma iterativa para implementar cambios que forman parte de los cambios de contenedor o de configuración que dan lugar a actualizaciones. Al igual que en el caso de la implementación de CNF, la implementación y las actualizaciones continuas pueden automatizarse mediante los servicios de AWS, con el desencadenador de AWS CodeCommit, Amazon Elastic Container Registry (Amazon ECR) o un sistema de origen de terceros, como GitLab Webhooks.

Diagrama que muestra el flujo de canalización de CI/CD de AWS.

Diagrama del flujo de canalización de CI/CD de AWS

La canalización de CI/CD se crea con AWS CodePipeline y usa un servicio de entrega continua que modela, visualiza y automatiza los pasos necesarios para publicar el software. Al definir etapas en una canalización, puede recuperar código de un repositorio de código fuente, integrar ese código fuente en un artefacto divulgable, probar el artefacto e implementarlo en producción. Solo se implementará el código que haya superado correctamente todas estas etapas. Si lo desea, puede añadir otros requisitos a la canalización (como las aprobaciones manuales) como ayuda para garantizar que solo se implementen en producción los cambios aprobados.