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.

  1. Clúster ECS: Es una agrupación lógica de tareas o servicios.
  2. La Definición de la Tarea: Describe uno o más contenedores (hasta un máximo de diez) que forman tu aplicación.
  3. La Tarea: Es una unidad ejecutable de una definición de tarea.
  4. 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

  1. Cuenta de AWS(Crear si no tienes una).
  2. Conocimiento básico de la función IAM (Haz clicaquí para aprender sobre IAM).
  3. Conocimiento básico de la VPC (Haz clicaquí para conocer la VPC)

¿Qué vamos a hacer?

  1. Iniciar sesión en AWS(Crear si no tienes).
  2. Crea un Cluster
  3. Crea un rol IAM de ejecución de tareas
  4. Crea una Definición de Tarea
  5. Crea un Servicio
  6. Accede a la Tarea que hemos creado
  7. 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.

Página de acceso

Una vez que entres en la cuenta, verás la Consola de Administración de AWS principal como se indica a continuación.

Consola de administración de AWS

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.

Ir a ECS

Verás el panel principal de ECS como se indica a continuación. Haz clic en «Clusters» en el panel izquierdo.

Tablero de mandos del ECS

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

Crear un clúster

Aquí, selecciona la opción «EC2 Linux + Networking» y haz clic en el botón «Paso siguiente».

Selecciona la plantilla del clúster

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.

Configurar el clúster

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.

Configurar la red del clúster

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.

Crear un clúster

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.

Creación de un clúster con éxito

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.

Función 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».

Visión general del clúster

Aquí haz clic en el botón «Crear nuevas definiciones de tarea».

Crear una definición de tarea

En esta página selecciona, el tipo de lanzamiento como «EC2 Y luego haz clic en el botón de paso «Siguiente»».

Selecciona el tipo de lanzamiento

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

Configurar 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».

Añade un contenedor

Especifica la «Memoria de la tarea» y la «CPU de la tarea» que utilizará la tarea.

Especifica los recursos

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.

Crear una tarea

Verás el mensaje «Definición de tarea creada con éxito».

Creación de tareas 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.

Visión general del clúster

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.

Configurar un servicio

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.

Configurar un servicio

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

Configurar un servicio

Si no quieres que tu servicio sea escalado entonces procede con la configuración por defecto como «No ajustar la cuenta deseada del servicio».

Establece el ASG si es necesario

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

Revisar y crear un Servicio

Verás el estado como «Estado del Servicio ECS- 1 de 1 completado» si el servicio se ha creado con éxito.

Creación de servicios 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.

Comprueba las tareas

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.

Obtener un enlace externo de la tarea

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.

Accede a la tarea

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.

Eliminar la tarea

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.

También te podría gustar...