Elastic Kubernetes Service (EKS) de AWS es un servicio administrado que le permite implementar, administrar y escalar aplicaciones en contenedores en Kubernetes.
Se puede utilizar los procesos de aprovisionamiento de AWS integrados (UI, CLI, CloudFormation) para los clústeres de EKS, Terraform le brinda varios beneficios:
Flujo de trabajo unificado: si ya usa Terraform para implementar la infraestructura de AWS, puede usar el mismo flujo de trabajo para implementar tanto los clústeres de EKS como las aplicaciones en esos clústeres.
Gestión completa del ciclo de vida: Terraform crea, actualiza y elimina recursos rastreados sin necesidad de inspeccionar una API para identificar esos recursos.
Gráfica de Relaciones: Terraform determina y observa dependencias entre recursos. Por ejemplo, si un clúster de AWS Kubernetes necesita configuraciones específicas de VPC y subred, Terraform no intentará crear el clúster si no aprovisiona primero la VPC y la subred.
Requisitos Previos
Terraform v1.3+ instalado localmente.
Una cuenta de AWS
La AWS CLI v2.7.0/v1.24.0 o posterior, instalada y configurada
AWS IAM Authenticator
kubectl v1.24.0 o posterior
Procedimiento:
En la terminal, clone el repositorio de ejemplo.
git clone https://github.com/hashicorp/learn-terraform-provision-eks-cluster
Cambie al directorio del repositorio.
cd learn-terraform-provision-eks-cluster
Este repositorio de ejemplo contiene la configuración para aprovisionar una VPC, grupos de seguridad y un clúster de EKS con la siguiente arquitectura:

La configuración define una nueva VPC en la que aprovisionar el clúster y utiliza el módulo EKS público para crear los recursos necesarios, incluidos los grupos de Auto Scaling, los grupos de seguridad y las funciones y políticas de IAM.
Abra el archivo eks-cluster.tf para revisar la configuración del módulo. El parámetro eks_managed_node_groups configura el clúster con tres nodos en dos grupos de nodos.

Inicialice esta configuración, con el siguiente comando:
terraform init

Despues que la salida del comando anterior fue exitosa, se realiza el siguiente comando terraform plan

Ejecute terraform apply para crear su clúster y otros recursos necesarios. Confirme la operación con un yes.
Este proceso puede tardar hasta 10 minutos. Al finalizar, Terraform imprimirá los resultados de su configuración.



Después de aprovisionar el clúster, debe configurar kubectl para interactuar con él.
Primero, abra el archivo outputs.tf para revisar los valores de salida. Utilizará las salidas region y cluster_name para configurar kubectl.

Ejecute el siguiente comando para recuperar las credenciales de acceso de su clúster y configure kubectl.
aws eks --region $(terraform output -raw region) update-kubeconfig \ --name $(terraform output -raw cluster_name)
Ahora se puede usar kubectl para administrar el clúster e implementar configuraciones de Kubernetes en él.
Utilice los comandos de kubectl para verificar la configuración de su clúster.
Primero, obtenga información sobre el clúster.
kubectl cluster-info

Ahora verifique que los tres nodos trabajadores formen parte del clúster.
kubectl get nodes

Ha verificado que puede conectarse a su clúster mediante kubectl y que los tres nodos trabajadores están en buen estado. Su clúster está listo para usar.
Nota: La configuración de ejemplo de este tutorial contiene solo la configuración para crear un clúster de EKS. es una PoC, para temas de implementacion en produccion se tiene que verificar el codigo y adaptarlo a las necesidades.
mas informacion:
Provision an EKS Cluster (AWS) | Terraform | HashiCorp Developer