Creación de una implementación canario de Amazon ECS
Al utilizar las implementaciones canario de Amazon ECS, puede cambiar un pequeño porcentaje del tráfico a la nueva revisión de servicio (la revisión “canario”). Valide la implementación y, a continuación, transfiera el tráfico restante a la vez tras un intervalo específico. Este enfoque le permite probar la nueva funcionalidad con un riesgo mínimo antes de realizar la implementación completa.
Requisitos previos
Realice las siguientes operaciones antes de iniciar una implementación canario.
-
Configure los permisos adecuados.
-
Para obtener información acerca de los permisos de ELB, consulte Rol de IAM de infraestructura de Amazon ECS para los equilibradores de carga.
-
Para obtener información acerca de los permisos de Lambda, consulte Permisos necesarios para las funciones de Lambda en las implementaciones azul/verde de Amazon ECS.
-
-
Las implementaciones canario de Amazon ECS requieren que su servicio utilice una de las siguientes características: configure los recursos adecuados.
-
Equilibrador de carga de aplicación: para más información, consulte Recursos de equilibrador de carga de aplicación para las implementaciones azul/verde, las implementaciones lineales y las implementaciones canario.
-
-
Cree una regla para enrutar el tráfico a la nueva revisión de servicio. Para obtener más información, consulte Listener rules en ELB Application Load Balancers.
-
Cree un grupo de destino para la revisión de servicio verde. Cuando utilice el modo de red
awsvpcpara sus tareas, el tipo de destino debe serip. Para obtener más información, consulte Target groups en ELB Application Load Balancers.
Procedimiento
Puede utilizar la consola o la AWS CLI para crear un servicio de implementación canario de Amazon ECS.
- Console
-
Abra la consola en https://console.aws.amazon.com/ecs/v2
. -
Determine el recurso desde el que lanza el servicio.
Para iniciar un servicio desde Pasos Clústeres
-
En la página Clusters (Clústeres), seleccione el clúster que va a crear el servicio.
Aparecerá la página de detalles del clúster.
-
En la pestaña Services (Servicios), elija Create (Crear).
Definición de tarea -
En la página Definiciones de tareas, seleccione la definición de tarea.
-
En el menú Implementar, elija Crear servicio.
Aparecerá la página Crear servicio.
-
-
En Detalles del servicio, haga lo siguiente:
-
En Familia de definiciones de tareas, elija la definición de tarea que se va a utilizar. A continuación, en Revisión de la definición de tareas, introduzca la revisión que desee utilizar.
-
En Service name (Nombre del servicio), ingrese un nombre para el servicio.
-
-
Para ejecutar el servicio en un clúster existente, en Clúster existente, elija el clúster. Para ejecutar el servicio en un clúster nuevo, seleccione Crear clúster
-
Elija cómo distribuir las tareas en la infraestructura de clúster. En Configuración de computación, elija su opción.
Opción de computación Pasos Estrategia de proveedores de capacidad
-
En Opciones de computación, elija Estrategia del proveedor de capacidad.
-
Elija una estrategia:
-
Para utilizar la estrategia de proveedores de capacidad predeterminada del clúster, elija Use cluster default (Usar clúster predeterminado).
-
Si el clúster no tiene ninguna estrategia de proveedores de capacidad predeterminada o si desea utilizar una estrategia personalizada, elija Utilizar predeterminada, Agregar estrategia de proveedores de capacidad y, luego, defina la estrategia de proveedores de capacidad personalizada especificando una Base, Proveedor de capacidad y Peso.
-
nota
Para utilizar un proveedor de capacidad en una estrategia, el proveedor de capacidad debe estar asociado con el clúster.
Tipo de lanzamiento -
En la sección Compute options (Opciones de computación), seleccione Lauch type (Tipo de lanzamiento).
-
En Launch type (Tipo de lanzamiento), elija un tipo de lanzamiento.
-
(Opcional) Cuando se especifica Fargate, en Versión de la plataforma especifique la versión de la plataforma que se va a utilizar. Si no se especifica una versión de la plataforma, se utilizará la versión
LATEST.
-
-
En Configuración de implementación, haga lo siguiente:
-
En Tipo de servicio, seleccione Réplica.
-
En Desired tasks (Tareas deseadas), ingrese el número de tareas que se lanzarán y mantendrán en el servicio.
-
Para que Amazon ECS monitoree la distribución de las tareas entre las zonas de disponibilidad y las redistribuya cuando haya un desequilibrio, en Reequilibrio del servicio de zonas de disponibilidad, seleccione Reequilibrio del servicio de zonas de disponibilidad.
-
En Periodo de gracia de la comprobación de estado, introduzca la cantidad de tiempo (en segundos) durante la cual el programador de servicios ignora las comprobaciones de estado de ELB, VPC Lattice y contenedores en mal estado después de que se haya iniciado una tarea por primera vez. Si no se especifica ningún valor para el período de gracia de comprobación de estado, se utiliza el valor predeterminado: 0.
-
-
En Configuración de implementación, configure la implementación canario:
-
En Estrategia de implementación, elija Canario.
-
En Porcentaje de tráfico canario, introduzca el porcentaje de tráfico que pasará a la revisión de servicio verde en la primera etapa (por ejemplo, un 10 % para el tráfico canario inicial).
-
En Tiempo de incorporación del tráfico canario, introduzca el tiempo de espera en minutos antes de cambiar el tráfico restante a la revisión de servicio verde.
-
En Tiempo de incorporación, introduzca el número de minutos que las revisiones de servicio azul y verde durarán simultáneamente después del último cambio de tráfico y antes de que finalice la revisión azul.
-
(Opcional) Ejecute las funciones de Lambda que se van a ejecutar en etapas específicas de la implementación. En Enlaces de ciclo de vida de la implementación, seleccione las etapas para ejecutar los enlaces de ciclo de vida.
Para agregar un enlace de ciclo de vida:
-
Elija Agregar.
-
En Función de Lambda, introduzca el nombre o el ARN de la función.
-
En Rol, selecione el rol de IAM que tiene permiso para invocar la función de Lambda.
-
En Etapas del ciclo de vida, seleccione las etapas en las que debe ejecutarse la función de Lambda.
-
-
-
Para configurar el modo en que Amazon ECS detecta y gestiona los errores de implementación, expanda Deployment failure detection (Detección de errores de implementación) y, a continuación, elija sus opciones.
-
Para detener una implementación cuando las tareas no puedan iniciarse, seleccione Use the Amazon ECS deployment circuit breaker (Utilizar el interruptor de circuito de implementación de Amazon ECS).
Para que el software restaure automáticamente la implementación a su último estado completado cuando el disyuntor de implementación establezca un estado con error, seleccione Restauración en caso de error.
-
Para detener una implementación en función de las métricas de la aplicación, seleccione Use CloudWatch alarms. A continuación, elija las alarmas en Nombre de la alarma de CloudWatch. Para crear una alarma nueva, vaya a la consola de CloudWatch.
Para que el software restaure automáticamente la implementación a su último estado de implementación completada cuando una alarma de CloudWatch establezca un estado con error, seleccione Restauración en caso de error.
-
-
(Opcional) Para interconectar su servicio con Service Connect, expanda Service Connect y, a continuación, especifique lo siguiente:
-
Seleccione Activar Service Connect.
-
En Service Connect configuration (Configuración de Service Connect), especifique el modo cliente.
-
Si su servicio ejecuta una aplicación cliente de red que solo necesita conectarse a otros servicios del espacio de nombres, elija Solo en el lado del cliente.
-
Si su servicio ejecuta una aplicación de servicio web o red y necesita proporcionar puntos de conexión para este servicio y se conecta a otros servicios del espacio de nombres, elija Client and server (Cliente y servidor).
-
-
Para usar un espacio de nombres que no sea el espacio de nombres predeterminado del clúster, en Namespace (Espacio de nombres), elija el espacio de nombres del servicio. Puede ser un espacio de nombres creado por separado en la misma Región de AWS de su Cuenta de AWS o un espacio de nombres en la misma región que se comparta con su cuenta mediante AWS Resource Access Manager (AWS RAM). Para obtener más información sobre los espacios de nombres de AWS Cloud Map compartidos, consulte Cross-account AWS Cloud Map namespace sharing en la Guía para desarrolladores de AWS Cloud Map.
-
(Opcional) Configure las reglas de encabezado de tráfico de prueba para las implementaciones canario. En Enrutamiento de tráfico de prueba, especifique lo siguiente:
-
Seleccione Habilitar las reglas de encabezado de tráfico de prueba para enrutar solicitudes específicas a la revisión de servicio verde durante las pruebas.
-
En Reglas de coincidencia de encabezados, configure los criterios para enrutar el tráfico de prueba:
-
Nombre del encabezado: introduzca el nombre del encabezado HTTP que desee que coincida (por ejemplo,
X-Test-VersionoUser-Agent). -
Tipo de coincidencia: elija los criterios de coincidencia:
-
Coincidencia exacta: se enrutan las solicitudes en las que el valor del encabezado coincida exactamente con el valor especificado.
-
Encabezado presente: se enrutan las solicitudes que contienen el encabezado especificado, independientemente del valor.
-
Coincidencia de patrones: se enrutan las solicitudes en las que el valor del encabezado coincide con un patrón especificado.
-
-
Valor del encabezado (si se utiliza una coincidencia exacta o una coincidencia de patrón): introduzca el valor o patrón con el que desea que haya coincidencia.
Puede agregar varias reglas de coincidencia de encabezados para crear una lógica de enrutamiento compleja. Las solicitudes que coincidan con alguna de las reglas configuradas se enrutarán a la revisión de servicio verde para su comprobación.
-
-
Elija Agregar regla de encabezado para configurar condiciones de coincidencia de encabezados adicionales.
nota
Las reglas de encabezado de tráfico de prueba le permiten validar la nueva funcionalidad con tráfico controlado antes de finalizar la implementación completa. Esto le permite comprobar la revisión de servicio verde con solicitudes específicas (como las de las herramientas de pruebas internas o de los usuarios de la versión beta) y, al mismo tiempo, mantener un flujo de tráfico normal hacia la revisión de servicio azul.
-
-
(Opcional) Especifique una configuración de registro. Seleccione Utilizar colección de registros. La opción predeterminada envía registros de contenedor a los Registros de CloudWatch. Las demás opciones del controlador de registro se configuran mediante AWS FireLens. Para obtener más información, consulte Envío de registros de Amazon ECS a un servicio de AWS o AWS Partner.
A continuación, se describe con más detalle cada uno de los destinos de registro de contenedor.
-
Amazon CloudWatch: configure la tarea para enviar registros de contenedor a CloudWatch Logs. Se proporcionan las opciones de controlador de registro predeterminadas que crean un grupo de registros de CloudWatch en su nombre. Para especificar otro nombre de grupo de registros, cambie los valores de las opciones del controlador.
-
Amazon Data Firehose: configure la tarea para enviar registros de contenedor a Firehose. Se proporcionan las opciones de controlador de registro predeterminadas que envían registros a un flujo de entrega de Firehose. Para especificar un nombre de flujo de entrega distinto, cambie los valores de las opciones del controlador.
-
Amazon Kinesis Data Streams: configure la tarea para enviar registros de contenedores a Kinesis Data Streams. Se proporcionan las opciones de controlador de registro predeterminadas que envían registros a un flujo de Kinesis Data Streams. Para especificar otro nombre de transmisión, cambie los valores de las opciones del controlador.
-
Amazon OpenSearch Service: configure la tarea para enviar registros de contenedor a un dominio de OpenSearch Service. Se deben proporcionar las opciones del controlador de registros.
-
Amazon S3: configure la tarea para enviar registros de contenedor a un bucket de Amazon S3. Se proporcionan las opciones de controlador de registro predeterminadas, pero debe especificar un nombre de bucket de Amazon S3 válido.
-
-
-
(Opcional) Configure Equilibrio de carga para una implementación canario.
Tipo de ELB Pasos Equilibrador de carga de aplicación
-
En Tipo de equilibrador de carga, elija Equilibrador de carga de aplicación.
-
Elija Create a new load balancer (Crear un nuevo balanceador de carga) para crear un nuevo Application Load Balancer o Use an existing load balancer (Utilizar un balanceador de carga existente) para seleccionar un Application Load Balancer existente.
-
En Contenedor, elija el contenedor que aloja el servicio.
-
En Load balancer name (Nombre del equilibrador de carga), ingrese un nombre único.
-
En Listener (Agente de escucha), ingrese un puerto y un protocolo que el equilibrador de carga de aplicación pueda utilizar para escuchar las solicitudes de conexión. De forma predeterminada, el balanceador de carga se configurará para utilizar el puerto 80 y HTTP.
-
En Regla de producción, introduzca el orden de evaluación y el patrón de ruta de la regla.
Esta regla es para el tráfico de revisión de servicio (azul) de producción.
-
En Regla de prueba, introduzca el orden de evaluación y el patrón de ruta de la regla.
Esta regla es para el tráfico de revisión del servicio (verde) de prueba.
-
-
En Grupo de destino, configure lo siguiente:
-
En Target group name (Nombre del grupo de destino), ingrese un nombre y un protocolo para el grupo de destino al que el equilibrador de carga de aplicación dirige las solicitudes.
-
En Protocolo, elija el protocolo para el grupo de destino hacia el que el equilibrador de carga de aplicación enruta las solicitudes. De forma predeterminada, el grupo de destino dirige las solicitudes al primer contenedor definido en la definición de la tarea.
-
En Retraso en la cancelación del registro, introduzca el número de segundos que tarda el equilibrador de carga en cambiar el estado de destino a
UNUSED. El valor predeterminado es de 300 segundos. -
En Health check path (Ruta de comprobación de estado), ingrese una ruta existente dentro de su contenedor donde el equilibrador de carga de aplicación envíe periódicamente solicitudes para verificar el estado de la conexión entre el equilibrador de carga de aplicación y el contenedor. El valor predeterminado es el directorio raíz (
/). -
En Nombre de grupo alternativo, introduzca el nombre del grupo de destino para la revisión de servicio de prueba.
-
-
-
(Opcional) Para ayudar a identificar el servicio y las tareas, expanda la sección Tags (Etiquetas) y, a continuación, configure sus etiquetas.
Para que Amazon ECS etiquete automáticamente todas las tareas recién lanzadas con el nombre del clúster y las etiquetas de definición de tareas, seleccione Activar las etiquetas administradas de Amazon ECS y, a continuación, en Propagar etiquetas de, seleccione Definiciones de tareas.
Para que Amazon ECS etiquete automáticamente todas las tareas recién lanzadas con el nombre del clúster y las etiquetas de servicio, seleccione Activar las etiquetas administradas de Amazon ECS y, a continuación, en Propagar etiquetas de, seleccione Servicio.
Añada o elimine una etiqueta.
-
[Agregar una etiqueta] Seleccione Add tag (Agregar etiqueta), y, a continuación, haga lo siguiente:
-
En Clave, escriba el nombre de la clave.
-
En Valor, escriba el valor de la clave.
-
-
[Eliminar una etiqueta] Junto a la etiqueta, elija Remove tag (Quitar etiqueta).
-
-
Seleccione Crear.
- AWS CLI
-
-
Cree un archivo llamado
canary-service-definition.jsoncon el siguiente contenido.Sustituya las
entradas del usuariopor sus valores.{ "serviceName": "myCanaryService", "cluster": "arn:aws:ecs:us-west-2:123456789012:cluster/sample-fargate-cluster", "taskDefinition": "sample-fargate:1", "desiredCount": 5, "launchType": "FARGATE", "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "subnet-09ce6e74c116a2299", "subnet-00bb3bd7a73526788", "subnet-0048a611aaec65477" ], "securityGroups": [ "sg-09d45005497daa123" ], "assignPublicIp": "ENABLED" } }, "deploymentController": { "type": "ECS" }, "deploymentConfiguration": { "strategy": "CANARY", "maximumPercent": 200, "minimumHealthyPercent": 100, "canaryConfiguration" : { "canaryPercent" : 5.0, "canaryBakeTime" : 10 }, "bakeTimeInMinutes": 10, "alarms": { "alarmNames": [ "myAlarm" ], "rollback": true, "enable": true } }, "loadBalancers": [ { "targetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-target-group/54402ff563af1197", "containerName": "fargate-app", "containerPort": 80, "advancedConfiguration": { "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-target-group/cad10a56f5843199", "productionListenerRule": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-canary-demo/32e0e4f946c3c05b/9cfa8c482e204f7d/831dbaf72edb911", "roleArn": "arn:aws:iam::123456789012:role/LoadBalancerManagementforECS" } } ] } -
Ejecuta
create-service.aws ecs create-service --cli-input-json file://canary-service-definition.json
-
Siguientes pasos
Tras configurar la implementación canario, siga estos pasos:
-
Actualice el servicio para iniciar la implementación. Para obtener más información, consulte Actualización de un servicio de Amazon ECS.
-
Supervise el proceso de implementación para asegurarse de que siga el patrón de la implementación canario:
-
Se crea y escala verticalmente la revisión de servicio verde
-
Un pequeño porcentaje del tráfico (canario) se transfiere a la revisión verde
-
El sistema espera el intervalo canario especificado
-
El tráfico restante se transfiere a la vez a la revisión verde
-
Transcurrido el tiempo de incorporación, la revisión azul finaliza
-