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)
Resumen
Este patrón lo guía a través de los pasos para implementar una integración continua y una entrega continua (la CI/CD) pipeline for Java microservices on an existing Amazon Elastic Container Service (Amazon ECS) cluster by using AWS CodeBuild. When the developer commits the changes, the CI/CD canalización se inicia y el proceso de creación comienza en) CodeBuild. Cuando se completa la compilación, el artefacto se envía al 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

Pila de tecnología de destino
Amazon ECR
Amazon ECS
AWS Fargate
AWS CodePipeline
AWS CodeBuild
Arquitectura de destino

Automatizar y escalar
Archivo CodeBuild buildspec.yml
:
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 Amazon ECR, o utilizar un servicio de AWS como 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.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Cree un proyecto de CodeBuild construcción. | En la CodeBuild consola de AWS | 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:
| 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:
Estas variables son marcadores de posición en el archivo | Administrador de sistemas de AWS, desarrollador de aplicaciones |
Cree un archivo buildspec. | Puede crear un archivo | 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 |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Crear una canalización. | En la CodePipeline consola 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. Seleccione Create pipeline. | Administrador de sistemas de AWS, desarrollador de aplicaciones |