Implantação azul/verde em uma plataforma de computação do Amazon ECS - AWS CodeDeploy

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 em uma plataforma de computação do Amazon ECS

Este tópico fornece informações sobre os componentes e o fluxo de trabalho das CodeDeploy implantações que usam a plataforma computacional Amazon ECS.

Antes de começar uma implantação do

Antes de iniciar uma implantação de aplicativo do Amazon ECS, você deve ter o seguinte preparado. Alguns requisitos são especificados quando você cria seu grupo de implantação e alguns são especificados no AppSpec arquivo.

Requisito Onde especificado
Cluster do Amazon ECS Grupo de implantação
Serviço do Amazon ECS Grupo de implantação
Application Load Balancer e Network Load Balancer Grupo de implantação
Listener de produção Grupo de implantação
Listener de teste (opcional) Grupo de implantação
Dois grupos de destino Grupo de implantação
Definição de tarefa do Amazon ECS AppSpec arquivo
Nome do contêiner AppSpec arquivo
Porta do contêiner AppSpec arquivo
Cluster do Amazon ECS

Um cluster do Amazon ECS é um agrupamento lógico de tarefas ou serviços. Você especifica o cluster do Amazon ECS que contém seu serviço Amazon ECS ao criar o grupo de implantação do seu CodeDeploy aplicativo. Para obter mais informações, consulte clusters do Amazon ECS no Guia do desenvolvedor do Amazon Elastic Container Service.

Serviço do Amazon ECS

Um serviço do Amazon ECS ajuda você a executar e manter simultaneamente um número especificado de instâncias de uma definição de tarefa em um cluster do Amazon ECS. Seu serviço Amazon ECS deve estar habilitado para CodeDeploy. Por padrão, um serviço do Amazon ECS é habilitado para implantações do Amazon ECS . Ao criar o grupo de implantação, você pode optar por implantar um serviço do Amazon ECS que está no seu cluster do Amazon ECS. Para obter mais informações, consulte no Amazon ECS no Guia do desenvolvedor do Amazon Elastic Container Service.

Application Load Balancer e Network Load Balancer

Você deve usar o Elastic Load Balancing com o serviço Amazon ECS que você deseja atualizar com uma implantação do Amazon ECS. É possível utilizar um Application Load Balancer ou Network Load Balancer. Recomendamos um Application Load Balancer para que você possa aproveitar atributos, como o mapeamento de porta dinâmico e o roteamento baseado em caminhos e regras de prioridade. Você especifica o balanceador de carga ao criar o grupo de implantação do seu CodeDeploy aplicativo. Para obter mais informações, consulte Configure um balanceador de carga, grupos-alvo e ouvintes para implantações do CodeDeploy Amazon ECS e Criar um cluster no balanceador de carga no Guia do desenvolvedor do Amazon Elastic Container Service.

Um ou dois receptores

Um listener é usado pelo seu load balancer para direcionar o tráfego para seus grupos de destino. Um listener de produção é necessário. Você pode especificar um segundo listener de teste opcional que direciona o tráfego para o seu conjunto de tarefas de substituição enquanto você executa testes de validação. Especifique um ou dois listeners ao criar seu grupo de implantação. Se você usar o console do Amazon ECS para criar o serviço do Amazon ECS, seus receptores são criados para você. Para obter mais informações, consulte Receptores para seus Application Load Balancers no Guia do usuário do Elastic Load Balancing e Criar um serviço no Guia do usuário do Amazon Elastic Container Service.

Dois grupos-alvo do Amazon ECS

Um grupo de destino é usado para rotear o tráfego para um destino registrado. Uma implantação do Amazon ECS requer dois grupos de destino: um para o conjunto de tarefas original do aplicativo do Amazon ECS e um para seu conjunto de tarefas de substituição. Durante a implantação, CodeDeploy cria um conjunto de tarefas de substituição e redireciona o tráfego do conjunto de tarefas original para o novo. Você especifica os grupos-alvo ao criar o grupo de implantação do seu CodeDeploy aplicativo.

Durante uma implantação, CodeDeploy determina qual grupo-alvo está associado ao conjunto de tarefas em seu serviço Amazon ECS que tem o status PRIMARY (esse é o conjunto de tarefas original) e associa um grupo-alvo a ele e, em seguida, associa o outro grupo-alvo ao conjunto de tarefas de substituição. Se você executar outra implantação, o grupo de destino associado ao conjunto de tarefas original da implantação atual será associado ao conjunto de tarefas de substituição da próxima implantação. Para obter mais informações, consulte Grupos de destino para seus Application Load Balancer no Guia do usuário do Elastic Load Balancing.

Definição de tarefa do Amazon ECS

Uma definição de tarefa é necessária para executar o contêiner do Docker que contém o aplicativo do Amazon ECS. Você especifica o ARN da definição da tarefa no arquivo do CodeDeploy AppSpec aplicativo. Para obter mais informações, consulte Definições de tarefas do Amazon ECS no Guia do desenvolvedor do Serviço Amazon Elastic Container e AppSpec seção 'recursos' para implantações do Amazon ECS.

Contêiner para seu aplicativo do Amazon ECS

Um contêiner do Docker é uma unidade de software que reúne o código e suas dependências para que o aplicativo possa ser executado. Um contêiner isola o aplicativo para que ele seja executado em diferentes ambientes de computação. Seu balanceador de carga direciona o tráfego para um contêiner no conjunto de tarefas do aplicativo do Amazon ECS. Você especifica o nome do seu contêiner no AppSpec arquivo do seu CodeDeploy aplicativo. O contêiner especificado em seu AppSpec arquivo deve ser um dos contêineres especificados na definição de tarefas do Amazon ECS. Para obter mais informações, consulte O que é o Amazon Elastic Container Service? no Guia do usuário do Amazon Elastic Container Service e AppSpec seção 'recursos' para implantações do Amazon ECS.

Uma porta para o conjunto de tarefas de substituição

Durante a implantação do Amazon ECS, seu balanceador de carga direciona o tráfego para essa porta no contêiner especificado no arquivo do seu CodeDeploy aplicativo. AppSpec Você especifica a porta no AppSpec arquivo do seu CodeDeploy aplicativo. Para ter mais informações, consulte AppSpec seção 'recursos' para implantações do Amazon ECS.

Fluxo de trabalho da implantação (alto nível) em uma plataforma de computação do Amazon ECS

O diagrama a seguir mostra as principais etapas na implantação de serviços do Amazon ECS atualizados.

Como CodeDeploy implanta um aplicativo como um conjunto de tarefas no Amazon ECS.

Essas etapas incluem:

  1. Crie um AWS CodeDeploy aplicativo especificando um nome que represente de forma exclusiva o que você deseja implantar. Para implantar um aplicativo Amazon ECS, em seu AWS CodeDeploy aplicativo, escolha a plataforma computacional Amazon ECS. CodeDeploy usa um aplicativo durante uma implantação para referenciar os componentes de implantação corretos, como o grupo de implantação, grupos-alvo, ouvintes, comportamento de redirecionamento de tráfego e revisão do aplicativo. Para ter mais informações, consulte Crie um aplicativo com CodeDeploy.

  2. Configurar um grupo de implantação especificando:

    • O nome do grupo de implantação.

    • Cluster e serviço do Amazon ECS O controlador de implantação do serviço Amazon ECS deve estar configurado como. CodeDeploy

    • O listener de produção, um listener de teste opcional e grupos de destino usados durante uma implantação.

    • Configurações de implantação, como quando redirecionar o tráfego de produção para o conjunto de tarefas de substituição do Amazon ECS em seu serviço do Amazon ECS e quando encerrar o conjunto de tarefas original do Amazon ECS definido em seu serviço do Amazon ECS.

    • Configurações opcionais, como triggers, alarmes e o comportamento de reversão.

  3. Especifique um arquivo de especificação do aplicativo (AppSpec arquivo). Você pode enviá-lo para o Amazon S3, inseri-lo no console no formato YAML ou JSON ou especificá-lo com o ou SDK. AWS CLI O AppSpec arquivo especifica uma definição de tarefa do Amazon ECS para a implantação, um nome de contêiner e mapeamento de portas usados para rotear o tráfego, além de funções Lambda executadas após os ganchos do ciclo de vida da implantação. O nome do contêiner deve ser um contêiner em sua definição de tarefa do . Para ter mais informações, consulte Trabalhando com revisões de aplicativos para CodeDeploy.

  4. Implante a revisão do seu aplicativo. AWS CodeDeploy redireciona o tráfego da versão original de um conjunto de tarefas em seu serviço Amazon ECS para um novo conjunto de tarefas substituto. Grupos de destino especificados no grupo de implantação são usados para fornecer o tráfego para conjuntos de tarefa originais e de substituição. Depois de concluir a implantação, o conjunto de tarefas original é encerrado. Você pode especificar um listener de teste opcional para fornecer o tráfego de teste para a sua versão de substituição antes que o tráfego seja redirecionado a ele. Para ter mais informações, consulte Crie uma implantação com CodeDeploy.

  5. Verificar os resultados da implantação. Para ter mais informações, consulte Monitorando implantações em CodeDeploy.

O que acontece durante uma implantação do

Antes de uma implantação do Amazon ECS com um receptor de teste ser iniciada, você deve configurar seus componentes. Para ter mais informações, consulte Antes de começar uma implantação do .

O diagrama a seguir mostra a relação entre esses componentes quando uma implantação do Amazon ECS está pronta para ser iniciada.

A relação entre o balanceador de carga, os ouvintes, os grupos-alvo e o conjunto de tarefas quando uma implantação do Amazon ECS está pronta para começar.

Quando a implantação é iniciada, os eventos de ciclo de vida de implantação começam a ser executados um de cada vez. Alguns eventos do ciclo de vida são ganchos que executam somente funções Lambda especificadas no arquivo. AppSpec Os eventos de ciclo de vida de implantação na tabela a seguir são listados na ordem em que são executados. Para ter mais informações, consulte AppSpec seção 'hooks' para uma implantação do Amazon ECS.

Evento de ciclo de vida Ação do evento de ciclo de vida
BeforeInstall (um hook para funções do Lambda) Executar função do Lambda
Instalar Configurar o conjunto de tarefas de substituição.
AfterInstall (um hook para funções do Lambda) Executar função do Lambda
AllowTestTraffic Rotear o tráfego do listener de teste para o grupo de destino 2.
AfterAllowTestTraffic (um hook para funções do Lambda) Executar função do Lambda
BeforeAllowTraffic (um hook para funções do Lambda) Executar função do Lambda
AllowTraffic Rotear o tráfego do listener de produção para o grupo de destino 2.
AfterAllowTraffic Executar função do Lambda

nota

As funções do Lambda em um hook são opcionais.

  1. Execute qualquer função Lambda especificada no BeforeInstall gancho do arquivo. AppSpec

  2. Durante o evento de ciclo de vida Install:

    1. Um conjunto de tarefas de substituição é criado no seu serviço .

    2. O aplicativo em contêineres atualizado é instalado no conjunto de tarefas de substituição.

    3. O segundo grupo de destino é associado ao conjunto de tarefas de substituição.

    Este diagrama mostra os componentes de implantação com o novo conjunto de tarefas de substituição. O aplicativo em contêineres está dentro desse conjunto de tarefas. O conjunto de tarefas é composto de três tarefas. (Um aplicativo pode ter qualquer número de tarefas.) O segundo grupo de destino agora está associado ao conjunto de tarefas de substituição.

    Os componentes de implantação com o novo conjunto de tarefas de substituição. O aplicativo em contêineres está dentro desse conjunto de tarefas. O conjunto de tarefas é composto de três tarefas. O segundo grupo de destino agora está associado ao conjunto de tarefas de substituição.
  3. Execute qualquer função Lambda especificada no AfterInstall gancho do arquivo. AppSpec

  4. O evento AllowTestTraffic é invocado. Durante esse evento de ciclo de vida, o listener de teste roteia o tráfego para o aplicativo em contêineres atualizado.

    O ouvinte de teste direciona o tráfego para o aplicativo em contêiner atualizado.
  5. Execute qualquer função Lambda especificada no AfterAllowTestTraffic gancho do arquivo. AppSpec As funções do Lambda podem validar a implantação usando o tráfego de teste. Por exemplo, uma função Lambda pode fornecer o tráfego ao listener de teste e rastrear as métricas do conjunto de tarefas de substituição. Se as reversões estiverem configuradas, você poderá configurar um CloudWatch alarme que acionará uma reversão quando o teste de validação em sua função Lambda falhar.

    Após a conclusão dos testes de validação, ocorre uma das seguintes situações:

    • Se a validação falhar e as reversões estiverem configuradas, o status da implantação será marcado como Failed e os componentes retornarão ao estado em que estavam quando a implantação começou.

    • Se a validação falhar e as reversões não estiverem configuradas, o status da implantação será marcado como Failed e os componentes permanecerão no estado atual.

    • Se a validação for bem-sucedida, a implantação continuará no gancho BeforeAllowTraffic.

    Para obter mais informações, consulte Monitorando implantações com CloudWatch alarmes em CodeDeploy, Reversões automáticas e Configurar opções avançadas para um grupo de implantação.

  6. Execute qualquer função Lambda especificada no BeforeAllowTraffic gancho do arquivo. AppSpec

  7. O evento AllowTraffic é invocado. O tráfego de produção é redirecionado do conjunto de tarefas original para o conjunto de tarefas de substituição. O diagrama a seguir mostra o conjunto de tarefas de substituição recebendo o tráfego de produção.

    O conjunto de tarefas de substituição recebe tráfego de produção.
  8. Execute qualquer função Lambda especificada no AfterAllowTraffic gancho do arquivo. AppSpec

  9. Após a execução bem-sucedida de todos os eventos, o status da implantação é definido como Succeeded e o conjunto de tarefas original é removido.

    Todos os eventos estão sendo bem-sucedidos.

Carregando sua revisão de aplicativo

Coloque um AppSpec arquivo no Amazon S3 ou insira-o diretamente no console ou. AWS CLI Para ter mais informações, consulte Application Specification Files.

Criando seus grupos de implantação e aplicativos

Um grupo de CodeDeploy implantação em uma plataforma computacional do Amazon ECS identifica ouvintes para fornecer tráfego para seu aplicativo Amazon ECS atualizado e dois grupos-alvo usados durante sua implantação. Um grupo de implantação também define um conjunto de opções de configuração, como configurações de reversões e alarmes.

Implantando sua revisão de aplicativo

Agora, você está pronto para implantar o serviço do Amazon ECS atualizado e especificado no seu grupo de implantação. Você pode usar o CodeDeploy console ou o comando create-deployment. Existem parâmetros que você pode especificar para controlar sua implantação, incluindo o grupo de implantação e a revisão.

Atualizar o aplicativo

Você pode fazer atualizações em seu aplicativo e depois usar o CodeDeploy console ou chamar o comando create-deployment para enviar uma revisão.

Implantações interrompidas e com falha

Você pode usar o CodeDeploy console ou o comando stop-deployment para interromper uma implantação. Quando você tenta interromper a implantação, uma de três coisas acontece:

  • A implantação é interrompida, e a operação retorna a um status de sucesso. Nesse caso, mais nenhum evento de ciclo de vida de implantação é executado no grupo de implantação para a implantação interrompida.

  • A implantação não é interrompida imediatamente, e a operação retorna um status pendente. Nesse caso, alguns eventos de ciclo de vida de implantação ainda podem estar em execução no grupo de implantação. Após a conclusão da operação pendente, as chamadas subsequentes para interromper a implantação retornam um status de sucesso.

  • A implantação não pode ser interrompida, e a operação retorna um erro. Para obter mais informações, consulte Informações sobre erros e Erros comuns na Referência AWS CodeDeploy da API.

Reimplantações e reversões de implantação

CodeDeploy implementa reversões redirecionando o tráfego do conjunto de tarefas de substituição para o conjunto de tarefas original.

Você pode configurar um grupo de implantação para reverter automaticamente as implantações quando determinadas condições forem atendidas, inclusive quando uma implantação falhar ou um limite de monitoramento de alarme for atingido. Você também pode substituir configurações de reversão especificadas para um grupo de implantação em uma implantação individual.

Além disso, pode optar por reverter uma implantação com falha, reimplantando manualmente uma revisão anteriormente implantada.

Em todos os casos, a implantação nova ou revertida tem um ID de implantação próprio. O CodeDeploy console exibe uma lista de implantações que são o resultado de uma implantação automática.

Se você implantar novamente, o grupo de destino associado ao conjunto de tarefas original da implantação atual será associado ao conjunto de tarefas de substituição da nova implantação.

Para ter mais informações, consulte Reimplante e reverta uma implantação com CodeDeploy.

Implantações azuis/verdes do Amazon ECS através do AWS CloudFormation

Você pode usar AWS CloudFormation para gerenciar implantações azul/verde do Amazon ECS por meio de. CodeDeploy Para ter mais informações, consulte Crie uma implantação azul/verde do Amazon ECS por meio de AWS CloudFormation.

nota

O gerenciamento de implantações azul/verde do Amazon ECS com não AWS CloudFormation está disponível na região Ásia-Pacífico (Osaka).