Implemente una canalización de CI/CD para microservicios de Java en Amazon ECS - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Implemente una canalización de CI/CD para microservicios de Java en Amazon ECS

Creado por Vijay Thompson (AWS) y Sandeep Bondugula (AWS)

Entorno: PoC o piloto

Tecnologías: DevOps contenedores y microservicios

Servicios de AWS: AWS CodeBuild; Amazon EC2 Container Registry; Amazon ECS; AWS Fargate; AWS CodePipeline

Resumen

Este patrón lo guía a través de los pasos para implementar una canalización de integración y entrega continuas (CI/CD) para microservicios de Java en un clúster de Amazon Elastic Container Service (Amazon ECS) existente mediante AWS. CodeBuild Cuando el desarrollador confirma los cambios, se inicia la canalización de CI/CD y comienza el proceso de creación. CodeBuild Cuando se completa la compilación, el artefacto se envía a Amazon Elastic Container Registry (Amazon ECR) y la última compilación de Amazon ECR se recoge y se envía al servicio Amazon ECS.

Requisitos previos y limitaciones

Requisitos previos 

  • Una aplicación de microservicios Java existente que se ejecuta en Amazon ECS

  • Familiaridad con AWS CodeBuild y AWS CodePipeline

Arquitectura

Pila de tecnología de origen

  • Microservicios Java que se ejecutan en Amazon ECS

  • Repositorio de código en Amazon ECR

  • AWS Fargate

Arquitectura de origen

Arquitectura de origen para implementar una canalización de CI/CD para microservicios de Java en Amazon ECS

Pila de tecnología de destino

  • Amazon ECR

  • Amazon ECS

  • AWS Fargate

  • AWS CodePipeline

  • AWS CodeBuild

Arquitectura de destino

Arquitectura de destinio para implementar una canalización de CI/CD para microservicios de Java en Amazon ECS

Automatizar y escalar

CodeBuild buildspec.ymlarchivo:

version: 0.2 phases: pre_build: commands: - echo Logging in to Amazon ECR... - aws --version - $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email) - REPOSITORY_URI=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7) - IMAGE_TAG=build-$(echo $CODEBUILD_BUILD_ID | awk -F":" '{print $2}') build: commands: - echo Build started on `date` - echo building the Jar file - mvn clean install - echo Building the Docker image... - docker build -t $REPOSITORY_URI:$BUILD_TAG . - docker tag $REPOSITORY_URI:$BUILD_TAG $REPOSITORY_URI:$IMAGE_TAG post_build: commands: - echo Build completed on `date` - echo Pushing the Docker images... - docker push $REPOSITORY_URI:$BUILD_TAG - docker push $REPOSITORY_URI:$IMAGE_TAG - echo Writing image definitions file... - printf '[{"name":"%s","imageUri":"%s"}]' $DOCKER_CONTAINER_NAME $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json - cat imagedefinitions.json artifacts: files: - imagedefinitions.json - target/DockerDemo.jar

Herramientas

Servicios de AWS

  • AWS CodeBuild es un servicio de compilación totalmente gestionado que le ayuda a compilar código fuente, ejecutar pruebas unitarias y producir artefactos listos para su implementación. AWS CodeBuild escala de forma continua y procesa varias compilaciones al mismo tiempo, por lo que sus compilaciones no se quedan en la cola.

  • AWS le CodePipeline ayuda a modelar y configurar rápidamente las diferentes etapas de una versión de software y a automatizar los pasos necesarios para publicar cambios de software de forma continua. Puede integrar AWS CodePipeline con servicios de terceros GitHub, como o utilizar un servicio de AWS, como AWS CodeCommit o Amazon ECR.

  • Amazon Elastic Container Registry (Amazon ECR) es un registro de contenedores de Docker completamente administrado que facilita el almacenamiento, la administración y la implementación de imágenes de contenedores de Docker. Amazon ECR está integrado con Amazon ECS para simplificar su development-to-production flujo de trabajo. Amazon ECR aloja las imágenes en una arquitectura escalable y de alta disponibilidad, lo que le permite implementar contenedores para sus aplicaciones con fiabilidad. La integración con AWS Identity and Access Management (IAM) proporciona un control a nivel de recursos de cada repositorio.

  • Amazon Elastic Container Service (Amazon ECS) es un servicio de orquestación de contenedores de alto rendimiento y escalado que admite contenedores de Docker y facilita la ejecución y el escalado de aplicaciones en contenedores en AWS. Amazon ECS elimina la necesidad de instalar y operar su propio software de orquestación de contenedores, administrar y escalar un clúster de máquinas virtuales o programar contenedores en esas máquinas virtuales.

  • AWS Fargate es un motor de cómputo para Amazon ECS que le permite ejecutar contenedores sin tener que administrar servidores o clústeres. Con AWS Fargate ya no tendrá que aprovisionar, configurar ni escalar clústeres de máquinas virtuales para ejecutar los contenedores. De esta manera, se elimina la necesidad de elegir tipos de servidores, decidir cuándo escalar los clústeres u optimizar conjuntos de clústeres.

Otras herramientas

  • Docker le ayuda a crear, probar y entregar aplicaciones en paquetes llamados contenedores.

  • Git es un sistema de control de versiones distribuido que rastrea los cambios en el código fuente durante el desarrollo del software. Está diseñado para coordinar el trabajo entre los programadores, pero se puede utilizar para realizar un seguimiento de los cambios en cualquier conjunto de archivos. Sus objetivos incluyen la velocidad, la integridad de los datos y la compatibilidad con flujos de trabajo distribuidos y no lineales. También puede utilizar AWS CodeCommit como alternativa a Git.

Epics

TareaDescripciónHabilidades requeridas

Cree un proyecto de CodeBuild construcción.

En la CodeBuild consola de AWS, cree un proyecto de compilación y especifique su nombre.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Seleccione el origen.

Este patrón usa Git como repositorio de código, así que elige GitHub de la lista de opciones disponibles. Elige un repositorio público o desde tu GitHub cuenta.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Seleccione un repositorio.

Seleccione el repositorio desde el que desea compilar el código.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Seleccione el entorno.

Puede seleccionar una imagen de una lista de imágenes administradas u optar por una imagen personalizada mediante Docker. Este patrón utiliza la siguiente imagen administrada:

  • Amazon Linux 2

  • Tiempo de ejecución: estándar

  • Versión de la imagen: 1.0

Administrador de sistemas de AWS, desarrollador de aplicaciones

Elija un rol de servicio.

Puede crear un rol de servicio o seleccionarlo de una lista de roles existentes.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Añada variables de entorno.

En la sección Configuración adicional, configure las siguientes variables de entorno:

  • AWS_DEFAULT_REGION para la región de AWS predeterminada

  • AWS_ACCOUNT_ID para el número de cuenta de usuario

  • IMAGE_REPO para el repositorio privado de Amazon ECR

  • BUILD_TAG para la versión de la compilación (la última compilación es el valor de esta variable)

  • DOCKER_CONTAINER_NAME para el nombre del contenedor de la tarea

Estas variables son marcadores de posición en el archivo buildspec.yml y se sustituirán por sus valores respectivos.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Cree un archivo buildspec.

Puede crear un archivo buildspec.yml en la misma ubicación como pom.xml y añadir la configuración que se proporciona en este patrón, o bien utilizar el editor buildspec en línea y añadir la configuración. Configure las variables de entorno con los valores adecuados siguiendo los pasos que se indican.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Configure el proyecto para los artefactos.

(Opcional) Configure el proyecto de compilado de los artefactos, si es necesario.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Configura Amazon CloudWatch Logs.

(Opcional) Configure Amazon CloudWatch Logs para el proyecto de compilación, si es necesario. Este paso es opcional, pero recomendable.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Configure los registros de Amazon S3.

(Opcional) Configure los registros de Amazon Simple Storage Service (Amazon S3) para el proyecto de compilación, si desea almacenar los registros.

Administrador de sistemas de AWS, desarrollador de aplicaciones
TareaDescripciónHabilidades requeridas

Crear una canalización.

En la CodePipeline consola de AWS, cree una canalización y especifique su nombre. Para obtener más información sobre la creación de una canalización, consulte la CodePipeline documentación de AWS.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Seleccione un rol de servicio.

Cree un rol de servicio o selecciónelo de una lista de roles existentes. Si va a crear un rol de servicio, proporcione un nombre para el rol y seleccione la opción CodePipeline para crearlo.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Elija una tienda de artefactos.

En la configuración avanzada, si desea que Amazon S3 cree un bucket y almacene los artefactos en él, utilice la ubicación predeterminada para el almacén de artefactos. O bien, seleccione una ubicación personalizada y especifique un bucket existente. También puede optar por cifrar el artefacto mediante una clave de cifrado.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Especificar el proveedor de código fuente.

En Proveedor de origen, elija GitHub (versión 2).

Administrador de sistemas de AWS, desarrollador de aplicaciones

Seleccione el repositorio y la rama del código.

Si no ha iniciado sesión, proporcione los detalles de conexión a los que desea conectarse y GitHub, a continuación, seleccione el nombre del repositorio y el nombre de la rama.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Opciones de detección de cambios.

Seleccione Iniciar la canalización en el cambio del código fuente y pase a la página siguiente.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Seleccione un proveedor de compilación.

Como proveedor de compilación, elija AWS y CodeBuild, a continuación, proporcione la región de AWS y los detalles del nombre del proyecto de compilación.

En Tipo de compilación, elija Compilación única.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Elija un proveedor de implementación.

En Proveedor de implementación, elija Amazon ECS. Elija el nombre del clúster, el nombre del servicio, el archivo de definiciones de imágenes, si lo hubiera, y un valor de tiempo de espera de implementación, si es necesario. Elija Crear canalización.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Recursos relacionados