Servicios Elastic Container Service (ECS) AWS
Explica: Juan Coloma, Expert DevOps Engineer
Las nubes nos proponen muchos servicios para dar soluciones a los diversos problemas que se presentan en las empresas, o, en su defecto, actualizaciones de su tecnología. Algunos de estos servicios son de tipo Serverless que facilitan el uso e implementación del mismo, y otros que permiten tener la administración más detallada y completa.
Para elegir qué tipo de servicio utilizar se deben considerar varios factores, como por ejemplo: personal capacitado, complejidad de dicha solución entre otros.
Existen varias formas de implementar el cluster para el ECS, los más utilizados son de tipo Fargate y EC2. Fargate nos ofrece administración total desde la nube y EC2 permite tener más control de la configuración por parte del cliente.
En este documento se da a conocer la implementación del servicio ECS de tipo EC2 y sus principales componentes que, en su conjunto, permiten administrar de forma eficiente las versiones de las aplicaciones desplegadas en contenedores.
¿Qué es ECS en AWS y cómo funciona?
Es un servicio de computación en la nube, proporcionado por Amazon Web Services (AWS), que permite a los usuarios ejecutar, escalar y administrar fácilmente aplicaciones en contenedores Docker en la nube.
ECS funciona mediante un cluster de contenedores, que son grupos de instancias de Amazon Elastic Compute (EC2) o Fargate, que se utilizan para ejecutar y gestionar contenedores Docker. Los contenedores son organizados mediante tareas, y cada una de ellas es una definición de uno o más contenedores que se ejecutan en una instancia EC2 del clúster.
ECS se integra con Amazon Elastic Load Balancing, Amazon Virtual Private Cloud y Amazon CloudWatch y herramientas de terceros como por ejemplo registry (permite almacenar, administrar imágenes de contenedores) para proporcionar una solución completa y escalable para la ejecución de contenedores en la nube.
La implementación de Elastic Container Service de tipo EC2 requiere de los siguientes componentes indispensables para una correcta implementación:
- Clúster:
Un clúster de Amazon ECS es una agrupación lógica de tareas o servicios que se ejecutan en una infraestructura registrada dentro de él.
- Servicio:
Proporciona capacidades de balanceo de carga y mantiene el número deseado de tareas en el clúster. En caso de que alguna tarea falle o se detenga, por algún motivo, se encarga de lanzarla nuevamente manteniendo el número de tareas.
- Definición de tareas:
Unidad de trabajo que se ejecuta en el clúster, puede estar compuesta por uno o varios contenedores que se ejecutan juntos o se comunican entre sí para realizar un trabajo específico. En la tarea se pueden especificar valores como imagen del contenedor, recursos de cpu y memoria, tipo de red, puertos nombre y otros parámetros de configuración necesarios para ejecutar la tarea de manera efectiva.
- Tipos de red:
ECS nos proporciona diferentes tipos de red para el despliegue de nuestras aplicaciones las cuales son:
Modo Host: La red del contenedor está vinculada directamente al host subyacente que ejecuta el contenedor.
Modo Bridge: Utiliza un puente de red virtual, para crear una capa entre el host y la red del contenedor.
Modo AwsVpc: Crea y administra una interfaz de red elástica (ENI) para cada tarea, recibiendo su propia dirección IP privada dentro de la VPC.
- Registry imagen Docker:
Mediante permisos de IAM podemos utilizar imágenes ubicadas en ECR o de privados, para ser desplegadas en los contenedores.
- Monitoreo y detección:
Mediante las opciones de la tarea se puede definir un envío de logs de la misma a CloudWatch, para analizar logs o definir métricas y alarmar de acuerdo a la lectura de dicho logs.
¡Ventajas de ECS!
- Escalabilidad: ECS permite escalar de manera fácil y automática los recursos de los contenedores en función de la demanda de la aplicación. Esto significa que puede manejar cargas de trabajo cambiantes sin tener que preocuparse por la infraestructura subyacente.
- Flexibilidad: ECS le permite elegir el tamaño, la capacidad y la ubicación de los contenedores, lo que lo hace ideal para aplicaciones que requieren diferentes niveles de recursos y que necesitan ser ejecutadas en diferentes regiones de AWS.
- Integración con AWS: ECS se integra con otros servicios de AWS, como Elastic Load Balancing, Amazon S3 y Amazon VPC, lo que facilita la configuración de la red y la escalabilidad de los contenedores.
- Control: ECS proporciona herramientas para monitorear y controlar los contenedores, lo que permite a los usuarios ajustar el rendimiento, realizar actualizaciones y solucionar problemas de manera rápida y eficiente.
- Seguridad: ECS proporciona una capa de seguridad adicional a los contenedores, lo que significa que puede aislar aplicaciones y datos confidenciales de otros contenedores y asegurarse de que solo los usuarios autorizados puedan acceder a ellos.
¡Seguridad y protección!
ECS proporciona diversas opciones para garantizar la seguridad de las aplicaciones contenerizadas que se ejecutan en la plataforma.
Es importante recordar que, la seguridad es una responsabilidad compartida entre AWS y el cliente, por lo tanto es fundamental verificar y exponer solo los puertos mínimos necesarios (Security groups) para que nuestra aplicación se ejecute correctamente, además, para mayor seguridad se puede implementar una WebAcl con las reglas necesarias de filtrados de ips, path etc.
Otras medidas de seguridad que se pueden implementar son:
- Control de acceso: ECS permite configurar el acceso a los contenedores a través de roles y políticas de IAM, limitando el acceso a usuarios y grupos autorizados.
- Seguridad en la red: ECS permite configurar una VPC (Virtual Private Cloud) y subredes privadas para aislar los contenedores y controlar el acceso a ellos. Además, se pueden configurar grupos de seguridad para restringir el tráfico de red que ingresa y sale de los contenedores.
- Envío de registros de contenedores a Amazon CloudWatch para su monitoreo y análisis.
- Escaneo de vulnerabilidades: Al momento de trabajar con imágenes de contenedores se pueden escanear con diferentes herramientas, con la finalidad de obtener posibles vulnerabilidades y mitigarlas antes de ser implementadas.
- Encriptación: ECS permite la encriptación de datos mediante el uso de AWS Key Management Service (KMS).
Espero que la información entregada en este artículo te sea de utilidad para comprender y conocer otro servicio de AWS que te permitirá desplegar y administrar tus aplicaciones garantizando eficacia y por supuesto seguridad. No olvides compartir y dejarme tus comentarios o dudas.