Saltar al contenido

¿Cómo puedo realizar los despliegues azul-verde para los servicios alojados en Amazon ECS?

7 minutos de lectura
0

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:

  1. Abre la consola de AWS Identity and Access Management (IAM).
  2. En el panel de navegación, selecciona Roles.
  3. Elige Create role (Crear rol).
  4. 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.
  5. 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.
  6. Selecciona Next (Siguiente).
  7. En Role name (Nombre del rol), escribe ecsCodeDeployRole.
  8. (Opcional) Añade etiquetas.
  9. 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:

  1. Abre la consola de Amazon EC2.
  2. En el panel de navegación, en la sección Load Balancing (Equilibrio de carga), elige Load Balancers (Equilibradores de carga).
  3. Selecciona Create Load Balancer (Crear un equilibrador de carga).
  4. 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).
  5. En Name (Nombre), introduce un nombre para el equilibrador de carga.
  6. 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.
  7. En la sección Security groups (Grupos de seguridad), selecciona el hipervínculo “Create a new security group” (Crear un nuevo grupo de seguridad).
  8. En Security group name (Nombre del grupo de seguridad), escribe Sample Security-group.
  9. Elige Add Rule (Agregar regla).
  10. En Port Range (Intervalo de puertos), introduce 8080. En Source (Origen), introduce 0.0.0.0/0.
  11. Selecciona Create Security Group (Crear grupo de seguridad).
  12. 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.
  13. En la sección Listeners and Routing (Agentes de escucha y direccionamiento), selecciona el hipervínculo “Create Target Group” (Crear grupo de destino).
  14. En Tipo de destino, elige IP addresses (Direcciones IP).
  15. En Target group (Grupo de destino), introduce un nombre para el grupo de destino.
  16. Selecciona Next (Siguiente) y, a continuación, registra tu grupo de destino y establece la IP.
  17. Selecciona Create Target Group (Crear grupo de destino).

Creación de una definición de tarea

Sigue estos pasos:

  1. Abre la consola de Amazon ECS.
  2. En el panel de navegación, selecciona Task Definitions (Definiciones de tareas).
  3. Elige Create new Task Definition (Crear una nueva definición de tarea).
  4. Elige Fargate y, a continuación, Next step (Paso siguiente).
  5. 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:

  1. Abre la consola de Amazon ECS.
  2. En la sección Amazon ECS del panel de navegación, selecciona Clusters (Clústeres) y, a continuación, elige tu clúster.
  3. En la pestaña Services (Servicios), elige Create (Crear) para crear un servicio.
  4. En la sección Environment (Entorno), selecciona Launch type (Tipo de lanzamiento) y, a continuación, selecciona FARGATE.
  5. En Task Definition (Definición de tarea), selecciona la definición de tarea que creaste en la sección anterior.
  6. En Service name (Nombre del servicio), introduce un nombre para el servicio. Por ejemplo: Sample-Website.
  7. En Number of tasks (Cantidad de tareas), introduce el número de tareas que deseas que ejecute el servicio.
  8. 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]).
  9. En Service role for CodeDeploy (Rol de servicio para CodeDeploy), elige el rol de servicio ecsCodeDeployRole que creaste anteriormente.
  10. En la sección Networking (Redes), elige la VPC y las subredes del clúster, así como el grupo de seguridad que creaste anteriormente.
  11. 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).
  12. En Load balancer name (Nombre del equilibrador de carga), selecciona el equilibrador de carga que creaste anteriormente.
  13. En la sección Listeners (Agentes de escucha), para Production listener port (Puerto del agente de escucha de producción), selecciona 80:HTTP.
  14. Selecciona la casilla Add a Test listener (Agregar un oyente de prueba).
  15. 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.
  16. 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.
  17. 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.
  18. 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:

  1. Abre la consola de Amazon ECS.

  2. En el panel de navegación, selecciona Task Definitions (Definiciones de tareas).

  3. 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"
    }
  4. 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.

  5. En la pestaña Services (Servicios), selecciona el servicio Amazon ECS y, a continuación, elige Update (Actualizar).

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

  7. Selecciona Update (Actualizar).

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

OFICIAL DE AWSActualizada hace 2 años