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 Sankar Sangubotla () AWS
Entorno: PoC o piloto | Tecnologías: contenedores y microservicios DevOps | AWSservicios: AWS CodeBuild Amazon EC2 Container Registry; AmazonECS; AWS Fargate; AWS CodePipeline |
Resumen
Este patrón lo guía a través de los pasos para implementar una integración continua y una entrega continua (se inicia 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 y comienza el proceso de creación). CodeBuild Cuando se completa la compilación, el artefacto se envía a Amazon Elastic Container Registry (AmazonECR) y la última compilación de Amazon ECR se recoge y se envía al ECS servicio de Amazon.
Requisitos previos y limitaciones
Requisitos previos
Una aplicación de microservicios Java existente que se ejecuta en Amazon ECS
Familiaridad con y AWS CodeBuild 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
CodeBuild buildspec.yml
archivo:
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
AWSservicios
AWS CodeBuildes un servicio de compilación totalmente gestionado que le ayuda a compilar código fuente, ejecutar pruebas unitarias y producir artefactos listos para su despliegue. AWS CodeBuild escala de forma continua y procesa varias compilaciones de forma simultánea, por lo que sus compilaciones no se quedan en la cola.
AWS CodePipelinele ayuda a modelar y configurar rápidamente las diferentes etapas de una versión de software y a automatizar los pasos necesarios para publicar los cambios de software de forma continua. Puedes integrarte AWS CodePipeline con servicios de terceros GitHub, como Amazon, o utilizar un AWS servicio como AmazonECR.
Amazon Elastic Container Registry (AmazonECR) es un registro totalmente gestionado que facilita a los desarrolladores 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 tu development-to-production flujo de trabajo. Amazon ECR aloja sus imágenes en una arquitectura escalable y de alta disponibilidad para que pueda implementar contenedores para sus aplicaciones de forma fiable. La integración con AWS Identity and Access Management (IAM) proporciona un control a nivel de recursos de cada repositorio.
Amazon Elastic Container Service (AmazonECS) es un servicio de organización de contenedores altamente escalable y de alto rendimiento que admite contenedores Docker y le permite ejecutar y escalar aplicaciones en contenedores con facilidad. AWS Amazon ECS elimina la necesidad de instalar y operar su propio software de organización de contenedores, gestionar y escalar un clúster de máquinas virtuales o programar contenedores en esas máquinas virtuales.
AWSFargate es un motor de cómputo para Amazon ECS que te permite ejecutar contenedores sin tener que gestionar servidores o clústeres. Con AWS Fargate, ya no tiene que aprovisionar, configurar y escalar clústeres de máquinas virtuales para ejecutar 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 AWS CodeBuild consola | Desarrollador de aplicaciones, administrador AWS de sistemas |
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. | Desarrollador de aplicaciones, administrador AWS de sistemas |
Seleccione un repositorio. | Seleccione el repositorio desde el que desea compilar el código. | Desarrollador de aplicaciones, administrador AWS de sistemas |
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:
| Desarrollador de aplicaciones, administrador AWS de sistemas |
Elija un rol de servicio. | Puede crear un rol de servicio o seleccionarlo de una lista de roles existentes. | Desarrollador de aplicaciones, administrador AWS de sistemas |
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 | Desarrollador de aplicaciones, administrador AWS de sistemas |
Cree un archivo buildspec. | Puede crear un archivo | Desarrollador de aplicaciones, administrador AWS de sistemas |
Configure el proyecto para los artefactos. | (Opcional) Configure el proyecto de compilado de los artefactos, si es necesario. | Desarrollador de aplicaciones, administrador AWS de sistemas |
Configura Amazon CloudWatch Logs. | (Opcional) Configure Amazon CloudWatch Logs para el proyecto de compilación, si es necesario. Este paso es opcional, pero recomendable. | Desarrollador de aplicaciones, administrador AWS de sistemas |
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. | Desarrollador de aplicaciones, administrador AWS de sistemas |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Crear una canalización. | En la AWS CodePipeline consola | Desarrollador de aplicaciones, administrador AWS de sistemas |
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. | Desarrollador de aplicaciones, administrador AWS de sistemas |
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. | Desarrollador de aplicaciones, administrador AWS de sistemas |
Especifique el proveedor de origen. | En Proveedor de código fuente, elija GitHub (versión 2). | Desarrollador de aplicaciones, administrador AWS de sistemas |
Seleccione el repositorio y la rama del código. | Si no ha iniciado sesión, proporcione los detalles de la conexión a la que desea conectarse y GitHub, a continuación, seleccione el nombre del repositorio y el nombre de la rama. | Desarrollador de aplicaciones, administrador AWS de sistemas |
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. | Desarrollador de aplicaciones, administrador AWS de sistemas |
Seleccione un proveedor de compilación. | En Proveedor de compilación, elija y AWS CodeBuild, a continuación, proporcione los detalles de la AWS región y el nombre del proyecto de compilación. En Tipo de compilación, elija Compilación única. | Desarrollador de aplicaciones, administrador AWS de sistemas |
Elija un proveedor de implementación. | Para Deploy provider, elige AmazonECS. 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. | Desarrollador de aplicaciones, administrador AWS de sistemas |