Implantações azul/verde do CodeDeploy para o Amazon ECS
Recomendamos que você use a implantação azul/verde do Amazon ECS. Para obter mais informações, consulte Criação de implantações azul/verde do Amazon ECS .
O tipo de implantação azul/verde usa o modelo de implantação azul/verde controlado pelo CodeDeploy. Use este tipo de implantação para verificar uma nova implantação de um serviço antes de enviar tráfego de produção para ele. Para obter mais informações, consulte O que é o CodeDeploy? no Guia do usuário do AWS CodeDeploy. Valide o estado de um serviço do Amazon ECS antes da implantação
Existem três maneiras pelas quais o tráfego pode mudar durante uma implantação azul/verde:
-
Canário: o tráfego é deslocado em dois incrementos. É possível escolher entre opções de canary predefinidas que especificam a porcentagem de tráfego deslocada para a definição da tarefa atualizada no primeiro incremento e o intervalo, em minutos, antes que o tráfego restante seja deslocado no segundo incremento.
-
Linear: o tráfego é deslocado em incrementos iguais com um número igual de minutos entre cada incremento. É possível escolher entre opções lineares predefinidas que especificam a porcentagem de tráfego deslocado em cada incremento e o número de minutos entre cada incremento.
-
Tudo de uma vez: todo o tráfego é deslocado do conjunto de tarefas original para o conjunto de tarefas atualizado de uma só vez.
Veja a seguir os componentes do CodeDeploy que o Amazon ECS usa quando um serviço utiliza o tipo de implantação azul/verde:
- Aplicação CodeDeploy
-
Uma coleção de recursos do CodeDeploy. Isso consiste em um ou mais grupos de implantação.
- Grupo de implantação do CodeDeploy
-
As configurações de implantação. Isso consiste no seguinte:
-
Cluster e serviço do Amazon ECS
-
Informações sobre o grupo de destino e o receptor do balanceador de carga
-
Estratégia de reversão de implantação
-
Configurações de reencaminhamento de tráfego
-
Configurações de encerramento da revisão original
-
Configuração de implantação
-
Configuração de alarmes do CloudWatch que pode ser definida para interromper implantações
-
Configurações do SNS ou do CloudWatch Events para notificações
Para obter mais informações, consulte Trabalhar com grupos de implantação no Guia do usuário do AWS CodeDeploy.
-
- Configuração de implantação do CodeDeploy
-
Especifica como o CodeDeploy roteia o tráfego de produção para o conjunto de tarefas de substituição durante uma implantação. As configurações de implantação linear e de canary predefinidas a seguir estão disponíveis. Também é possível criar implantações personalizadas lineares e de canary. Para obter mais informações, consulte Trabalhar com configurações de implantação no Guia do usuário do AWS CodeDeploy.
-
CodeDeployDefault.ECSAllAtOnce: desloca todo o tráfego para o contêiner atualizado do Amazon ECS de uma só vez
-
CodeDeployDefault.ECSLinear10PercentEvery1Minutes: desloca 10% do tráfego a cada minuto até que todo o tráfego seja deslocado.
-
CodeDeployDefault.ECSLinear10PercentEvery3Minutes: desloca 10% do tráfego a cada 3 minutos até que todo o tráfego seja deslocado.
-
CodeDeployDefault.ECSCanary10Percent5Minutes: desloca 10% do tráfego no primeiro incremento. Os 90 por cento restantes serão implantados cinco minutos depois.
-
CodeDeployDefault.ECSCanary10Percent15Minutes: desloca 10% do tráfego no primeiro incremento. Os 90 por cento restantes são implantados 15 minutos depois.
-
- Revisão
-
Uma revisão é o arquivo de especificação de aplicação do CodeDeploy (arquivo AppSpec). No arquivo AppSpec, você especifica o ARN completo da definição da tarefa e o contêiner e a porta do conjunto de tarefas de substituição em que o tráfego deve ser roteado quando uma nova implantação é criada. O nome do contêiner deve ser um dos nomes de contêineres referenciados em sua definição de tarefa. Se a configuração de rede ou a versão da plataforma tiver sido atualizada na definição de serviço, você também deverá especificar esses detalhes no arquivo AppSpec. Também é possível especificar as funções do Lambda a serem executadas durante os eventos do ciclo de vida da implantação. As funções do Lambda permitem que você execute testes e retorne métricas durante a implantação. Para obter mais informações, consulte Referência do arquivo AppSpec no Guia do usuário do AWS CodeDeploy.
Considerações
Considere o seguinte ao usar o tipo de implantação azul/verde:
-
Quando um serviço do Amazon ECS que usa o tipo de implantação azul/verde é criado inicialmente, é criado um conjunto de tarefas do Amazon ECS.
-
Você deve configurar o serviço para usar um Application Load Balancer ou um Network Load Balancer. A seguir estão os requisitos do load balancer.
-
Você deve adicionar um listener de produção ao load balancer, que é usado para rotear o tráfego de produção.
-
Um listener de teste opcional pode ser adicionado ao load balancer, que é usado para rotear o tráfego de teste. Se você especificar um listener de teste, o CodeDeploy encaminhará o tráfego de teste para o conjunto de tarefas de substituição durante uma implantação.
-
Os listeners de produção e teste devem pertencer ao mesmo load balancer.
-
É necessário definir um grupo de destino para o load balancer. O grupo de destino roteia o tráfego para o conjunto de tarefas original em um serviço por meio do listener de produção.
-
Quando um Network Load Balancer é usado, somente a configuração de implantação
CodeDeployDefault.ECSAllAtOnceé permitida.
-
-
Para serviços configurados para usar autoescalabilidade de serviço e o tipo de implantação azul/verde, a autoescalabilidade não é bloqueada durante uma implantação, mas a implantação pode apresentar falha em algumas circunstâncias. Veja a seguir a descrição desse comportamento, com mais detalhes.
-
Se um serviço estiver sendo dimensionado e uma implantação for iniciada, será criado o conjunto de tarefas verde e o CodeDeploy aguardará por até uma hora até que o conjunto de tarefas verde atinja o estado estacionário e não mude qualquer tráfego até que isso aconteça.
-
Se um serviço estiver no processo de implantação azul/verde e ocorrer um evento de escalabilidade, o tráfego continuará a mudar por 5 minutos. Se o serviço não atingir o estado estacionário em até 5 minutos, o CodeDeploy interromperá a implantação e a marcará como falha.
-
-
As tarefas que usam os tipos de controlador de implantação do Fargate ou
CODE_DEPLOYnão são compatíveis com a estratégia de programaçãoDAEMON. -
Ao criar inicialmente uma aplicação e um grupo de implantação do CodeDeploy, é necessário especificar o seguinte:
-
É necessário definir dois grupos de destino para o load balancer. Um grupo de destino deverá ser o grupo de destino inicial definido para o balanceador de carga quando o serviço do Amazon ECS for criado. O único requisito do segundo grupo de destino é que ele não pode ser associado a um load balancer diferente do que é usado pelo serviço.
-
-
Quando você cria uma implantação do CodeDeploy para um serviço do Amazon ECS, o CodeDeploy cria um conjunto de tarefas de substituição (ou conjunto de tarefas verde) na implantação. Se você tiver adicionado um listener de teste ao balanceador de carga, o CodeDeploy encaminhará o tráfego de teste para o conjunto de tarefas de substituição. É nesse momento que você pode executar quaisquer testes de validação. O CodeDeploy redireciona o tráfego de produção do conjunto de tarefas original para o conjunto de tarefas de substituição, de acordo com as configurações de redirecionamento de tráfego do grupo de implantação.
Permissões obrigatórias do IAM
As implantações azul/verde podem ser realizadas usando uma combinação das APIs do Amazon ECS e do CodeDeploy. Os usuários devem ter as permissões apropriadas para esses serviços antes de poderem usar as implantações azuis/verdes do Amazon ECS no Console de gerenciamento da AWS ou com a AWS CLI ou os SDKs.
Além das permissões padrão do IAM para criar e atualizar serviços, o Amazon ECS exige as permissões a seguir. Essas permissões foram adicionadas à política AmazonECS_FullAccess do IAM. Para obter mais informações, consulte AmazonECS_FullAccess.
codedeploy:CreateApplicationcodedeploy:CreateDeploymentcodedeploy:CreateDeploymentGroupcodedeploy:GetApplicationcodedeploy:GetDeploymentcodedeploy:GetDeploymentGroupcodedeploy:ListApplicationscodedeploy:ListDeploymentGroupscodedeploy:ListDeploymentscodedeploy:StopDeploymentcodedeploy:GetDeploymentTargetcodedeploy:ListDeploymentTargetscodedeploy:GetDeploymentConfigcodedeploy:GetApplicationRevisioncodedeploy:RegisterApplicationRevisioncodedeploy:BatchGetApplicationRevisionscodedeploy:BatchGetDeploymentGroupscodedeploy:BatchGetDeploymentscodedeploy:BatchGetApplicationscodedeploy:ListApplicationRevisionscodedeploy:ListDeploymentConfigscodedeploy:ContinueDeploymentsns:ListTopicscloudwatch:DescribeAlarmslambda:ListFunctions
nota
Além das permissões padrão do Amazon ECS necessárias para executar tarefas e serviços, os usuários do IAM também precisam de permissões iam:PassRole para usar perfis do IAM para tarefas.
O CodeDeploy precisa de permissões para chamar APIs do Amazon ECS, modificar o Elastic Load Balancing, invocar funções do Lambda e descrever alarmes do CloudWatch, além de permissões para modificar a contagem desejada do serviço para você. Antes de criar um serviço do Amazon ECS que use o tipo de implantação azul/verde, você deve criar uma função do IAM (ecsCodeDeployRole). Para obter mais informações, consulte Função do IAM para CodeDeploy do Amazon ECS.