Implantação azul/verde com CodeDeploy - Amazon Elastic Container Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Implantação azul/verde com CodeDeploy

O tipo de implantação azul/verde usa o modelo de implantação azul/verde controlado por. 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 .

Há 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.

  • R ll-at-once — Todo o tráfego é transferido do conjunto de tarefas original para o conjunto de tarefas atualizado de uma só vez.

A seguir estão os componentes CodeDeploy que o Amazon ECS usa quando um serviço usa o tipo de implantação azul/verde:

CodeDeploy aplicação

Uma coleção de CodeDeploy recursos. Isso consiste em um ou mais grupos de implantação.

CodeDeploy grupo de implantação

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 listener do load balancer

  • Estratégia de reversão de implantação

  • Configurações de reencaminhamento de tráfego

  • Configurações de finalização de revisão original

  • Configuração de implantação

  • CloudWatch configuração de alarmes que pode ser configurada para interromper implantações

  • Configurações de SNS ou CloudWatch eventos para notificações

Para obter mais informações, consulte Trabalhar com grupos de implantação no Guia do usuário do AWS CodeDeploy .

CodeDeploy configuração de implantação

Especifica como CodeDeploy direciona o tráfego de produção para seu 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.ECS AllAtOnce: transfere todo o tráfego para o contêiner atualizado do Amazon ECS de uma só vez

  • CodeDeployDefault.ecsLinear10 PercentEvery 1Minutes: desloca 10% do tráfego a cada minuto até que todo o tráfego seja deslocado.

  • CodeDeployDefault.ecsLinear10 PercentEvery 3Minutes: 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 sã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 do CodeDeploy aplicativo (AppSpec arquivo). No AppSpec arquivo, você especifica o ARN completo da definição da tarefa e o contêiner e a porta do seu conjunto de tarefas de substituição para onde o tráfego deve ser roteado quando uma nova implantação for 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 da rede ou a versão da plataforma tiverem sido atualizadas na definição do serviço, você também deverá especificar esses detalhes no AppSpec arquivo. 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 de AppSpec arquivo no Guia AWS CodeDeploy do usuário.

Considerações sobre implantação azul/verde

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 ouvinte de teste, CodeDeploy roteará seu 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 escalado e uma implantação for iniciada, o conjunto de tarefas verde será criado e CodeDeploy aguardará até uma hora para que o conjunto de tarefas verde atinja o estado estável e não mudará nenhum 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 estável em 5 minutos, CodeDeploy interromperá a implantação e a marcará como falhada.

    • Se um serviço estiver no processo de implantação azul/verde e ocorrer um evento de escalabilidade, a contagem de tarefas desejada poderá ser definida como um valor inesperado. Isso é causado pela autoescalabilidade considerando a contagem de tarefas em execução como capacidade atual, que é o dobro do número apropriado de tarefas que estão sendo usadas no cálculo da contagem de tarefas desejada.

  • As tarefas que usam o tipo de inicialização do Fargate ou os tipos de controlador de implantação CODE_DEPLOY não são compatíveis com a estratégia de programação DAEMON.

  • Ao criar inicialmente um CodeDeploy aplicativo e um grupo de implantação, você deve 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 CodeDeploy implantação para um serviço do Amazon ECS, CodeDeploy cria um conjunto de tarefas de substituição (ou conjunto de tarefas verde) na implantação. Se você adicionou um ouvinte de teste ao balanceador de carga, CodeDeploy encaminha seu 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 do IAM exigidas para implantações azuis/verdes

As implantações azul/verde do Amazon ECS são possibilitadas por uma combinação do Amazon ECS e das APIs. CodeDeploy Os usuários devem ter as permissões apropriadas para esses serviços antes de poderem usar as implantações azul/verde do Amazon ECS no AWS Management Console ou com os SDKs. AWS CLI

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 ter mais informações, consulte Amazon CS_ FullAccess.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codedeploy:CreateApplication", "codedeploy:CreateDeployment", "codedeploy:CreateDeploymentGroup", "codedeploy:GetApplication", "codedeploy:GetDeployment", "codedeploy:GetDeploymentGroup", "codedeploy:ListApplications", "codedeploy:ListDeploymentGroups", "codedeploy:ListDeployments", "codedeploy:StopDeployment", "codedeploy:GetDeploymentTarget", "codedeploy:ListDeploymentTargets", "codedeploy:GetDeploymentConfig", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision", "codedeploy:BatchGetApplicationRevisions", "codedeploy:BatchGetDeploymentGroups", "codedeploy:BatchGetDeployments", "codedeploy:BatchGetApplications", "codedeploy:ListApplicationRevisions", "codedeploy:ListDeploymentConfigs", "codedeploy:ContinueDeployment", "sns:ListTopics", "cloudwatch:DescribeAlarms", "lambda:ListFunctions" ], "Resource": ["*"] } ] }
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.

CodeDeploy precisa de permissões para chamar as APIs do Amazon ECS, modificar seu Elastic Load Balancing, invocar funções do Lambda e CloudWatch descrever alarmes, bem como permissões para modificar a contagem desejada do seu serviço em seu nome. 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 ter mais informações, consulte Função do Amazon ECS CodeDeploy IAM.

Os exemplos de política Exemplo de criação de serviço e Exemplo de atualização de serviço do IAM mostram as permissões que são necessárias para os usuários usarem implantações azuis/verdes do Amazon ECS no AWS Management Console.