Explorando Kubernetes: Uma Comparação Prática com AKS e EKS usando Terraform

Cláudio Rapôso
9 min readJan 26, 2024
Para todos verem: A imagem parece ser um gráfico promocional para uma sessão educacional ou informativa sobre tecnologias de nuvem, especificamente focando em Kubernetes. Inclui uma pessoa que provavelmente é um palestrante ou figura chave para o evento, junto com vários logos que indicam patrocínio ou afiliação, como Microsoft MVP e MCT. O texto “O Sertão será Cloud” sugere um tema ou título relacionado à tecnologia de nuvem. O texto adicional menciona “Explorando Kubernetes: Uma Comparação Prática com AKS e EKS usando Terraform”, o que indica que a sessão cobrirá uma comparação prática entre Azure Kubernetes Service (AKS) e Amazon Elastic Kubernetes Service (EKS) usando Terraform, que é uma ferramenta de software de infraestrutura como código.

À medida que a computação em nuvem evolui rapidamente, o Kubernetes tornou-se um facilitador para a orquestração de aplicações conteinerizadas. Entre a miríade de opções disponíveis, dois gigantes se destacam: o Azure Kubernetes Service (AKS) da Microsoft e o Elastic Kubernetes Service (EKS) da Amazon Web Services. Ambos possuem características e capacidades distintas, o que faz a escolha entre eles se tornar um ponto crucial para organizações e desenvolvedores.

Este artigo embarca em uma jornada aprofundada para entender e contrastar esses dois poderosos serviços de Kubernetes. Começaremos com uma visão geral do AKS, observando sua implementação antes de examinar os principais detalhes e benefícios. Em seguida, discutiremos o EKS e explicaremos as forças dessa ferramenta, bem como suas características. Nossa expedição não se limita a meras descrições; teremos um guia passo a passo para configurar clusters em ambos os ambientes usando o Terraform, uma ferramenta IAC amplamente adotada.

O que faz a diferença nesta comparação é nossa abordagem prática. Em vez de apenas enumerar características, olharemos para casos de uso práticos, incluindo a discussão e análise de fatores como facilidade de instalação e configuração, potenciais de gestão com considerações de custo e procedimentos médios. Ao final deste artigo, você terá uma melhor compreensão sobre qual entre o AKS e o EKS é melhor para o seu caso específico.

Não importa se você é um veterano na nuvem ou um novato ambicioso que gostaria de se aventurar no reino do Kubernetes, este artigo visa fornecer orientações úteis para uma tomada de decisão ótima entre AKS e EKS. Em outras palavras, vamos nos aprofundar nesta viagem esclarecedora pelos domínios da Azure e da AWS para utilizar o Kubernetes na nuvem.

Iniciando com o Azure Kubernetes Service (AKS)

Para todos verem: A imagem parece apresentar dois logotipos. À esquerda, há um hexágono azul com um leme de navio branco, que é o logotipo do Kubernetes, uma plataforma de código aberto para automatizar a implantação, escalabilidade e operações de aplicações conteinerizadas. À direita, há um círculo roxo com uma grade branca de cubos, que representa o logotipo de um serviço específico do Azure, provavelmente o Azure Kubernetes Service, um serviço gerenciado que facilita a execução do Kubernetes no Azure sem a necessidade de instalar e operar seu próprio plano de controle ou nós trabalhadores do Kubernetes. site:https://codedataops.files.wordpress.com/2023/03/k8saks1-1.jpg

O Microsoft Azure apresenta um dos melhores serviços de contêineres com o AKS, um serviço gerenciado poderoso que ajuda a implantar, gerenciar e escalar aplicações no Kubernetes. O AKS integra-se perfeitamente com os recursos principais do Azure, permitindo que os usuários acessem facilmente os benefícios do Kubernetes dentro do ambiente Azure.

Nesta seção, veremos como criar um cluster AKS usando o Terraform. Este é uma ferramenta popular de infraestrutura como código que permite definir, provisionar e gerenciar infraestruturas em nuvem com a ajuda de códigos.

Pré-requisitos: Antes de mergulhar no código do Terraform, certifique-se de ter o seguinte:

  • Uma assinatura ativa do Azure: Se você não tem uma, inscreva-se para um teste gratuito aqui.
  • Azure CLI instalado em sua máquina local, Instruções para instalação podem ser encontradas aqui.
  • Terraform que você pode baixá-lo no site do Terraform.
  • Autentique sua sessão do Azure CLI: Execute az logine siga as instruções para entrar com suas credenciais do Azure.

Criando um Cluster AKS: Vamos usar o Terraform para definir nosso cluster AKS. A configuração abaixo ilustra a criação de um grupo de recursos Azure e um cluster AKS dentro dele por meio de um Terraform simplificado.

  • Definindo o Provedor Azure: Primeiro, especifique a versão do provedor Azure e a região na sua configuração do Terraform.
provider "azurerm" {
features {}
}
  • Definindo o Grupo de Recursos Azure: Este bloco de código cria um novo grupo de recursos no Azure onde seu cluster AKS residirá.
resource "azurerm_kubernetes_cluster" "aks" {
name = "myAKSCluster"
location = azurerm_resource_group.aks.location
resource_group_name = azurerm_resource_group.aks.name
dns_prefix = "myAKS"
linux_profile {
admin_username = "azureuser"
ssh_key {
key_data = file("~/.ssh/id_rsa.pub")
}
}
agent_pool_profile {
name = "aksagentpool"
count = 3
vm_size = "Standard_DS2_v2"
os_type = "Linux"
}
}

Após realizar os passos acima, você terá um cluster AKS. A configuração também é fácil — construindo um cluster para fins iniciais de investigação e desenvolvimento.

Esta configuração pode ser ainda mais aprimorada com recursos mais avançados, como configuração de rede, parâmetros de escalonamento e integração de outros serviços Azure à medida que você se familiariza com o AKS e o Terraform.

Na próxima seção, concentraremos agora no Amazon Elastic Kubernetes Service (EKS) e como configurá-lo usando o Terraform, o que serve como um ponto de partida para comparar o AKS com o EKS.

Introdução ao Amazon Elastic Kubernetes Service (EKS)

Para todos verem: A imagem apresenta dois logotipos com seus respectivos nomes abaixo deles. À esquerda está o logotipo do Kubernetes, que consiste em um hexágono azul com um leme de navio estilizado branco no centro. Abaixo do logotipo está a palavra "kubernetes" em letras azuis minúsculas. No lado direito está o logotipo do Amazon EKS, que tem uma forma hexagonal com três tons de azul criando um efeito 3D e uma letra "K" branca no centro. Abaixo deste logotipo, as palavras "Amazon EKS" aparecem em azul escuro, com "Amazon" em um peso de fonte mais claro do que "EKS". O fundo da imagem é branco, proporcionando um pano de fundo neutro que faz os logotipos se destacarem. site: https://media.licdn.com/dms/image/C4E12AQGgwpApImZnuA/article-cover_image-shrink_720_1280/0/1648571455857?e=2147483647&v=beta&t=PAKB6aMJCkIKHJ6EoQsVu3EIqjRb7zJaZ7v4v5zmmRA

Para atender ainda mais às necessidades de seus clientes, a AWS oferece o Amazon Elastic Kubernetes Service (EKS), que é um serviço totalmente gerenciado pela Amazon. Ele oferece um ambiente escalável e seguro no qual você pode operar seus programas conteinerizados. Portanto, o EKS é uma escolha muito inteligente para aqueles que usam uma plataforma de nuvem da Amazon, pois se integra facilmente com o poderoso ecossistema da AWS.

Nesta seção, demonstraremos como criar um cluster EKS usando o Terraform. Esta perspectiva pragmática lhe proporcionará uma compreensão de como o EKS funciona e também algumas dicas práticas sobre sua implementação.

Pré-requisitos: Antes de começarmos, certifique-se de ter o seguinte:

  • Uma conta AWS. Você pode criar uma aqui.
  • AWS CLI instalado em sua máquina local. Siga o guia de instalação aqui.
  • Terraform que você pode baixá-lo no site do Terraform.
  • Configure o AWS CLI com suas credenciais usando aws configure. Esta etapa exigirá seu ID de Chave de Acesso AWS e Chave de Acesso Secreta.

Configurando um Cluster EKS: Abaixo, fornecemos um script Terraform para configurar um cluster EKS básico. Este script é um ponto de partida e pode ser expandido para implantações mais complexas.

  • Definindo o Provedor AWS: Primeiro, especifique a versão do provedor AWS e a região na sua configuração do Terraform.
provider "aws" {
version = "~> 3.0"
region = "us-west-2"
}
  • Criar um Cluster EKS: Defina o cluster EKS com os recursos computacionais necessários, como grupos de nós.
resource "aws_eks_cluster" "example" {
name = "myEksCluster"
role_arn = aws_iam_role.eks.arn

vpc_config {
subnet_ids = [aws_subnet.example.id]
}
}

resource "aws_iam_role" "eks" {
name = "eksClusterRole"

assume_role_policy = jsonencode({
Version = "2012-10-17",
Statement = [{
Action = "sts:AssumeRole",
Effect = "Allow",
Principal = {
Service = "eks.amazonaws.com"
}
}]
})
}

resource "aws_eks_node_group" "example" {
cluster_name = aws_eks_cluster.example.name
node_group_name = "eks-node-group"
node_role_arn = aws_iam_role.eks_node.arn
subnet_ids = [aws_subnet.example.id]

scaling_config {
desired_size = 3
max_size = 3
min_size = 1
}
}

Este script Terraform configura um cluster EKS simples. A configuração inclui a criação de uma função IAM para o EKS, definição de clusters e configuração de Nodegroups para recursos que computam um cluster.

O EKS oferece diferentes configurações avançadas, incluindo integração com o AWS Fargate para nós de computação sem servidor, autoescalabilidade e mais. Com o tempo, à medida que você ganha mais experiência com a AWS e o EKS, essa configuração simples pode ser estendida para atender às suas necessidades exatas.

Na próxima seção, compararemos o AKS e o EKS em um ambiente prático usando recursos como facilidade de configuração, qualidade de gestão, capacidade de escalabilidade; eficiência de custo e desempenho. Esta discussão será útil para qualquer pessoa tentando escolher entre estes dois serviços confiáveis de Kubernetes.

Comparando Ambientes AKS e EKS

Após investigar a configuração de ambos os serviços Azure Kubernetes Service (AKS) e Amazon Elastic Kubernetes Service (EKS), fica evidente que cada plataforma apresenta suas qualidades e capacidades distintas. Nesta seção, mergulharemos em uma análise desses ambientes, com ênfase em vários aspectos cruciais.

Facilidade de Configuração:

  • AKS: A integração do Azure com o Terraform permite uma configuração relativamente direta do AKS. O Azure CLI é fácil de usar, e o Portal Azure oferece uma interface visual que pode ser útil para iniciantes ou para solução de problemas.
  • EKS: Configurar o EKS usando o Terraform também é eficiente, mas pode envolver uma curva de aprendizado mais acentuada devido à extensa gama de serviços e configurações da AWS. O AWS CLI oferece controle abrangente, mas pode ser avassalador para novos usuários.

Gestão e Escalabilidade:

  • AKS: O Azure oferece integração perfeita com outros serviços Azure, facilitando a gestão e a escalabilidade. O Azure Kubernetes Service também fornece autoescala e integração com o Azure Active Directory, melhorando a facilidade de gestão.
  • EKS: O EKS é altamente escalável e se integra bem ao ecossistema da AWS. Suporta recursos avançados como Elastic Load Balancing para distribuição de tráfego e AWS Fargate para gerenciamento de nós sem servidor. No entanto, esses recursos geralmente exigem um conhecimento mais profundo da AWS para uma configuração eficaz.

Eficiência de Custos:

  • AKS: O Azure oferece uma solução econômica, especialmente para aqueles já investidos no ecossistema Azure. O modelo de precificação é direto, e ferramentas adicionais de gerenciamento de custos dentro do Azure podem ajudar a otimizar os gastos.
  • EKS: A precificação da Amazon é competitiva, mas o custo total pode ser impactado pela escolha de serviços AWS adicionais. O EKS pode ser econômico em grande escala, mas implantações pequenas podem achar um pouco mais caro devido aos requisitos mínimos de recursos.

Desempenho:

  • AKS: O AKS oferece desempenho robusto, especialmente para empresas fortemente investidas nos serviços de nuvem da Microsoft. Sua integração com a infraestrutura de rede global do Azure pode oferecer benefícios de desempenho aprimorados.
  • EKS: O EKS é conhecido por seu alto desempenho e confiabilidade, especialmente em implantações de grande escala. A extensa infraestrutura e capacidades de rede da AWS contribuem significativamente para o desempenho do EKS.

Comunidade e Suporte:

  • AKS: O Azure tem uma comunidade em crescimento e oferece suporte substancial por meio dos canais oficiais e documentação da Microsoft. No entanto, pode ter uma comunidade menor em comparação com a AWS.
  • EKS: A AWS beneficia-se de uma grande comunidade ativa. A abundância de documentação, fóruns e ferramentas de terceiros disponíveis para o EKS pode ser uma vantagem significativa, especialmente para solução de problemas e melhores práticas.

Tanto o AKS quanto o EKS têm seus pontos fortes e estão em constante evolução. O AKS pode ser mais adequado para aqueles já inseridos no ecossistema Azure ou que priorizam a facilidade de uso e integração com outros serviços Microsoft. Por outro lado, o EKS pode ser a melhor escolha para aplicações que requerem as capacidades avançadas de escalabilidade e desempenho fornecidas pela infraestrutura da AWS, embora possa vir com uma curva de aprendizado um pouco mais íngreme.

Em última análise, a escolha entre AKS e EKS deve ser guiada pelas necessidades específicas da sua aplicação, infraestrutura de nuvem existente e expertise da equipe. Ambos os serviços oferecem orquestração de contêineres robusta, escalável e confiável, e a decisão geralmente se resume a qual plataforma se alinha melhor com sua estratégia geral de nuvem.

Conclusão

Nossa jornada pelas complexidades do Azure Kubernetes Service (AKS) e do Amazon Elastic Kubernetes Service (EKS) revela que ambas as plataformas oferecem capacidades poderosas para gerenciar aplicações conteinerizadas. O AKS, com sua profunda integração no ecossistema Azure, apresenta um ambiente amigável ao usuário, ideal para aqueles que já estão aproveitando os serviços de nuvem da Microsoft. Por outro lado, o EKS se destaca em sua escalabilidade e desempenho, especialmente para implantações maiores e mais complexas dentro do ecossistema AWS.

Ao decidir entre AKS e EKS, é importante lembrar que não existe uma solução única que sirva para todos. Em vez disso, você deve considerar fatores como a experiência da sua equipe com Azure ou AWS, os requisitos da sua aplicação e os investimentos que já fez em sua infraestrutura. Ambos os serviços estão constantemente adicionando recursos para se manterem competitivos e atenderem às necessidades dos usuários.

O que você precisa fazer:

  • Experimente e Explore: A melhor maneira de entender se o AKS ou EKS é adequado para você é testá-los. Configure um cluster em pequena escala em ambos os ambientes e experimente implantar suas aplicações. Esta experiência prática fornecerá insights valiosos sobre como cada serviço se encaixa em seu fluxo de trabalho e atende às suas necessidades.
  • Aproveite os Recursos da Comunidade: Tanto o Azure quanto a AWS têm comunidades vibrantes. Engaje com essas comunidades por meio de fóruns, grupos de mídia social e encontros locais. As experiências reais e dicas compartilhadas pelos membros da comunidade podem ser incrivelmente benéficas.
  • Mantenha-se Informado: O mundo dos serviços de nuvem está em constante mudança. Mantenha-se atualizado com os últimos desenvolvimentos em AKS e EKS. Siga blogs oficiais, assine newsletters e participe de webinars e conferências sobre nuvem.
  • Consulte Especialistas: Se você ainda estiver inseguro ou suas necessidades forem complexas, considere consultar especialistas em nuvem ou provedores de serviços. A experiência deles pode guiá-lo na tomada de uma decisão informada que esteja alinhada com seus objetivos de negócios.

Tomando essas medidas, você pode tomar uma decisão mais informada sobre qual serviço de Kubernetes — AKS ou EKS — é o mais adequado para sua organização. Lembre-se, o objetivo é escolher uma plataforma que não apenas atenda às suas necessidades atuais, mas também esteja alinhada com seu crescimento futuro e evolução na nuvem.

--

--

Cláudio Rapôso
Cláudio Rapôso

Written by Cláudio Rapôso

Microsoft MVP | Software Architect | Teacher | Book Author | MCT | 12x Microsoft Certified Connect with me in https://www.linkedin.com/in/cfraposo