Gestión de las aplicaciones de contenedores en las instalaciones mediante la configuración de Amazon ECS Anywhere con AWS CDK - 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.

Gestión de las aplicaciones de contenedores en las instalaciones mediante la configuración de Amazon ECS Anywhere con AWS CDK

Creado por el Dr. Rahul Sharad Gaikwad (AWS)

Repositorio de código: -samples amazon-ecs-anywhere-cdk

Entorno: PoC o piloto

Tecnologías: modernización; contenedores y microservicios; nube híbrida DevOps; infraestructura

Carga de trabajo: todas las demás cargas de trabajo

Servicios de AWS: AWS CDK; Amazon ECS; AWS Identity and Access Management

Resumen

Amazon ECS Anywhere es una extensión de Amazon Elastic Container Service (Amazon ECS). Puede usar ECS Anywhere para implementar tareas nativas de Amazon ECS en un entorno en las instalaciones o administrado por el cliente. Esta característica ayuda a reducir los costos y a mitigar la compleja orquestación y las operaciones 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 muestra los pasos para configurar ECS Anywhere mediante pilas del AWS Cloud Development Kit (AWS CDK).

Requisitos previos y limitaciones

Requisitos previos

Limitaciones

Versiones de producto

  • AWS CDK Toolkit versión 2

  • 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 CloudFormation

  • AWS CDK

  • Amazon ECS Anywhere

  • AWS Identity y Access Management (IAM)

Arquitectura de destino

El siguiente diagrama ilustra una arquitectura de sistema de alto nivel de la configuración de ECS Anywhere que utiliza la AWS CDK con TypeScript, tal como se implementa mediante este patrón.

  1. Al implementar la pila de CDK de AWS, se crea una CloudFormation pila en AWS.

  2. La CloudFormation pila aprovisiona un clúster de Amazon ECS y los recursos de AWS relacionados.

  3. 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 (VM) y registrar la VM como instancia administrada por AWS Systems Manager. 

  4. 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.

  5. 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.

Configuración de ECS Anywhere mediante AWS CDK con TypeScript.

Automatizar y escalar

El GitHub repositorio que se proporciona con este patrón utiliza la CDK de AWS como herramienta de infraestructura como código (IaC) para crear la configuración de esta arquitectura. AWS CDK le ayuda a orquestar los recursos y configurar ECS Anywhere.

Herramientas

Código

El código fuente de este patrón está disponible en el GitHub repositorio de muestras de CDK de Amazon ECS Anywhere. Para clonar y utilizar el repositorio, siga las instrucciones de la siguiente sección.

Epics

TareaDescripciónHabilidades requeridas

Verifique la versión de AWS CDK.

Compruebe la versión del kit de herramientas de AWS CDK mediante el siguiente comando:

cdk --version

Este patrón requiere la versión 2 de AWS CDK. Si tiene una versión anterior de AWS CDK siga las instrucciones de la documentación de AWS CDK para actualizarla.

DevOps ingeniero

Configure las credenciales de AWS.

Para configurar las credenciales, ejecute el comando aws configure y siga las instrucciones:

$aws configure AWS Access Key ID [None]: <your-access-key-ID> AWS Secret Access Key [None]: <your-secret-access-key> Default region name [None]: <your-Region-name> Default output format [None]:
DevOps ingeniero
TareaDescripciónHabilidades requeridas

Clonar el repositorio de código de AWS CDK.

Clona el repositorio de GitHub código de este patrón mediante el comando:

git clone https://github.com/aws-samples/amazon-ecs-anywhere-cdk-samples.git
DevOps ingeniero

Inicie el entorno.

Para implementar la CloudFormation plantilla de AWS en la cuenta y la región de AWS que desee usar, ejecute el siguiente comando:

cdk bootstrap <account-number>/<Region>

Para obtener más información, consulte Proceso de arranque en la documentación de AWS CDK.

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Instale las dependencias de los paquetes y compile TypeScript los archivos.

Instale las dependencias del paquete y compile los TypeScript archivos ejecutando los siguientes comandos:

$cd amazon-ecs-anywhere-cdk-samples $npm install $npm fund

Estos comandos instalan todos los paquetes del repositorio de muestra. 

Importante: Si se muestra algún error acerca de paquetes que faltan, utilice uno de los siguientes comandos:

$npm ci

—o—

$npm install -g @aws-cdk/<package_name>

Para obtener más información, consulte npm ci y npm install en la documentación de npm.

DevOps ingeniero

Compilar el proyecto.

Ejecute el siguiente comando para compilar el código del proyecto:

npm run build

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

Implementar el proyecto.

Para implementar el código del proyecto, ejecute el comando:

cdk deploy
DevOps ingeniero

Verifique la creación y el resultado de la pila.

Abra la CloudFormation consola de AWS en https://console.aws.amazon.com/cloudformation y elija la EcsAnywhereStack pila. La pestaña Salidas muestra los comandos que se deben ejecutar en su máquina virtual externa.

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Configure su máquina virtual mediante Vagrant.

Con fines de demostración, puede usar HashiCorp Vagrant para crear una máquina virtual. Vagrant es una utilidad de código abierto para compilar y mantener entornos de desarrollo de software virtual portátiles. Cree una máquina virtual Vagrant ejecutando el comando vagrant up desde el directorio raíz donde se encuentra Vagrantfile. Para obtener más información, consulte la documentación de Vagrant.

DevOps ingeniero

Registre su máquina virtual como instancia externa.

1. Inicie sesión en la máquina virtual de Vagrant mediante el comando vagrant ssh. Para obtener más información, consulte la documentación de Vagrant.

2. Cree un código de activación y una ID que usará para registrar su máquina virtual en AWS Systems Manager y activar su instancia externa. El resultado de este comando incluye valores ActivationId y ActivationCode

aws ssm create-activation --iam-role EcsAnywhereInstanceRole | tee ssm-activation.json

3. Exporte el ID de activación y los valores del código:

export ACTIVATION_ID=<activation-ID> export ACTIVATION_CODE=<activation-code>

4. Descargar el script de instalación en el servidor ubicado en las instalaciones o en la máquina virtual (VM):

curl -o "ecs-anywhere-install.sh" "https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install-latest.sh" && sudo chmod +x ecs-anywhere-install.sh

5. Ejecute el script de instalación en el servidor ubicado en las instalaciones o en la máquina virtual (VM).

sudo ./ecs-anywhere-install.sh \ --cluster test-ecs-anywhere \ --activation-id $ACTIVATION_ID \ --activation-code $ACTIVATION_CODE \ --region <Region>

Para obtener más información sobre la configuración y el registro de su máquina virtual, consulte Registrar una instancia externa en un clúster en la documentación de Amazon ECS.

DevOps ingeniero

Verifique el estado de ECS Anywhere y de la máquina virtual externa.

Para verificar si su caja virtual está conectada al plano de control de Amazon ECS y en funcionamiento, utilice los siguientes comandos:

aws ssm describe-instance-information aws ecs list-container-instances --cluster $CLUSTER_NAME
DevOps ingeniero
TareaDescripciónHabilidades requeridas

Limpie y elimine recursos.

Después de seguir este patrón, debe eliminar los recursos que ha creado para evitar incurrir en cargos adicionales. Para limpiar, ejecute el comando:

cdk destroy
DevOps ingeniero

Recursos relacionados