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.
Configure una canalización de CI/CD para cargas de trabajo híbridas en Amazon ECS Anywhere mediante AWS CDK y GitLab
Creado por el Dr. Rahul Sharad Gaikwad (AWS)
Repositorio de código: - amazon-ecs-anywhere-cicd pipeline-cdk-sample | Entorno: PoC o piloto | Tecnologías: nube híbrida; contenedores y microservicios; infraestructura; DevOps |
Carga de trabajo: código abierto | Servicios de AWS: AWS CDK; AWS CodePipeline; Amazon ECS; AWS Systems Manager; AWS CodeCommit |
Resumen
Amazon ECS Anywhere es una extensión de Amazon Elastic Container Service (Amazon ECS). Permite registrar una instancia externa, como un servidor en las instalaciones o una máquina virtual (VM), en su clúster de Amazon ECS. Esta característica ayuda a reducir los costos y mitigar la compleja operativa y orquestación de los contenedores locales. Puede usar ECS Anywhere para implementar y ejecutar aplicaciones de contenedor tanto en entornos en las instalaciones como en la nube. Evita que su equipo tenga que aprender varios dominios y conjuntos de habilidades, o administrar software complejo por su cuenta.
Este patrón describe un step-by-step enfoque para aprovisionar un clúster de Amazon ECS con instancias de Amazon ECS Anywhere mediante pilas del Cloud Development Kit (AWS CDK) de Amazon Web Services (AWS). A continuación, utiliza AWS CodePipeline para configurar una canalización de integración e implementación continuas (CI/CD). A continuación, replica el repositorio de GitLab código en AWS CodeCommit e implementa la aplicación en contenedores en el clúster de Amazon ECS.
Este patrón está diseñado para ayudar a quienes utilizan la infraestructura local a ejecutar aplicaciones de contenedores y GitLab a administrar la base de código de la aplicación. Puede administrar esas cargas de trabajo con los servicios en la nube de AWS sin interrumpir su infraestructura existente en las instalaciones.
Requisitos previos y limitaciones
Requisitos previos
Una cuenta de AWS activa.
Una aplicación en contenedor ejecutada en una infraestructura en las instalaciones.
Un GitLab repositorio en el que puede administrar la base de código de su aplicación. Para obtener más información, consulte Repository
(GitLab). Interfaz de la línea de comandos de AWS (AWS CLI) instalada y configurada. Para obtener más información, consulte Instalar o actualizar la última versión de la CLI de AWS (documentación de la CLI de AWS).
Kit de herramientas de AWS CDK, instalado y configurado globalmente. Para más información, consulte Instalar el CDK de AWS (documentación sobre el CDK de AWS).
npm, instalado y configurado para la AWS CDK en. TypeScript Para obtener más información, consulte Descargar e instalar Node.js y npm
(documentación de npm).
Limitaciones
Para ver las limitaciones y consideraciones, consulte Instancias externas (Amazon ECS Anywhere) en la documentación de Amazon ECS.
Versiones de producto
Kit de herramientas de AWS CDK, versión 2.27.0 o posterior
npm versión 7.20.3 o posterior
Node.js versión 16.6.1 o posterior
Arquitectura
Pila de tecnología de destino
AWS CDK
AWS CloudFormation
AWS CodeBuild
AWS CodeCommit
AWS CodePipeline
Amazon ECS Anywhere
Amazon Elastic Container Registry (Amazon ECR)
AWS Identity y Access Management (IAM)
AWS Systems Manager
GitLab repositorio
Arquitectura de destino
![Diagrama de arquitectura para configurar el clúster de Amazon ECS y el proceso de CI/CD.](images/pattern-img/b0f35986-a839-4b01-8eb0-4748182ddafc/images/85b8d4d9-3591-4d69-a54b-64aa543498f1.png)
Este diagrama presenta los dos flujos de trabajo principales descritos en este patrón: el aprovisionamiento del clúster de Amazon ECS y la configuración del proceso de CI/CD, que se configura e implementa de la siguiente manera:
Aprovisionamiento del clúster de Amazon ECS
Al implementar la primera pila de CDK de AWS, se crea una CloudFormation pila en AWS.
Esta CloudFormation pila aprovisiona un clúster de Amazon ECS y los recursos de AWS relacionados.
Para registrar una instancia externa en un clúster de Amazon ECS, debe instalar AWS Systems Manager Agent (SSM Agent) en su máquina virtual y registrar la máquina virtual como instancia gestionada por AWS Systems Manager.
También debe instalar el agente de contenedores de Amazon ECS y Docker en su máquina virtual para registrarla como instancia externa en el clúster de Amazon ECS.
Cuando la instancia externa está ya registrada y configurada con el clúster de Amazon ECS, puede ejecutar varios contenedores en su máquina virtual, registrada como instancia externa.
El clúster de Amazon ECS está activo y puede ejecutar las cargas de trabajo de la aplicación a través de contenedores. La instancia de contenedor de Amazon ECS Anywhere se ejecuta en un entorno en las instalaciones, pero está asociada al clúster de Amazon ECS en la nube.
Configuración e implementación del proceso de CI/CD
Al implementar la segunda pila de CDK de AWS, se crea otra CloudFormation pila en AWS.
Esta CloudFormation pila proporciona una canalización CodePipeline y los recursos de AWS relacionados.
Los cambios en el código de la aplicación se insertan y se combinan en un GitLab repositorio local.
El GitLab repositorio se replica automáticamente en el CodeCommit repositorio.
Las actualizaciones del CodeCommit repositorio se inician automáticamente. CodePipeline
CodePipeline copia el código de la aplicación desplegable integrada CodeCommit y la crea. CodeBuild
CodePipeline crea una imagen de Docker del entorno de CodeBuild compilación y la envía al repositorio de Amazon ECR.
CodePipeline inicia CodeDeploy acciones que extraen la imagen del contenedor del repositorio de Amazon ECR.
CodePipeline implementa la imagen del contenedor en el clúster de Amazon ECS.
Automatizar y escalar
Este patrón emplea AWS CDK como herramienta de infraestructura como código (IaC) para configurar e implementar esta arquitectura. AWS CDK le permite orquestar los recursos de AWS y configurar Amazon ECS Anywhere y el proceso de CI/CD.
Herramientas
Servicios de AWS
AWS Cloud Development Kit (AWS CDK) es un marco de desarrollo de software que le ayuda a definir y aprovisionar la infraestructura de la nube de AWS en código.
AWS CodeCommit es un servicio de control de versiones que le ayuda a almacenar y gestionar repositorios de Git de forma privada, sin necesidad de gestionar su propio sistema de control de código fuente.
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.
La interfaz de la línea de comandos de AWS (AWS CLI) es una herramienta de código abierto que le permite interactuar con los servicios de AWS mediante comandos en su intérprete de comandos de línea de comandos.
Amazon Elastic Container Registry (Amazon ECR) es un servicio de registro de imágenes de contenedor administrado que es seguro, escalable y fiable.
Amazon Elastic Container Service (Amazon ECS) es un servicio de administración de contenedores escalable y rápido que ayuda a ejecutar, detener y administrar contenedores en un clúster. Este patrón también emplea Amazon ECS Anywhere, que permite registrar un servidor en las instalaciones o una máquina virtual en el clúster de Amazon ECS.
Otras herramientas
Node.js
es un entorno de JavaScript ejecución basado en eventos diseñado para crear aplicaciones de red escalables. npm
es un registro de software que se ejecuta en un entorno Node.js y se utiliza para compartir o tomar prestados paquetes y administrar la implementación de paquetes privados. Vagrant
es una utilidad de código abierto para compilar y mantener entornos de desarrollo de software virtual portátiles. Este patrón usa Vagrant con fines de demostración para crear una máquina virtual en las instalaciones.
Repositorio de código
El código de este patrón está disponible en la canalización de GitHub CI/CD de Amazon ECS Anywhere mediante el repositorio CDK de AWS
Prácticas recomendadas
Tenga en cuenta las siguientes prácticas recomendadas al implementar este patrón:
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Verifique la versión de AWS CDK. | Compruebe la versión del kit de herramientas de AWS CDK ejecutando el siguiente comando.
Este patrón requiere la versión 2.27.0 o posterior. Si tiene una versión anterior, siga las instrucciones de la documentación de AWS CDK para actualizarla. | DevOps ingeniero |
Verifique la versión de npm. | Verifique la versión de npm introduciendo el siguiente comando.
Este patrón requiere la versión 7.20.3 o posterior. Si tiene una versión anterior, siga las instrucciones de la documentación de npm | DevOps ingeniero |
Configure las credenciales de AWS. | Para configurar las credenciales de AWS, ejecute el comando
| DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Clonar el repositorio de código de AWS CDK. |
| DevOps ingeniero |
Inicie el entorno. | Implemente la CloudFormation plantilla en la cuenta y la región de AWS que desee utilizar introduciendo el siguiente comando.
Para obtener más información, consulte Proceso de arranque en la documentación de AWS CDK. | DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Instale las dependencias del paquete y compile los TypeScript archivos. | Instale las dependencias del paquete y compile los TypeScript archivos introduciendo los siguientes comandos.
Estos comandos instalan todos los paquetes del repositorio de muestra. Para obtener más información, consulte npm ci | DevOps ingeniero |
Compilar el proyecto. | Para construir el código del proyecto, introduzca el siguiente comando.
Para obtener más información sobre la compilación e implementación del proyecto, consulte Su primera aplicación de AWS CDK en la documentación de AWS CDK. | DevOps ingeniero |
Implemente la pila de infraestructura de Amazon ECS Anywhere. |
| DevOps ingeniero |
Verifique la creación y el resultado de la pila. |
| DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Configurar su VM. | Cree una máquina virtual de Vagrant ejecutando el comando | DevOps ingeniero |
Registre su máquina virtual como instancia externa. |
Este paso configura la máquina virtual como una instancia externa de Amazon ECS Anywhere, y registra la instancia en el clúster de Amazon ECS. Para obtener más información, consulte Registrar una instancia externa en un clúster | DevOps ingeniero |
Compruebe el estado de Amazon ECS Anywhere y de la máquina virtual externa. | Para comprobar si su máquina virtual está conectada al plano de control de Amazon ECS y en funcionamiento, ejecute los siguientes comandos.
| DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Crea una rama en el CodeCommit repositorio. | Crea una rama con un nombre
| DevOps ingeniero |
Configure la replicación de repositorios. | Puede duplicar un GitLab repositorio desde y hacia fuentes externas. Puede seleccionar qué repositorio servirá como origen. Las ramificaciones, las etiquetas y las confirmaciones se sincronizan automáticamente. Configura una réplica automática entre el GitLab repositorio que aloja tu aplicación y el CodeCommit repositorio. Para obtener instrucciones, consulte Configurar una réplica push de GitLab a CodeCommit Nota: De forma predeterminada, la replicación sincroniza automáticamente el repositorio. Si desea actualizar manualmente los repositorios, consulte Actualizar una réplica | DevOps ingeniero |
Implemente la pila proceso de CI/CD. | Implementar la pila de
| DevOps ingeniero |
Pruebe el proceso de CI/CD. |
| DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Limpie y elimine los recursos. | Después de seguir este patrón, debe eliminar los proof-of-concept recursos que ha creado. Para limpiar, introduzca los siguientes comandos.
| DevOps ingeniero |
Solución de problemas
Problema | Solución |
---|---|
Errores relacionados con la falta de paquetes al instalar dependencias de paquetes. | Ejecute uno de los siguientes comandos para resolver los paquetes que faltan.
o
|
Al ejecutar el comando
| La pila |
La comprobación de estado de Amazon ECS devuelve el resultado
| Reinicie el agente de Amazon ECS en su máquina virtual de Vagrant ejecutando los siguientes comandos.
|