Durante o AWS re:Invent 2024, a AWS lançou um novo recurso para o EKS, ou seja, o EKS Auto Mode, que já abordei em detalhes no meu blog anterior
Neste blog, veremos como podemos criar um cluster com o modo EKS Auto usando o "terraform-eks-module" original e como isso simplificou meu código eks.tf.
Também vou falar sobre as diferenças no código do terraform que usamos para o cluster EKS antes do recurso do modo automático versus o código do terraform depois de usar o modo automático, e como isso salva um iniciante que não sabe nada do EKS.
Motivação
- O provedor Terraform para AWS lançou uma nova versão v5.79.0 que adiciona os recursos ('compute_config, storage_config, storage_config e kubernetes_network_config.elastic_load_balancing') para o Modo Automático EKS.
- O módulo Terraform EKS lançou uma nova versão v20.31.0 que permite o suporte ao modo EKS Auto e ao EKS Hybrid Nodes.
Vamos usar o módulo AWS EKS do Terraform para o Modo Automático EKS
Se quiser acompanhar, use este repositório para o código de trabalho.
Ativar o modo EKS Auto para o novo painel

- Um pool de nós (uso geral) criado pelo modo EKS Auto


- Não há nós ou pods no cluster (nenhuma carga de trabalho está rodando) ou também pode dizer Eu não provisionei nenhum nó até agora porque agora é função do modo Auto do EKS.
- No momento em que instalo um exemplo usando esse código, o EKS Modo Automático provisão os nós EC2 sozinho. Que gerenciamento mágico de zero para provisionamento de nós do meu lado.
Nota: Você precisa executar o comando kubectl set context e executar o terraform apply novamente para implantar o aplicativo de exemplo. O aplicativo de exemplo não foi implantado quando você criou o cluster porque o contexto não estava definido.
AWS EKS --Region us-East-1 Update-Kubeconfig --Nome TF-MODULE-Support --Perfil CK-Test
Terraform Apply
Kubectl Get PO
NOME PRONTO STATUS REINICIA IDADE
test-65b7dbddd4-j6mbt 1/1 Rodando 0 104s
test-65b7dbddd4-wdz56 1/1 Rodando 0 104s
O que está fazendo a diferença
- Recurso 'cluster_compute_config' é a diferença ou o uso do recurso para ativar ou desativar o Modo Automático EKS no lado do módulo.
- No terraform, o lado do provedor AWS é usado para ativar ou desativar o Modo Automático do EKS
cluster_compute_config = {
habilitado = verdadeiro
node_pools = ["uso geral"]
}
- Devido à opção 'cluster_compute_config', agora não preciso mencionar 'eks_managed_node_group_defaults', 'eks_managed_node_groups', 'node_security_group_additional_rules' ou sequer saber quais são esses conceitos.
O código a seguir pode parecer pequeno, mas se alguém que entende de EKS e provisão de nós também precisa entender os conceitos, descubra como escrever esse código. Mas agora, devido ao modo EKS Auto, não há mais gerenciamento. UAU, que estiloso.
# código que não é mais necessário
eks_managed_node_group_defaults = {
ami_type = "AL2_x86_64"
instance_types = ["m5.grande"]
# instance_types = ["t3.small"]
# vpc_security_group_ids = [aws_security_group.todos_trabalhadores_mgmt.id]
iam_role_additional_policies = {
ebs_policy = "arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy" #IAM direitos necessários para o motorista CSI
auto_scaling_policy = "arn:aws:iam::aws:policy/AutoScalingFullAccess"
cloudwatch_container_insights_agent_policy = "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy"
xray_policy = "arn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess"
}
}
eks_managed_node_groups = {
node_group = {
min_size = 2
max_size = 5
desired_size = local.node_group_desired_size
}
}
node_security_group_additional_rules = {
http_traffic_node_to_node = {
description = "Permitir HTTP de entrada a partir de si mesmo"
from_port = 80
to_port = 80
Protocolo = "TCP"
self = verdadeiro
Tipo = "Ingress"
}
}
# Para acionar o tamanho desejado do grupo de nós gerenciados
resource "null_resource" "update_desired_size" {
gatilhos = {
desired_size = local.node_group_desired_size
}
Provisioner "local-exec" {
Interprete = ["/bin/bash", "-c"]
command = <-EOT
aws eks update-nodegroup-config \
--cluster-name ${module.eks.cluster_name} \
--nodegroup-name ${element(split(":", module.eks.eks_managed_node_groups["node_group"].node_group_id), 1)} \
--scaling-config desiredSize=${local.node_group_desired_size} \
--region us-east-1 \
--profile ck-test
EOT
}
}
What isn't supported
- Para o cluster EKS existente onde você quer ativar o EKS, o modo automático não é possível no momento usando terraform devido a um bug no lado do provedor AWS do Terraform.
Da perspectiva DevOps e IaC
- Vimos como podemos usar o modo automático EKS; um recurso que muda o jogo para cargas de trabalho de contêineres em um novo cluster onde não precisávamos planejar, provisionar infraestrutura (computação) para rodar nossas cargas de trabalho.
- Ainda assim, algumas correções de bugs são necessárias no lado do provedor AWS do terraform e também no lado do EKS para habilitar o modo automático EKS para o cluster existente, até lá usar console.
- O modo automático EKS não só retira operações do usuário, como também conseguiu simplificar o IaC (terraform code)
- Como consumidor do terraform, terraform-eks-module, é impressionante ver a velocidade com que esse recurso foi suportado. Tudo graças a Bryant Biggs por apoiar essa comunidade.