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:
- Abra o console do AWS Identity and Access Management (AWS IAM).
- No painel de navegação, selecione Perfis.
- Selecione Criar perfil.
- Na seção Selecionar tipo de entidade confiável, selecione Serviço da AWS e, em seguida, selecione CodeDeploy.
- 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.
- Escolha Avançar
- Em Nome do perfil, insira ecsCodeDeployRole
- (Opcional) Adicionar etiquetas
- Selecione Criar perfil.
Crie o Application Load Balancer
Conclua as seguintes etapas para criar um Application Load Balancer:
- Abra o console do Amazon EC2.
- No painel de navegação, na seção Balanceamento de carga, selecione Balanceadores de carga.
- Selecione Criar balanceador de carga.
- Na seção Selecionar tipo de balanceador de carga, em Application Load Balancer, escolha Criar.
- Em Nome, insira um nome para o balanceador de carga.
- 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.
- Na seção Grupos de segurança, selecione o hiperlink "Criar um novo grupo de segurança".
- Em Nome do grupo de segurança, insira Grupo de segurança de exemplo.
- Selecione Adicionar regra.
- Em Intervalo de portas, insira 8080. Em Origem, insira 0.0.0.0/0.
- Escolha Criar grupo de segurança.
- 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.
- Na seção Receptores e roteamento, selecione o hiperlink "Criar grupo de destino".
- Em Tipo de destino, escolha Endereços IP.
- Em Grupo de destino, insira um nome para seu grupo de destino.
- Escolha Avançar e, em seguida, registre seu grupo de destino e defina seu IP.
- Selecione Criar grupo de destino.
Criar uma definição de tarefa
Conclua as etapas a seguir:
- Abra o console do Amazon ECS.
- No painel de navegação, selecione Definições de tarefa.
- Clique em Criar nova definição de tarefa.
- Selecione Fargate e, em seguida, clique em Próxima etapa.
- 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:
- Abra o console do Amazon ECS.
- Na seção Amazon ECS do painel de navegação, selecione Clusters e, em seguida, selecione o seu cluster.
- Na guia Serviços, selecione Criar para criar um serviço.
- Na seção Ambiente, selecione Tipo de inicialização e, em seguida, selecione FARGATE.
- Em Definição de tarefa, selecione a definição de tarefa criada na seção anterior.
- Em Nome do serviço, insira um nome para o serviço. Por exemplo: Site-de-Exemplo.
- Em Número de tarefas, insira o número de tarefas que você deseja que seu serviço execute.
- Na seção Opções de implantação, selecione Implantação azul/verde (desenvolvida pelo AWS CodeDeploy).
- Em Perfil de serviço para CodeDeploy, escolha o perfil de serviço ecsCodeDeployRole que você criou anteriormente.
- Na seção Rede, escolha seu cluster VPC e sub-redes, bem como o grupo de segurança que você criou anteriormente.
- Na seção Balanceamento de carga, em Tipo de balanceador de carga, selecione Application Load Balancer.
- Em Nome do balanceador de carga, selecione o balanceador de carga que você criou anteriormente.
- Na seção Receptores, em Porta do receptor de produção, selecione 80:HTTP.
- Marque a caixa de seleção Adicionar um receptor de teste.
- Em Testar porta do receptor, selecione criar nova e, em seguida, digite 8080 como porta do receptor.
- 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.
- 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.
- 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:
-
Abra o console do Amazon ECS.
-
No painel de navegação, selecione Definições de tarefa.
-
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"
}
-
No painel de navegação, selecione Clusters e, em seguida, selecione o cluster em que você implantou seu serviço do Amazon ECS.
-
Na guia Serviços, selecione seu serviço do Amazon ECS e, em seguida, selecione Atualizar.
-
Na seção Configuração de implantação, em Definição de tarefa, escolha a revisão mais recente, criada na etapa 3.
-
Clique em Atualizar.
-
Na guia Implantações, na coluna ID de implantação, selecione o ID de implantação para visualizar a implantação do CodeDeploy.