Sobre implantações azuis/verdes
Este tópico fornece uma visão geral de como realizar implantações azuis/verdes com o CloudFormation. Ele também explica como preparar seu modelo do CloudFormation para implantações azuis/verdes.
Tópicos
Como funciona
Ao usar o CloudFormation para executar implantações azuis/verdes do ECS via CodeDeploy, você começa criando um modelo de pilha que define os recursos para seus ambientes de aplicativo azul e verde, incluindo a especificação das configurações de roteamento de tráfego e de estabilização a serem usadas. Em seguida, você cria uma pilha com base nesse modelo. Isso gera sua aplicação azul (atual). O CloudFormation cria somente os recursos azuis durante a criação da pilha. Os recursos para uma implantação verde não são criados até que sejam necessários.
Depois, se em uma futura atualização de pilha você atualizar os recursos de definição de tarefa ou do conjunto de tarefas no aplicativo azul, o CloudFormation fará o seguinte:
-
Gerará todos os recursos de ambiente do aplicativo verde necessários
-
Deslocará o tráfego com base nos parâmetros de roteamento de tráfego especificados
-
Excluirá os recursos azuis
Se ocorrer um erro em qualquer ponto antes da implantação verde ser finalizada com êxito, o CloudFormation reverterá a pilha para seu estado anterior ao início de toda a implantação verde.
Atualizações de recursos que iniciam implantações verdes
Quando você executa uma atualização de pilha que atualiza determinadas propriedades de recursos do ECS, o CloudFormation inicia um processo de implantação verde. Os recursos que iniciam esse processo são:
No entanto, se as atualizações desses recursos não envolverem alterações de propriedade que exijam substituição, uma implantação ecológica não será iniciada. Para ter mais informações, consulte Compreender atualização de comportamentos de recursos da pilha.
É importante observar que não é possível combinar atualizações para os recursos acima com atualizações para outros recursos na mesma operação de atualização de pilha. Se precisar atualizar os recursos listados e outros recursos na mesma pilha, você terá duas opções:
-
Execute duas operações de atualização de pilha separadas: uma que inclua somente as atualizações para os recursos acima e uma atualização de pilha separada que inclua alterações em quaisquer outros recursos.
-
Remova as seções
Hooks
eTransform
do modelo e execute a atualização da pilha. Neste caso, o CloudFormation não executará uma implantação verde.
Preparar seu modelo para executar implantações azul/verde do ECS
Para permitir implantações azul/verde em sua pilha, inclua as seções a seguir no modelo de pilha antes de executar uma atualização dela.
-
Adicione uma referência à transformação
AWS::CodeDeployBlueGreen
ao modelo:"Transform": [ "AWS::CodeDeployBlueGreen" ],
-
Adicione uma seção
Hooks
que invoque o hookAWS::CodeDeploy::BlueGreen
e especifique as propriedades para a implantação. Para ter mais informações, consulte Sintaxe do hook AWS::CodeDeploy::BlueGreen. -
Na seção
Resources
, defina os recursos azuis e verdes para a implantação.
É possível adicionar essas seções ao criar o modelo pela primeira vez (ou seja, antes de criar a pilha) ou adicioná-las a um modelo existente antes de executar uma atualização de pilha. Se você especificar a implantação azul/verde para uma nova pilha, o CloudFormation criará somente os recursos azuis durante a criação. Os recursos para a implantação verde não serão criados até que sejam necessários durante uma atualização da pilha.
Modelar sua implantação azul/verde usando recursos do CloudFormation
Para executar a implantação azul/verde do CodeDeploy no ECS, o modelo do CloudFormation deverá incluir os recursos que modelam sua implantação, como um serviço do Amazon ECS e um balanceador de carga. Para mais detalhes sobre o que esses recursos representam, consulte Antes de iniciar uma implantação do Amazon ECS no Guia do usuário do AWS CodeDeploy.
Requisito | Recurso | Obrigatório/opcional | Inicia a implantação azul/verde se substituído? |
---|---|---|---|
Cluster do Amazon ECS | AWS::ECS::Cluster | Opcional. O cluster padrão pode ser usado. | Não |
Serviço do Amazon ECS | AWS::ECS::Service | Obrigatório. | Não |
Application ou Network Load Balancer | AWS::ECS::Service LoadBalancer | Obrigatório. | Não |
Listener de produção | AWS::ElasticLoadBalancingV2::Listener | Obrigatório. | Não |
Listener de teste | AWS::ElasticLoadBalancingV2::Listener | Opcional. | Não |
Dois grupos de destino | AWS::ElasticLoadBalancingV2::TargetGroup | Obrigatório. | Não |
Definição de tarefa do Amazon ECS | AWS::ECS::TaskDefinition | Obrigatório. | Sim |
Contêiner para seu aplicativo do Amazon ECS | AWS::ECS::TaskDefinition ContainerDefinition Name | Obrigatório. | Não |
Porta para o conjunto de tarefas de substituição | AWS::ECS::TaskDefinition PortMapping ContainerPort | Obrigatório. | Não |
Conjuntos de alterações
É altamente recomendável que você crie um conjunto de alterações antes de executar uma atualização de pilha que iniciará uma implantação verde. Isso permite que você veja as alterações que serão feitas na pilha antes da execução da atualização da pilha. Esteja ciente de que as alterações de recursos podem não ser listadas na ordem em que serão executadas durante a atualização da pilha. Para ter mais informações, consulte Atualizar pilhas do CloudFormation usando conjuntos de alterações.
Monitorar eventos da pilha
É possível visualizar os eventos da pilha gerados em cada etapa da implantação do ECS na guia Events (Eventos) da página Stack (Pilha) e usando a AWS CLI. Para ter mais informações, consulte Monitorar o progresso da pilha.
Permissões do IAM para implantações azuis/verdes
Para que o CloudFormation execute com sucesso as implantações azul/verde, você deve ter as seguintes permissões do CodeDeploy:
-
codedeploy:Get*
-
codedeploy:CreateCloudFormationDeployment
Para obter mais informações, consulte Ações, recursos e chaves de condição do CodeDeploy na Referência de autorização do serviço.