¿Cómo puedo realizar los despliegues azul-verde para los servicios alojados en Amazon ECS?
Quiero realizar un despliegue azul-verde para los servicios alojados en Amazon Elastic Container Service (Amazon ECS).
Descripción corta
Antes de seguir los pasos para realizar un despliegue azul-verde, asegúrate de tener lo siguiente:
Resolución
Creación de un rol de servicio de IAM
Para poder desplegar el tipo azul-verde para AWS CodeDeploy con Amazon ECS, el servicio CodeDeploy debe tener permisos para actualizar el servicio ECS en tu nombre. Para conceder estos permisos, sigue estos pasos:
- Abre la consola de AWS Identity and Access Management (IAM).
- En el panel de navegación, selecciona Roles.
- Elige Create role (Crear rol).
- En la sección Select type of trusted entity (Seleccionar el tipo de entidad de confianza), elige AWS service (Servicio de AWS) y, a continuación, CodeDeploy.
- En la sección Select your use case (Seleccionar el caso de uso), elija CodeDeploy - ECS (CodeDeploy: ECS) y, a continuación, Next (Siguiente).
Nota: Mantén la política ** AWSCodeDeployRoleForECS** predeterminada. Esta política incluye los permisos que CodeDeploy necesita para interactuar correctamente con Amazon ECS y otros servicios. - Selecciona Next (Siguiente).
- En Role name (Nombre del rol), escribe ecsCodeDeployRole.
- (Opcional) Añade etiquetas.
- Elige Create role (Crear rol).
Creación del equilibrador de carga de aplicación
Sigue estos pasos para crear el equilibrador de carga de aplicación:
- Abre la consola de Amazon EC2.
- En el panel de navegación, en la sección Load Balancing (Equilibrio de carga), elige Load Balancers (Equilibradores de carga).
- Selecciona Create Load Balancer (Crear un equilibrador de carga).
- En la sección Select load balancer type (Seleccionar tipo de equilibrador de carga), en Application Load Balancer (Equilibrador de carga de aplicación), elige Create (Crear).
- En Name (Nombre), introduce un nombre para el equilibrador de carga.
- En la sección Network Mapping (Mapeo de red), selecciona la VPC en la que se creó el clúster de Amazon ECS. A continuación, selecciona dos subredes con acceso a Internet.
- En la sección Security groups (Grupos de seguridad), selecciona el hipervínculo “Create a new security group” (Crear un nuevo grupo de seguridad).
- En Security group name (Nombre del grupo de seguridad), escribe Sample Security-group.
- Elige Add Rule (Agregar regla).
- En Port Range (Intervalo de puertos), introduce 8080. En Source (Origen), introduce 0.0.0.0/0.
- Selecciona Create Security Group (Crear grupo de seguridad).
- Actualiza los grupos de seguridad en la vista de la página Load Balancer (Equilibrador de carga) y, a continuación, selecciona el grupo de seguridad recién creado.
- En la sección Listeners and Routing (Agentes de escucha y direccionamiento), selecciona el hipervínculo “Create Target Group” (Crear grupo de destino).
- En Tipo de destino, elige IP addresses (Direcciones IP).
- En Target group (Grupo de destino), introduce un nombre para el grupo de destino.
- Selecciona Next (Siguiente) y, a continuación, registra tu grupo de destino y establece la IP.
- Selecciona Create Target Group (Crear grupo de destino).
Creación de una definición de tarea
Sigue estos pasos:
- Abre la consola de Amazon ECS.
- En el panel de navegación, selecciona Task Definitions (Definiciones de tareas).
- Elige Create new Task Definition (Crear una nueva definición de tarea).
- Elige Fargate y, a continuación, Next step (Paso siguiente).
- Configura la definición de la tarea y, a continuación, elige Create (Crear).
En el siguiente ejemplo de definición de tarea se utiliza el tipo de lanzamiento de AWS Fargate y una imagen de NGINX de Docker Hub:
Nota: Sustituye el valor de account_ID por tu propio número de cuenta en este ejemplo y en el siguiente.
{ "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "sample-website", "image": "nginx:latest", "essential": true, "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ] } ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "cpu": "256", "memory": "512", "family": "sample-website" }
Creación de un servicio de Amazon ECS
Sigue estos pasos:
- Abre la consola de Amazon ECS.
- En la sección Amazon ECS del panel de navegación, selecciona Clusters (Clústeres) y, a continuación, elige tu clúster.
- En la pestaña Services (Servicios), elige Create (Crear) para crear un servicio.
- En la sección Environment (Entorno), selecciona Launch type (Tipo de lanzamiento) y, a continuación, selecciona FARGATE.
- En Task Definition (Definición de tarea), selecciona la definición de tarea que creaste en la sección anterior.
- En Service name (Nombre del servicio), introduce un nombre para el servicio. Por ejemplo: Sample-Website.
- En Number of tasks (Cantidad de tareas), introduce el número de tareas que deseas que ejecute el servicio.
- En la sección Deployment options (Opciones de implementación), selecciona Blue/green deployment (powered by AWS CodeDeploy) (Implementación azul-verde [con tecnología de AWS CodeDeploy]).
- En Service role for CodeDeploy (Rol de servicio para CodeDeploy), elige el rol de servicio ecsCodeDeployRole que creaste anteriormente.
- En la sección Networking (Redes), elige la VPC y las subredes del clúster, así como el grupo de seguridad que creaste anteriormente.
- En la sección Load balancing (Equilibrio de carga), para Load balancer (Equilibrador de carga), elige Application Load Balancer (Equilibrador de carga de aplicación).
- En Load balancer name (Nombre del equilibrador de carga), selecciona el equilibrador de carga que creaste anteriormente.
- En la sección Listeners (Agentes de escucha), para Production listener port (Puerto del agente de escucha de producción), selecciona 80:HTTP.
- Selecciona la casilla Add a Test listener (Agregar un oyente de prueba).
- En Test listener port (Puerto de agente de escucha de prueba), elige Create new (Crear nuevo) y, a continuación, introduce 8080 como puerto de agente de escucha.
- En la sección Target groups (Grupos de destino), en Target group 1 name (Nombre del grupo de destino 1), elige el grupo de destino que creaste al crear el equilibrador de carga.
- En Target group 2 name (Nombre del grupo de destino 2), crea un nuevo grupo de destino en la consola de Amazon ECS con el nombre sample-website-tg-2.
- Selecciona Create (Crear).
Ahora puedes ver el nuevo servicio que creaste con una tarea en ejecución.
Verifica que el despliegue azul-verde de Amazon ECS funcione correctamente
Después de crear el servicio Amazon ECS azul/verde, crea una ** nueva revisión de la definición de tarea** con los cambios y, a continuación, actualiza el servicio Amazon ECS. Esta acción crea un despliegue en la consola de CodeDeploy.
Sigue estos pasos para verificar que el despliegue funcione:
-
Abre la consola de Amazon ECS.
-
En el panel de navegación, selecciona Task Definitions (Definiciones de tareas).
-
Selecciona la definición de tarea, elige Create new revision (Crear una nueva revisión) y, a continuación, Create (Crear).
Nota: En el ejemplo siguiente, la propiedad image se actualiza para usar httpd:2.4.{ "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "sample-website", "image": "httpd:2.4", "essential": true, "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ] } ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "cpu": "256", "memory": "512", "family": "sample-website" } -
En el panel de navegación, selecciona Clusters (Clústeres) y, a continuación, elige el clúster en el que desplegaste el servicio Amazon ECS.
-
En la pestaña Services (Servicios), selecciona el servicio Amazon ECS y, a continuación, elige Update (Actualizar).
-
En la sección Deployment configuration (Configuración de implementación), para Task Definition (Definición de tarea), elige la última revisión que creaste en el paso 3.
-
Selecciona Update (Actualizar).
-
En la pestaña Deployments (Implementaciones), en la columna Deployment Id (ID de implementación), elige el ID del despliegue para ver tu despliegue de CodeDeploy.
- Temas
- Developer Tools
- Etiquetas
- AWS CodeDeploy
- Idioma
- Español
Vídeos relacionados


Contenido relevante
preguntada hace 9 meses
preguntada hace un año
preguntada hace un año
OFICIAL DE AWSActualizada hace 2 años