Cómo configurar Elastic Container Service (ECS) en AWS
Elastic Container Service es un servicio de orquestación de contenedores totalmente gestionado que proporciona AWS. Es una opción para ejecutar contenedores en AWS. Es compatible con Fargate para proporcionar computación sin servidor para los contenedores. Fargate elimina la necesidad de aprovisionar y gestionar servidores. ECS ayuda a centrarse en la creación y gestión de aplicaciones en lugar de en la infraestructura. Es un servicio de gestión de contenedores rápido y altamente escalable que facilita la ejecución, detención y gestión de contenedores en un clúster.
ECS viene con diferentes modelos de precios. Para conocer sus precios visita la página oficial de AWS aquí.
Terminologías básicas en ECS.
- Clúster ECS: Es una agrupación lógica de tareas o servicios.
- La Definición de la Tarea: Describe uno o más contenedores (hasta un máximo de diez) que forman tu aplicación.
- La Tarea: Es una unidad ejecutable de una definición de tarea.
- El Servicio: Se utiliza para ejecutar y mantener un número determinado de instancias de una definición de tarea.
En este artículo, crearemos un cluster ECS y desplegaremos una aplicación Nginx de ejemplo en él. Crearemos un cluster de prueba para entender la configuración del cluster. Te aconsejamos que crees un clúster de producción con una configuración personalizada según tus necesidades.
Requisitos previos
- Cuenta de AWS(Crear si no tienes una).
- Conocimiento básico de la función IAM (Haz clicaquí para aprender sobre IAM).
- Conocimiento básico de la VPC (Haz clicaquí para conocer la VPC)
¿Qué vamos a hacer?
- Iniciar sesión en AWS(Crear si no tienes).
- Crea un Cluster
- Crea un rol IAM de ejecución de tareas
- Crea una Definición de Tarea
- Crea un Servicio
- Accede a la Tarea que hemos creado
- Eliminar el Cluster
Iniciar sesión en AWS
Haz clicaquí para ir a la página de inicio de sesión de AWS e introduce tus credenciales.
Una vez que entres en la cuenta, verás la Consola de Administración de AWS principal como se indica a continuación.
Crear un clúster
Para ir a ECS, haz clic en servicios en la parte superior izquierda de la pantalla y en Contenedores, haz clic en Elastic Container Service.
Verás el panel principal de ECS como se indica a continuación. Haz clic en «Clusters» en el panel izquierdo.
Como no he creado ningún clúster no vemos nada en la lista. Crea tu primer clúster haciendo clic en el botón «Crear clúster».
Aquí, selecciona la opción «EC2 Linux + Networking» y haz clic en el botón «Paso siguiente».
Dale un nombre al cluster, selecciona el tipo de instancia EC2. Se crearán instancias EC2 en el cluster del tipo que seleccionemos. Selecciona el modelo de aprovisionamiento de las instancias EC2 que se van a crear. Especifica otras configuraciones según tus necesidades.
Puedes crear una nueva VPC o elegir una ya existente. Si no conoces la VPC y la red y quieres saber más sobre ella, te recomiendo que leaseste artículo.
Puedes especificar etiquetas si quieres o puedes dejarlo vacío ya que es una configuración opcional. Haz clic en el botón «Crear» que creará un clúster para ti.
Esto tardará unos minutos y una vez creado el clúster podrás ver el estado como «Estado del ECS -3 de 3.. » en la misma página. Haz clic en el botón «Ver clúster» para ir al clúster.
Crear un rol IAM de ejecución de tareas
Antes de continuar con la configuración, necesitarás un rol que se utilizará para la ejecución de tareas. Así que ve a IAM y crea un nuevo rol con la siguiente política. Haz clicaquí si no conoces IAM y quieres saber más sobre él.
Crea un Rol: ecsTaskExecutionRole con la siguiente política.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }
Una vez que hayas creado un Rol, lo verás de la siguiente manera en la consola de IAM.
Crear una Definición de Tarea
Si ya tienes listo el Rol IAM, ahora puedes proceder a crear una definición de tarea.
Hasta este momento, sólo tienes un clúster vacío que no tiene tu aplicación en contenedor ejecutándose en él.
El siguiente paso es crear una definición de tarea. Para crear tu primera definición de tarea, haz clic en «Definiciones de tarea» en el panel de la izquierda, debajo de «Clusters».
Aquí haz clic en el botón «Crear nuevas definiciones de tarea».
En esta página selecciona, el tipo de lanzamiento como «EC2 Y luego haz clic en el botón de paso «Siguiente»».
¿Recuerdas que hemos creado un rol IAM en el paso anterior? Ahora, tenemos que especificar el rol que hemos creado bajo el rol de Tarea. Dale un nombre a la definición de la tarea.
Cuando te desplaces un poco hacia abajo verás el botón «Añadir contenedor», haz clic en él y verás que aparece una nueva pantalla como la siguiente.
En esta pantalla da un nombre al contenedor, especifica la imagen que se utilizará para el contenedor. También puedes especificar los límites de memoria, la asignación de puertos y las comprobaciones de salud. Si has terminado la configuración, haz clic en el botón «Añadir».
Especifica la «Memoria de la tarea» y la «CPU de la tarea» que utilizará la tarea.
Ahora que ya tienes la configuración básica y obligatoria para la tarea, haz clic en el botón «Crear» que creará una definición de tarea.
Verás el mensaje «Definición de tarea creada con éxito».
Crear un servicio
Hasta este punto, tenemos un cluster y una definición de tarea. El siguiente paso es crear un servicio. Vuelve al cluster que hemos creado y en la pestaña Servicio haz clic en el botón Crear para crear un Servicio.
Elige el tipo de lanzamiento como EC2, selecciona la definición de tarea que hemos creado, puedes elegir el nombre del Cluster en la opción desplegable, incluso el nombre del servicio que estamos creando, especifica el número de tareas como 2 que creará 2 copias de tu aplicación.
Mantén el resto de la configuración como está en despliegues y colocación de tareas. Las etiquetas son opcionales, por lo que no es obligatorio especificarlas. Haz clic en el botón «Siguiente paso» para continuar.
Si tienes algún equilibrador de carga, puedes seleccionarlo para dirigir el tráfico externo a tu aplicación a través de él. Haz clic en el botón «Siguiente paso».
Si no quieres que tu servicio sea escalado entonces procede con la configuración por defecto como «No ajustar la cuenta deseada del servicio».
Revisa la configuración que acabamos de hacer para el servicio que se va a crear y haz clic en el botón «Crear servicio».
Verás el estado como «Estado del Servicio ECS- 1 de 1 completado» si el servicio se ha creado con éxito.
Accede a la Tarea que hemos creado
Vuelve al clúster y en la pestaña «Tareas» ahora puedes ver que se están ejecutando 2 tareas. Estas tareas contienen tu aplicación.
Haz clic en una de las tareas para saber más sobre ella.
Como no hemos especificado ningún equilibrador de carga, no podemos acceder a la aplicación desde el mundo externo en un enlace específico. Por ello, necesitaremos acceder a nuestras tareas en sus enlaces externos individuales.
En Enlaces de red, puedes encontrar el enlace externo de la tarea. Esta tarea en particular sólo será accesible desde el enlace disponible aquí. Copia el enlace para comprobar si la aplicación, Nginx, que habíamos especificado en la definición de la tarea está en funcionamiento.
Ve al navegador y pulsa el enlace que hemos copiado en el paso anterior. Podrás ver la página por defecto de Nginx. Esto significa que nuestra aplicación, Nginx, se ha desplegado con éxito.
Eliminar el clúster
Si ya no necesitas tu clúster, puedes eliminarlo con un solo clic. Vuelve al clúster y haz clic en el botón Eliminar clúster».
Confirma la acción de borrado introduciendo «borrarme» en el campo de texto y haz clic en el botón «Borrar». Esto eliminará permanentemente el clúster y una vez eliminado no podrás recuperarlo. Así que ten cuidado al borrar el clúster si trabajas con aplicaciones en tiempo real.
Conclusión
En este artículo hemos visto los pasos para crear un clúster, una definición de tarea y un servicio. Los pasos que vimos se pueden utilizar para crear un cluster de prueba. Si quieres crear un cluster con la aplicación en tiempo real, necesitas ser más específico con las configuraciones que vimos.