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:

Imagen del artículo

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.

Imagen del artículo

Inicialice esta configuración, con el siguiente comando:

terraform init

Imagen del artículo

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

Imagen del artículo

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.

Imagen del artículo
Imagen del artículo
Imagen del artículo

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.

Imagen del artículo

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

Imagen del artículo

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

kubectl get nodes

Imagen del artículo

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

Nota editorial: este artículo refleja la tecnología y los comandos de su fecha de publicación. Verifica versiones y documentación oficial antes de aplicarlos en producción.