詳細検索

O Modo Automático EKS chega no Terraform – Simplifique o Kubernetes Hoje

Avatar
por Jatin Mehrotra
4 min de leitura

O Modo Automático EKS chega no Terraform – Simplifique o Kubernetes Hoje
Traduzido do English • Ver original

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

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.

Related Articles