Sobre las implementaciones azul/verde
En este tema, se ofrece una descripción general del funcionamiento de las implementaciones azul/verde con CloudFormation. También, se explica cómo preparar la plantilla de CloudFormation para las implementaciones azul/verde.
Temas
Funcionamiento
Al usar CloudFormation para realizar implementaciones azul/verde de ECS a través de CodeDeploy, primero se crea una plantilla de pilas que define los recursos de los entornos de aplicaciones azul y verde, incluida la especificación de la configuración de enrutamiento y estabilización del tráfico que se va a utilizar. A continuación, debe crear una pila a partir de esa plantilla. De este modo, generará la aplicación azul (actual). CloudFormation solo crea los recursos azules durante la creación de la pila. Los recursos de las implementaciones «green» no se crean hasta que es necesario.
Posteriormente, si en una actualización futura de una pila se actualiza la definición de tarea o los recursos del conjunto de tareas de la aplicación azul, CloudFormation hará lo siguiente:
-
Generará todos los recursos necesarios para el entorno de aplicaciones de verde.
-
Desviará el tráfico en función de los parámetros de direccionamiento del tráfico especificados.
-
Eliminará los recursos de azul.
Si se produce un error en algún momento antes de que la implementación «green» se realice correctamente y finalice, CloudFormation devolverá la pila al estado que tenía antes de que se iniciara toda la implementación verde.
Actualizaciones de recursos que inician implementaciones verdes
Al realizar una actualización de pila que actualiza una propiedad de recursos de ECS específicos, CloudFormation iniciará un proceso de implementación verde. Los recursos que inician este proceso son los siguientes:
Sin embargo, si las actualizaciones de estos recursos no implican cambios en las propiedades que deban reemplazarse, no se iniciará una implementación verde. Para obtener más información, consulte Comprensión de los comportamientos de actualización de los recursos de la pila.
Es importante recordar que no se pueden combinar las actualizaciones de los recursos anteriores con las actualizaciones de otros recursos en la misma operación de actualización de pila. Si necesita actualizar los recursos de la lista y otros recursos de la misma pila, tiene dos opciones:
-
Lleve a cabo dos operaciones de actualización de pila diferentes: una que incluya solo las actualizaciones de los recursos anteriores y otra que incluya los cambios de los demás recursos.
-
Elimine las secciones
Hooks
yTransform
de la plantilla y actualice después la pila. En este caso, CloudFormation no realizará una implementación verde.
Preparación de la plantilla para realizar implementaciones azul/verde de ECS
Para habilitar implementaciones azul/verde en la pila, incluya las siguientes secciones en la plantilla de pila antes de realizar la actualización de la pila.
-
Agregue una referencia a la transformación
AWS::CodeDeployBlueGreen
en la plantilla:"Transform": [ "AWS::CodeDeployBlueGreen" ],
-
Agregue una sección
Hooks
que invoque el enlaceAWS::CodeDeploy::BlueGreen
y especifique las propiedades de la implementación. Para obtener más información, consulte Sintaxis del enlace AWS::CodeDeploy::BlueGreen. -
En la sección
Resources
, defina los recursos azul/verde de la implementación.
Puede agregar estas secciones cuando cree por primera vez la plantilla (es decir, antes de crear la pila en sí) o agregarlas a una plantilla existente antes de actualizar la pila. Si especifica la implementación azul-verde para una nueva pila, CloudFormation solo generará los recursos azules durante la creación de la pila; los recursos para la implementación verde no se generarán hasta que lo requiera la actualización de la pila.
Modelado de la implementación “blue/green” mediante recursos de CloudFormation
Para realizar una implementación azul/verde de CodeDeploy en ECS, la plantilla de CloudFormation debe incluir los recursos que van a modelar la implementación, como un equilibrador de carga y un servicio de Amazon ECS. Para obtener más información sobre lo que representan estos recursos, consulte Antes de empezar una implementación de Amazon ECS en la Guía del usuario de AWS CodeDeploy.
Requisito | Recurso | Obligatorio/opcional | ¿Se inicia una implementación azul/verde si se reemplaza? |
---|---|---|---|
Clúster de Amazon ECS | AWS::ECS::Cluster | Opcional. Se puede utilizar el clúster predeterminado. | No |
Servicio de Amazon ECS | AWS::ECS::Service | Obligatorio. | No |
Aplicación o balanceador de carga de red | AWS::ECS::Service LoadBalancer | Obligatorio. | No |
Agente de escucha de producción | AWS::ElasticLoadBalancingV2::Listener | Obligatorio. | No |
Agente de escucha de prueba | AWS::ElasticLoadBalancingV2::Listener | Opcional. | No |
Dos grupos de destino | AWS::ElasticLoadBalancingV2::TargetGroup | Obligatorio. | No |
Definición de tarea de Amazon ECS | AWS::ECS::TaskDefinition | Obligatorio. | Sí |
Contenedor de la aplicación de Amazon ECS | AWS::ECS::TaskDefinition ContainerDefinition Name | Obligatorio. | No |
Puerto del conjunto de tareas de sustitución | AWS::ECS::TaskDefinition PortMapping ContainerPort | Obligatorio. | No |
Conjuntos de cambios
Le recomendamos encarecidamente que cree un conjunto de cambios antes de realizar una actualización de la pila que inicie una implementación verde. Esto le permite ver los cambios reales que se harán en la pila antes de actualizarla. Tenga en cuenta que es posible que los cambios de recursos no aparezcan en el orden en que tendrán lugar. Para obtener más información, consulte Actualización de pilas de CloudFormation con conjuntos de cambios.
Supervisión de los eventos de la pila
Puede ver los eventos de la pila que se generan en cada paso de la implementación de ECS en la pestaña Eventos de la página Pila o mediante la AWS CLI. Para obtener más información, consulte Monitorizar el progreso de la pila.
Permisos de IAM para las implementaciones azul/verde
Para poder CloudFormation realizar correctamente las implementaciones azul/verde, debe tener los siguientes permisos de CodeDeploy:
-
codedeploy:Get*
-
codedeploy:CreateCloudFormationDeployment
Para obtener más información, consulte Acciones, recursos y claves de condición para CodeDeploy en la Referencia de autorizaciones de servicio.