Ir para o conteúdo

Como posso realizar implantações azul/verde para serviços hospedados no Amazon ECS?

6 minuto de leitura
0

Quero realizar a implantação azul/verde para serviços hospedados no Amazon Elastic Container Service (Amazon ECS).

Breve descrição

Antes de seguir as etapas para realizar uma implantação azul/verde, verifique se você tem o seguinte:

Resolução

Crie um perfil de serviço do IAM

Antes de poder implantar o tipo azul/verde para o AWS CodeDeploy com o Amazon ECS, o serviço CodeDeploy deve ter permissões para atualizar o seu serviço ECS em seu nome. Para conceder essas permissões, conclua as seguintes etapas:

  1. Abra o console do AWS Identity and Access Management (AWS IAM).
  2. No painel de navegação, selecione Perfis.
  3. Selecione Criar perfil.
  4. Na seção Selecionar tipo de entidade confiável, selecione Serviço da AWS e, em seguida, selecione CodeDeploy.
  5. Na seção Selecionar seu caso de uso, selecione CodeDeploy - ECS e, em seguida, selecione Avançar.
    Observação: mantenha a política padrão do AWSCodeDeployRoleForECS. Essa política inclui as permissões que o CodeDeploy exige para interagir corretamente com o Amazon ECS e outros serviços.
  6. Escolha Avançar
  7. Em Nome do perfil, insira ecsCodeDeployRole
  8. (Opcional) Adicionar etiquetas
  9. Selecione Criar perfil.

Crie o Application Load Balancer

Conclua as seguintes etapas para criar um Application Load Balancer:

  1. Abra o console do Amazon EC2.
  2. No painel de navegação, na seção Balanceamento de carga, selecione Balanceadores de carga.
  3. Selecione Criar balanceador de carga.
  4. Na seção Selecionar tipo de balanceador de carga, em Application Load Balancer, escolha Criar.
  5. Em Nome, insira um nome para o balanceador de carga.
  6. Na seção Mapeamento de rede, selecione a VPC em que seu cluster do Amazon ECS foi criado. Em seguida, selecione quaisquer duas sub-redes com acesso à internet.
  7. Na seção Grupos de segurança, selecione o hiperlink "Criar um novo grupo de segurança".
  8. Em Nome do grupo de segurança, insira Grupo de segurança de exemplo.
  9. Selecione Adicionar regra.
  10. Em Intervalo de portas, insira 8080. Em Origem, insira 0.0.0.0/0.
  11. Escolha Criar grupo de segurança.
  12. Atualize os grupos de segurança na visualização da página do balanceador de carga e, em seguida, Selecione o grupo de segurança recém-criado.
  13. Na seção Receptores e roteamento, selecione o hiperlink "Criar grupo de destino".
  14. Em Tipo de destino, escolha Endereços IP.
  15. Em Grupo de destino, insira um nome para seu grupo de destino.
  16. Escolha Avançar e, em seguida, registre seu grupo de destino e defina seu IP.
  17. Selecione Criar grupo de destino.

Criar uma definição de tarefa

Conclua as etapas a seguir:

  1. Abra o console do Amazon ECS.
  2. No painel de navegação, selecione Definições de tarefa.
  3. Clique em Criar nova definição de tarefa.
  4. Selecione Fargate e, em seguida, clique em Próxima etapa.
  5. Configure a definição da tarefa e escolha Criar.

O exemplo de definição de tarefa a seguir usa o tipo de inicialização do AWS Fargate e uma imagem NGINX do Docker Hub:

Observação: substitua o valor de account_ID pelo seu próprio número de conta neste e no exemplo a seguir.

{
  "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole",
  "containerDefinitions": [
    {
      "name": "sample-website",
      "image": "nginx:latest",
      "essential": true,
      "portMappings": [
        {
          "hostPort": 80,
          "protocol": "tcp",
          "containerPort": 80
        }
      ]
    }
  ],
  "requiresCompatibilities": [
    "FARGATE"
  ],
  "networkMode": "awsvpc",
  "cpu": "256",
  "memory": "512",
  "family": "sample-website"
}

Crie um serviço do Amazon ECS

Conclua as etapas a seguir:

  1. Abra o console do Amazon ECS.
  2. Na seção Amazon ECS do painel de navegação, selecione Clusters e, em seguida, selecione o seu cluster.
  3. Na guia Serviços, selecione Criar para criar um serviço.
  4. Na seção Ambiente, selecione Tipo de inicialização e, em seguida, selecione FARGATE.
  5. Em Definição de tarefa, selecione a definição de tarefa criada na seção anterior.
  6. Em Nome do serviço, insira um nome para o serviço. Por exemplo: Site-de-Exemplo.
  7. Em Número de tarefas, insira o número de tarefas que você deseja que seu serviço execute.
  8. Na seção Opções de implantação, selecione Implantação azul/verde (desenvolvida pelo AWS CodeDeploy).
  9. Em Perfil de serviço para CodeDeploy, escolha o perfil de serviço ecsCodeDeployRole que você criou anteriormente.
  10. Na seção Rede, escolha seu cluster VPC e sub-redes, bem como o grupo de segurança que você criou anteriormente.
  11. Na seção Balanceamento de carga, em Tipo de balanceador de carga, selecione Application Load Balancer.
  12. Em Nome do balanceador de carga, selecione o balanceador de carga que você criou anteriormente.
  13. Na seção Receptores, em Porta do receptor de produção, selecione 80:HTTP.
  14. Marque a caixa de seleção Adicionar um receptor de teste.
  15. Em Testar porta do receptor, selecione criar nova e, em seguida, digite 8080 como porta do receptor.
  16. Na seção Grupos de destino, em Nome do grupo de destino 1, selecione o grupo de destino que você criou ao criar o balanceador de carga.
  17. Para o Nome do grupo de destino 2, crie um novo grupo de destino no console do Amazon ECS com o nome sample-website-tg-2.
  18. Selecione Criar.

Agora, é possível ver o novo serviço criado com uma tarefa em execução.

Verifique se a implantação azul/verde do Amazon ECS funciona corretamente

Depois de criar o serviço azul/verde do Amazon ECS, crie uma nova revisão de definição de tarefa com as alterações e, em seguida, atualize o serviço do Amazon ECS. Essa ação cria uma implantação no console do CodeDeploy.

Conclua as etapas abaixo para verificar se a sua implantação está funcionando:

  1. Abra o console do Amazon ECS.

  2. No painel de navegação, selecione Definições de tarefa.

  3. Selecione sua definição de tarefa, selecione Criar nova revisão e, em seguida, selecione Criar.
    Observação: no exemplo a seguir, a propriedade da imagem é atualizada para usar httpd:2.4.

    {
      "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole",
      "containerDefinitions": [
        {
          "name": "sample-website",
          "image": "httpd:2.4",
          "essential": true,
          "portMappings": [
            {
              "hostPort": 80,
              "protocol": "tcp",
              "containerPort": 80
            }
          ]
        }
      ],
      "requiresCompatibilities": [
        "FARGATE"
      ],
      "networkMode": "awsvpc",
      "cpu": "256",
      "memory": "512",
      "family": "sample-website"
    }
  4. No painel de navegação, selecione Clusters e, em seguida, selecione o cluster em que você implantou seu serviço do Amazon ECS.

  5. Na guia Serviços, selecione seu serviço do Amazon ECS e, em seguida, selecione Atualizar.

  6. Na seção Configuração de implantação, em Definição de tarefa, escolha a revisão mais recente, criada na etapa 3.

  7. Clique em Atualizar.

  8. Na guia Implantações, na coluna ID de implantação, selecione o ID de implantação para visualizar a implantação do CodeDeploy.

AWS OFICIALAtualizada há 2 anos