Migração dos NGINX Ingress Controllers ao habilitar o Modo Automático do Amazon EKS
Olawale Olaleye e Shamanth Devagari, Amazon Web Services
Resumo
O Modo Automático do EKS para o Amazon Elastic Kubernetes Service (Amazon EKS) pode reduzir a sobrecarga operacional de executar as workloads em clusters do Kubernetes. Com esse modo, a AWS passa a cuidar da configuração e do gerenciamento da infraestrutura por você. Ao habilitar o Modo Automático do EKS em um cluster existente, é necessário planejar cuidadosamente a migração das configurações do NGINX Ingress Controller
Você pode usar uma estratégia de implantação azul/verde para migrar uma instância do NGINX Ingress Controller ao habilitar o Modo Automático do EKS em um cluster do Amazon EKS existente.
Pré-requisitos e limitações
Pré-requisitos
Uma Conta da AWS ativa
Um cluster do Amazon EKS que executa a versão 1.29 ou versões posteriores do Kubernetes
Versões mínimas requeridas para os complementos do Amazon EKS
Versão mais recente do kubectl
Uma instância existente do NGINX Ingress Controller
(Opcional) Uma zona hospedada no Amazon Route 53 para redirecionamento de tráfego baseado em DNS
Arquitetura
Uma implantação azul/verde consiste em uma estratégia de implantação na qual você cria dois ambientes separados, mas idênticos. As implantações azul/verde garantem lançamentos com praticamente nenhum tempo de inatividade e suporte a funcionalidades de reversão. A ideia fundamental consiste em alternar o tráfego entre dois ambientes idênticos que estão executando versões diferentes da aplicação.
A imagem apresentada a seguir ilustra a migração de Network Load Balancers de duas instâncias diferentes do NGINX Ingress Controller ao habilitar o Modo Automático do EKS. Você usa uma implantação azul/verde para alternar o tráfego entre os dois Network Load Balancers.

O namespace de origem é o namespace azul. Este é o local em que o serviço e a instância originais do NGINX Ingress Controller são executados, antes de você habilitar o Modo Automático do EKS. O serviço e a instância originais estabelecem conexão com um Network Load Balancer que tem um nome de DNS configurado no Route 53. O AWS Load Balancer Controller
O diagrama ilustra o seguinte fluxo de trabalho para configurar um ambiente para a implantação azul/verde:
Instale e configure outra instância do NGINX Ingress Controller em um namespace diferente, o namespace verde.
No Route 53, configure um nome de DNS para um novo Network Load Balancer.
Ferramentas
Serviços da AWS
O Amazon Elastic Kubernetes Service (Amazon EKS) ajuda você a executar o Kubernetes na AWSsem precisar instalar e manter seus próprios nós ou painel de controle do Kubernetes.
O Elastic Load Balancing (ELB) distribui o tráfego de entrada de aplicativos ou de rede em vários destinos. Por exemplo, é possível distribuir o tráfego entre instâncias, contêineres e endereços IP do Amazon Elastic Compute Cloud (Amazon EC2) em uma ou mais Zonas de disponibilidade.
O Amazon Route 53 é um serviço web de DNS altamente disponível e escalável.
A Amazon Virtual Private Cloud (Amazon VPC) ajuda a iniciar recursos da AWS em uma rede virtual definida por você. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS.
Outras ferramentas
O Helm
é um gerenciador de pacotes de código aberto para o Kubernetes que auxilia na instalação e no gerenciamento de aplicações no cluster do Kubernetes. kubectl
é uma interface de linha de comando que ajuda você na execução de comandos em clusters do Kubernetes. O NGINX Ingress Controller
conecta aplicações e serviços do Kubernetes, fornecendo gerenciamento de solicitações, autenticação, recursos personalizados de autoatendimento e depuração.
Épicos
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Confirme que a instância original do NGINX Ingress Controller está operacional. | Digite o comando apresentado a seguir para verificar se os recursos no namespace
Na saída do comando, certifique-se de que os pods do NGINX Ingress Controller estão no estado de execução. Veja a seguir um exemplo de saída:
| Engenheiro de DevOps |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Crie os recursos do Kubernetes. | Digite os seguintes comandos para criar uma implantação, um serviço e uma entrada de amostra do Kubernetes:
| Engenheiro de DevOps |
Analise os recursos implantados. | Digite o seguinte comando para visualizar uma lista dos recursos implantados:
Na saída do comando, certifique-se de que o pod HTTPd de amostra está no estado de execução. Veja a seguir um exemplo de saída:
| Engenheiro de DevOps |
Confirme se o serviço está disponível. | Digite o seguinte comando para confirmar que o serviço está disponível por meio do nome de DNS do Network Load Balancer:
A saída esperada é a seguinte:
| Engenheiro de DevOps |
(Opcional) Crie um registro de DNS. |
| Engenheiro de DevOps, AWS DevOps |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Habilite o Modo Automático do EKS. | Siga as instruções apresentadas em Habilitar o Modo Automático do EKS em um cluster existente (documentação do Amazon EKS). | AWS DevOps |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Configure uma nova instância do NGINX Ingress Controller. |
| Engenheiro de DevOps |
Realize a implantação da nova instância do NGINX Ingress Controller. | Digite o seguinte comando para aplicar o arquivo de manifesto modificado:
| Engenheiro de DevOps |
Confirme se a implantação teve êxito. | Digite o seguinte comando para verificar se os recursos no namespace
Na saída do comando, certifique-se de que os pods do NGINX Ingress Controller estão em um estado de execução. Veja a seguir um exemplo de saída:
| Engenheiro de DevOps |
Crie uma nova entrada para a workload HTTPd de amostra. | Digite o seguinte comando para criar uma nova entrada para a workload HTTPd de amostra existente:
| Engenheiro de DevOps |
Confirme se a nova entrada está funcionando. | Digite o seguinte comando para confirmar se a nova entrada está funcionando:
A saída esperada é a seguinte:
| Engenheiro de DevOps |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Realize a substituição para o novo namespace. |
| AWS DevOps, engenheiro de DevOps |
Analise as duas entradas. | Digite o seguinte comando para analisar as duas entradas que foram criadas para a workload HTTPd de amostra:
Veja a seguir um exemplo de saída:
| Engenheiro de DevOps |
Recursos relacionados
Habilitar o Modo Automático do EKS em um cluster existente (documentação do Amazon EKS)
Troubleshoot load balancers created by the Kubernetes service controller in Amazon EKS
(Centro de Conhecimentos do AWS re:Post) NGINX Ingress Controller
(documentação do NGINX)