Implementación de contenedores Docker en AWS ECS Fargate
Esta documentación proporciona una guía paso a paso sobre cómo crear una definición de tarea y un servicio, adjuntarlo a un balanceador de carga de aplicaciones (ALB) para publicarlo en Internet.
Tabla de contenido
- [Requisitos previos](#requisitos previos)
- Crear una definición de tarea
- Crear un servicio ECS
- Repara tus controles de salud
- Revise su solicitud
Descripción general
Aquí hay un diagrama que explica la arquitectura que seguiremos:
Puede ver que nuestros contenedores acoplables se introducen en AWS a través de la definición de tarea y se convierten en un servicio. Para que los usuarios accedan a nuestros servicios, simplemente debemos agregar un nuevo grupo objetivo a nuestro balanceador de carga existente.
Requisitos previos
Antes de continuar con estos pasos, asegúrese de tener lo siguiente:
- Una cuenta de AWS con los permisos necesarios para crear recursos ECS, agregar grupos objetivo y modificar balanceadores de carga.
- Haber creado un contenedor acoplable a partir de nuestra guía anterior y publicarlo en DockerHub.
Crear una definición de tarea
- En AWS, navegue hasta Amazon Elastic Container Service > Definición de tarea > Crear nueva definición de tarea.
- Nombre de la tarea: elija algo descriptivo como:
metadata-api-task
opopulation-dash-task
- Contenedor: cree una definición de contenedor
- Nombre del contenedor: ej.
contenedor-api-metadatos
- URI de imagen: su URI de imagen de DockerHub, por ejemplo.
gbadsinformatics/meta-api:último
- Mapeo de puertos: agregue aquí sus puertos expuestos, ej. TCP en el puerto 80 (http)\ Asegúrate de utilizar http; nuestro balanceador de carga agregará https más adelante por usted.
- Variables de entorno: estas son las variables a las que se hace referencia en los contenedores acoplables. Para los paneles, usamos
DASH_BASE_URL
para establecer la ruta URL para el panel como/dashboards/population
. Es necesario hacer referencia a estas variables en su código. No funcionará automáticamente. Otras aplicaciones que tenemos utilizan variables de entorno para pasar credenciales secretas. - Configurar el entorno: recursos
- Cambie los recursos: normalmente cada contenedor lo configuramos en 1 vCPU y 2 GiB de memoria.
- Rol de tarea: establecido en
ecsTaskExecutionRole
- Mantenga el almacenamiento y el registro como predeterminados
- Finalmente revise y cree su definición de tarea.
Crear un servicio ECS
- Regrese al clúster y haga clic en crear un nuevo servicio.
- Configuración de implementación:
- Asegúrese de tener un servicio seleccionado.
- Seleccione Familia y elija su nueva definición de tarea.
- Nombre del servicio: ex
metadata-api-service
- Redes:
- Asegúrese de que esté seleccionada la VPC predeterminada y que las 3 subredes estén seleccionadas.
- Elija el grupo de seguridad
- eliminar "predeterminado"
- agregue
GBADs-Dashboard-LB-SecurityGroup
(a pesar del nombre, esto se usa para todos los contenedores, no solo para los paneles)
- Equilibrio de carga:
- Seleccione "Usar un equilibrador de carga existente".
- Elija
Dashboards-ALB
(Esto se usa para todos los contenedores, no solo para los paneles) - Seleccione "Usar un oyente existente".
- Elija
443: HTTPS
: aquí es donde se agrega https. - Seleccione "Crear un nuevo grupo objetivo".
- Nombre del grupo objetivo: algo así como
metadata-api-target-group
- Patrón de ruta: cambie esto a la URL base de su aplicación pero agregue un '*'. \
Por ejemplo,
/dashboards/population*
, esto reenvía todo el tráfico con este patrón a nuestro nuevo contenedor. - Orden de evaluación: desplácese por las reglas existentes y seleccione el siguiente número en orden.\
A veces tenemos aplicaciones con patrones superpuestos como
/dashboards/population
y/dashboards/population-v2
. Aquí es importante que la URL más larga tenga prioridad en el orden de evaluación (la URL más larga necesita un número menor). Es posible que tengas que cambiar algunas reglas para hacer espacio. - Ruta de verificación de estado: esta ruta se utiliza para verificar el estado de su solicitud. Esta suele ser la URL base de su aplicación o el sitio de documentos de una API. Como
/dashboards/population
o/api/docs
- Haga clic en crear.
Corrija sus controles de salud
Antes de verificar su servicio, debemos realizar un cambio en nuestro nuevo grupo objetivo para aceptar más códigos de retorno HTTP.
- Vaya a EC2 > Grupos objetivo > su-nuevo-grupo-objetivo > Comprobaciones de estado > Editar
- Abra la configuración avanzada de control de salud.
- Cambie los códigos de éxito a
200-399
- Guardar cambios
Verifique su aplicación
Ahora puede ir a www.gbadske.org/[su URL base aquí]
como www.gbadske.org/dashboards/population
para verificar el estado de su solicitud.