en Amazon Elastic Container Service (Amazon ECS)

Amazon Elastic Container Service (Amazon ECS) es el servicio de Amazon Web Services que se utiliza para ejecutar aplicaciones de Docker en un clúster escalable. En este tutorial, aprenderá cómo ejecutar una aplicación de muestra compatible con Docker en un clúster de Amazon ECS tras un balanceador de carga, probar la aplicación de muestra y eliminar los recursos para evitar cargos.

Todas las operaciones que se explican en este tutorial pueden realizarse con la capa gratuita.

Administración de los recursos de AWS

Inicio de sesión en la consola

El asistente de la primera ejecución de Amazon ECS le guiará a través de la creación de un clúster y la implementación de una aplicación web de muestra. En este paso, accederá a la consola de Amazon ECS e iniciará el asistente.



b. Con Amazon ECS, tiene la opción de usar Amazon Elastic Container Registry (Amazon ECR) para crear un repositorio de imágenes y enviar una imagen a este como parte del asistente de la primera ejecución (véase la imagen de la derecha). En la actualidad, esta opción se encuentra disponible en regiones determinadas. 

  • Si no aparece ninguna opción de Amazon ECR, vaya al paso 2.
  • Si aparecen opciones de Amazon ECR, desmarque la casilla junto a Deploy a sample application onto an Amazon ECS Cluster y seleccione Continue.
deploy-docker-container-1

(Haga clic para ampliar).

deploy-docker-container-1

Una definición de tarea es una especie de plano de la aplicación. En este paso, especificará una definición de tarea de modo que Amazon ECS sepa qué imagen Docker debería usar para los contenedores, cuántos contenedores utilizar como parte de la tarea y la asignación de recursos de cada contenedor.


La definición de tarea incorpora valores de configuración por defecto.

  • Examine los valores por defecto y seleccione Next Step.

Si prefiere modificar la configuración o desea obtener más información, consulte Parámetros de la definición de tarea.

deploy-docker-container-2

(Haga clic para ampliar).

deploy-docker-container-2

Ahora que ha creado una definición de tarea, configurará el servicio de Amazon ECS. Un servicio se implementa y mantiene copias de la definición de tarea en su clúster. Por ejemplo, al ejecutar una aplicación como servicio, Amazon ECS recuperará automáticamente cualquier tarea que se haya detenido y mantendrá el número de copias que especifique.


a. Configure las opciones de servicio:

  • Nombre de servicio: El nombre por defecto sample-webapp es una aplicación "Hello World" basada en la web proporcionada por AWS. Está diseñada para ejecutarse indefinidamente, de modo que, al ejecutarla como servicio, se reiniciará si la tarea llega a encontrarse en mal estado o se detiene de forma inesperada.
  • Cantidad deseada de tareas: Para mantenerse dentro de la capa gratuita de AWS, deje el valor por defecto, 1. Se creará una copia de su tarea.
deploy-docker-container-3

(Haga clic para ampliar).

deploy-docker-container-3

b. Elastic Load Balancing: Puede utilizar un balanceador de carga con su servicio. Amazon ECS puede crear un balanceador de carga de Elastic Load Balancing (ELB) para distribuir el tráfico entre las instancias de contenedor en las que se implemente su tarea.

  • Nombre de contenedor: puerto del host: seleccione Simple-app:80.
  • Para la aplicación de muestra, se configuran los valores por defecto ELB listener protocol, ELB listener port, and ELB health check . Para obtener más información sobre la configuración de balanceo de carga, consulte Balanceo de carga del servicio.
deploy-docker-container-3b

(Haga clic para ampliar).

deploy-docker-container-3b

c. Antes de adjuntar un balanceador de carga a un servicio de Amazon ECS, debe crear una función de Identity and Access Management (IAM) para que la usen sus servicios. Eso permitirá a Amazon ECS realizar llamadas a las API de Amazon EC2 y Elastic Load Balancing para registrar y eliminar el registro de instancias con sus balanceadores de carga.

  • Si no tiene ya una función de IAM de servicio, Amazon ECS creará una con el nombre ecsServiceRole.
  • Si ya posee una función de servicio de Amazon ECS, selecciónela en el menú desplegable.
deploy-docker-container-3c

(Haga clic para ampliar).

deploy-docker-container-3c

d. Examine los ajustes y seleccione Next Step.

deploy-docker-container-3d

(Haga clic para ampliar).

deploy-docker-container-3d

Sus tareas de Amazon ECS se ejecutan en un clúster, que es el conjunto de instancias de contenedor que ejecutan el agente de contenedores de Amazon ECSEn este paso, configurará el clúster, examinará los ajustes de seguridad y configurará las funciones de IAM. 


a. Utilice los ajustes de configuración que se indican más abajo:

  • Nombre de clúster: Introduzca sample-cluster.
  • Tipo de instancia de EC2: El tipo de instancia por defecto, t2.micro, le permitirá mantenerse dentro de la capa gratuita. Los tipos de instancias con más recursos de CPU y memoria pueden administrar más tareas. Para obtener más información sobre los distintos tipos de instancias, consulte Tipos de instancias de Amazon EC2.
  • Número de instancias: Deje el valor por defecto, 1 para implementar una instancia de Amazon EC2 en su clúster a fin de que se coloquen las tareas en ella. Cuantas más instancias tenga en su clúster, más tareas podrá colocar.  
  • Par de claves: Se necesita un par de claves para usar el protocolo SSH más adelante en sus instancias. Puede continuar seleccionando None – unable to SSH, seleccionando un par de claves existente o creando uno en la consola de Amazon EC2. 
deploy-docker-container-5a

(Haga clic para ampliar).

deploy-docker-container-5a

b. (Opcional) Grupo de seguridad: El valor por defecto (Anywhere) permite el acceso desde todo Internet. También puede elegir un bloqueo CIDR que restrinja el acceso a sus instancias.

deploy-docker-container-5b

(Haga clic para ampliar).

deploy-docker-container-5b

c. Función de IAM de la instancia de contenedor:

  • Si no tiene una función de IAM, el asistente de Amazon ECS creará una.
  • Si ya posee una función de IAM de instancia de contenedor, selecciónela en el menú desplegable.
deploy-docker-container-5c

(Haga clic para ampliar).

deploy-docker-container-5c

d. Seleccione Review and Launch.

deploy-docker-container-5d

(Haga clic para ampliar).

deploy-docker-container-5d

En los pasos anteriores, ha configurado la definición de tarea (que es similar al plano de la aplicación), el servicio de Amazon ECS (que implementa y mantiene copias de la definición de tarea) y el clúster (que es el conjunto de instancias de contenedor que ejecuta el agente de contenedores). En este paso, examinará, implementará y verá los recursos que cree.


a. Tendrá una última oportunidad de examinar la definición de tarea, la configuración de la tarea y las configuraciones de los clústeres antes de realizar la implementación.

  • Seleccione Launch instance & run service
deploy-docker-container-6

(Haga clic para ampliar).

deploy-docker-container-6

b. Se encuentra en la página Launch Status, que muestra el estado de su implementación y describe cada paso del proceso. 

  • Una vez completada la implementación, seleccione View service.
deploy-docker-container-7

(Haga clic para ampliar).

deploy-docker-container-7

En este paso, comprobará que la aplicación de muestra está activa dirigiendo su navegador al nombre DNS del balanceador de carga.


a. En la página sample-webapp, haga clic en el nombre de su balanceador de carga.

deploy-docker-container-10

(Haga clic para ampliar).

deploy-docker-container-10

b. Ahora va a probar la aplicación de muestra:

  • Copie el nombre ELB DNS.
  • Péguelo en una nueva ventana del navegador.
  • Haga clic en la tecla Intro del teclado para ver la aplicación de muestra (en este caso, un sitio web estático).
deploy-docker-container-12a

(Haga clic para ampliar).

deploy-docker-container-12a

A lo largo de este tutorial, ha implementado tres recursos: un clúster de Amazon ECS, una instancia de Amazon EC2 y un balanceador de carga. En este paso, limpiará todos sus recursos para evitar cargos no deseados.


a. Vuelva a la página de la consola de Amazon ECS.

  • Haga clic en el nombre del clúster (sample-cluster).
deploy-docker-container-13

(Haga clic para ampliar).

deploy-docker-container-13

b. Selecione la casilla junto a sample-webapp y haga clic en Update.

deploy-docker-container-15

(Haga clic para ampliar).

deploy-docker-container-15

c. Para asegurarse de que no elimina un servicio que tenga tareas activas, deberá detener todas las tareas antes de que Amazon ECS elimine un servicio. 

  • Establezca el número de tareas en 0 y seleccione Update Service.
  • Cuando haya actualizado el servicio, seleccione Delete.
deploy-docker-container-14

(Haga clic para ampliar).

deploy-docker-container-14

d. Elimine las instancias de EC2 que se han implementado con el clúster:

  • Acceda a la consola de Amazon EC2.
  • En el panel de la izquierda, seleccione Instances.
  • Seleccione la casilla junto a la instancia nombrada ECS Instance – EC2ContainerService-default.
  • Seleccione Actions > Instance State > Terminate.

 

 

deploy-docker-container-17

(Haga clic para ampliar).

deploy-docker-container-17

e. Elimine los balanceadores de carga:

  • En el panel de la izquierda, seleccione Load Balancers.
  • Seleccione la casilla junto al balanceador de carga que ha creado para su servicio (debería comenzar por EC2Contai-EcsElast). 
  • Haga clic con el botón derecho del ratón y seleccione Delete.

 

deploy-docker-container-19a

(Haga clic para ampliar).

deploy-docker-container-19a

¡Enhorabuena! Aprendió a configurar, implementar y eliminar una aplicación compatible con Docker en Amazon Container Elastic Service (Amazon ECS). Amazon ECS es un servicio de administración de contenedores de alto desempeño y escalabilidad compatible con los contenedores de Docker que le permite ejecutar fácilmente aplicaciones distribuidas en un clúster administrado de instancias de Amazon EC2.

Ahora que ha aprendido a configurar, implementar y eliminar una aplicación compatible con Docker en Amazon EC2, puede avanzar al siguiente tutorial, en el que aprenderá cómo crear un registro de Docker para almacenar sus imágenes de contenedor. Creará una imagen de Docker, la enviará a un repositorio y la utilizará para implementar una aplicación en Amazon EC2.

Crear un registro de Docker

No