Implantações em uma plataforma de ECS computação da Amazon - 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ções em uma plataforma de ECS computação da Amazon

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

Antes de começar uma ECS implantação da Amazon

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

Requisito Onde especificado
ECSCluster da Amazon Grupo de implantação
ECSServiço Amazon 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 ECS tarefa da Amazon AppSpec arquivo
Nome do contêiner AppSpec arquivo
Porta do contêiner AppSpec arquivo
ECSCluster da Amazon

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

ECSServiço Amazon

Um ECS serviço da Amazon mantém e executa instâncias específicas de uma definição de tarefa em um ECS cluster da Amazon. Seu ECS serviço Amazon deve estar habilitado para CodeDeploy. Por padrão, um ECS serviço da Amazon está habilitado para ECS implantações da Amazon. Ao criar seu grupo de implantação, você opta por implantar um ECS serviço da Amazon que está em seu ECS cluster da Amazon. Para obter mais informações, consulte os ECSserviços da Amazon no Guia do usuário do Amazon Elastic Container Service.

Application Load Balancer e Network Load Balancer

Você deve usar o Elastic Load Balancing com o ECS serviço da Amazon que você deseja atualizar com uma implantação da AmazonECS. É 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ê usa o ECS console da Amazon para criar seu ECS serviço Amazon, seus ouvintes 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 ECS grupos-alvo da Amazon

Um grupo de destino é usado para rotear o tráfego para um destino registrado. Uma ECS implantação da Amazon requer dois grupos-alvo: um para o conjunto de tarefas original do seu ECS aplicativo Amazon e outro para o 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 ECS serviço Amazon 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.

Uma definição de ECS tarefa da Amazon

É necessária uma definição de tarefa para executar o contêiner Docker que contém seu ECS aplicativo Amazon. Você especifica a definição ARN da sua tarefa no AppSpec arquivo do seu CodeDeploy aplicativo. Para obter mais informações, consulte as definições de ECS tarefas da Amazon no Guia do usuário do Amazon Elastic Container Service AppSpec seção 'recursos' para ECS implantações da Amazon e.

Um contêiner para seu ECS aplicativo Amazon

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 seu ECS aplicativo Amazon. 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 ECS tarefas da Amazon. 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 ECS implantações da Amazon.

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

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

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

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

Como CodeDeploy implanta um aplicativo como um conjunto de tarefas na AmazonECS.

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 ECS aplicativo da Amazon, em seu AWS CodeDeploy aplicativo, escolha a plataforma de ECS computação da Amazon. 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 obter mais informações, consulte Crie um aplicativo com CodeDeploy.

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

    • O nome do grupo de implantação.

    • Seu ECS cluster e nome do serviço da Amazon. O controlador de implantação do ECS serviço Amazon 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 ECS tarefas substituto da Amazon em seu ECS serviço Amazon e quando encerrar o conjunto de ECS tarefas original da Amazon em seu serviço 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 carregá-lo para o Amazon S3, inseri-lo no console no JSON formato YAML ou especificá-lo com o AWS CLI ou. SDK O AppSpec arquivo especifica uma definição de ECS tarefa da Amazon para a implantação, um nome de contêiner e mapeamento de portas usados para rotear o tráfego, e as funções Lambda são executadas após os ganchos do ciclo de vida da implantação. O nome do contêiner deve ser um contêiner na sua definição de ECS tarefa da Amazon. Para obter 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 ECS serviço Amazon 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 obter mais informações, consulte Crie uma implantação com CodeDeploy.

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

O que acontece durante uma ECS implantação da Amazon

Antes do início de uma ECS implantação da Amazon com um ouvinte de teste, você deve configurar seus componentes. Para obter mais informações, consulte Antes de começar uma ECS implantação da Amazon.

O diagrama a seguir mostra a relação entre esses componentes quando uma ECS implantação da Amazon está pronta para começar.

A relação entre o balanceador de carga, os ouvintes, os grupos-alvo e o conjunto de tarefas quando uma ECS implantação da Amazon 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 obter mais informações, consulte AppSpec seção 'hooks' para uma implantação da 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 todas as funções do Lambda especificadas no BeforeInstall gancho do AppSpec arquivo.

  2. Durante o evento de ciclo de vida Install:

    1. Um conjunto de tarefas de substituição é criado em seu ECS serviço Amazon.

    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 todas as funções do Lambda especificadas no AfterInstall gancho do AppSpec arquivo.

  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 todas as funções do Lambda especificadas no AfterAllowTestTraffic gancho do AppSpec arquivo. 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 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 todas as funções do Lambda especificadas no BeforeAllowTraffic gancho do AppSpec arquivo.

  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 todas as funções do Lambda especificadas no AfterAllowTraffic gancho do AppSpec arquivo.

  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 obter mais informações, consulte Application Specification Files.

Criando seus grupos de implantação e aplicativos

Um grupo de CodeDeploy implantação em uma plataforma ECS computacional da Amazon identifica ouvintes para fornecer tráfego para seu ECS aplicativo Amazon 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 ECS serviço atualizado da Amazon especificado em 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, em seguida, 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 AWS CodeDeploy API referência.

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 obter mais informações, consulte Reimplante e reverta uma implantação com CodeDeploy.

Implantações ECS azul/verde da Amazon por meio de AWS CloudFormation

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

nota

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