Contenido del curso

Crea tu primer clúster EKS con eksctl

Resumen

Llevar Kubernetes a producción cambia el juego. Con eksctl puedes crear y gestionar un clúster de Kubernetes en AWS desde tu terminal, dejando atrás Minikube y aprovechando la robustez de la nube. Esta guía es para quienes ya dominan los objetos básicos de Kubernetes y quieren desplegar su primer clúster real en EKS.

¿Qué es eksctl y por qué usarlo con AWS EKS?

eksctl es una herramienta de línea de comandos mantenida por AWS que simplifica la creación de clústeres en Elastic Kubernetes Service. Aunque su sitio oficial no tiene el look de AWS, el proyecto está respaldado por una gran comunidad y por el propio cloud provider [3:00].

Antes de instalarla, conviene tener bases sólidas de IAM, VPC y EC2, porque eksctl orquesta todos esos servicios por ti.

¿Qué hace eksctl exactamente? Crea, modifica y elimina clústeres de Kubernetes en AWS desde tu máquina local, generando recursos como subnets, node groups e instancias EC2 automáticamente.

¿Cómo instalo eksctl en mi máquina?

En la documentación oficial encuentras los comandos para cada sistema operativo. En macOS la instalación se hace con Homebrew:

  • Ejecuta brew install eksctl para añadir el binario a tu sistema.
  • Verifica con eksctl --help que aparezcan subcomandos como create, associate, delegate o anywhere.
  • Confirma tus credenciales de AWS con aws sts get-caller-identity para validar el usuario activo [4:30].

¿Cómo se define un clúster de EKS en YAML?

Dentro de la carpeta 18 de los recursos del curso encuentras un archivo simple-cluster.yaml que describe el clúster. La estructura recuerda a un deployment o un pod, pero apunta a una entidad superior.

Las directivas clave son:

  • apiVersion: eksctl.io/v1alpha5, propio de la herramienta.
  • kind: ClusterConfig, indica que se trata de un clúster completo.
  • metadata: nombre y región del clúster.
  • managedNodeGroups: define un grupo gestionado llamado worker-nodes con instancias t3.medium y solo dos nodos.
  • CloudWatch logging: habilita logs específicos del control plane para tener observabilidad [7:00].

¿Por qué activar logs de CloudWatch en EKS?

Cuando trabajas con EKS, AWS oculta los componentes del control plane (los nodos maestro). No tienes acceso directo a ellos, así que la observabilidad vía CloudWatch se vuelve tu única ventana para auditar y depurar.

Los managedNodeGroups delegan la creación de nodos a AWS mediante Auto Scaling Groups, lo que reduce la carga operativa sobre ti.

¿Cómo creo y valido el clúster en producción?

Con el archivo listo, el comando para aprovisionar es directo:

bash eksctl create cluster -f simple-cluster.yaml

El proceso tarda entre 5 y 15 minutos, dependiendo de tu conexión y de los recursos que AWS deba crear. Verás en consola la versión de la herramienta, la región (en el curso se usa us-west-2), las subnets y los node groups que se generan paso a paso [9:30].

Al terminar, valida desde la CLI con kubectl get nodes. La diferencia con Minikube es enorme: ya no tienes un nodo en Docker, ahora tienes dos instancias EC2 reales corriendo tu orquestador.

¿Dónde veo los recursos creados? En la consola de AWS, dentro de CloudFormation aparecen dos stacks: uno para el clúster (control plane) y otro para los node groups (workers). En EC2 verás las instancias, la VPC y los security groups asociados.

¿Cómo expongo una aplicación con un Load Balancer?

Para probar que el clúster está listo para tráfico real, despliega un pod y exponlo:

  1. Crea el pod con kubectl run hello-cloud --image=hello-app:2.0 --port=8080.
  2. Haz un primer test rápido con kubectl port-forward hacia localhost:8080 para confirmar que responde [13:00].
  3. Para producción usa kubectl expose pod hello-cloud --type=LoadBalancer --port=8080 --target-port=8080.

Al ejecutar kubectl get services notarás que la IP externa ya no queda en pending como en Minikube. EKS aprovisiona automáticamente un Elastic Load Balancer en AWS y te entrega una URL pública. Puede tardar unos minutos en estar disponible, así que ten paciencia si ves errores al recargar [15:00].

¿Cómo cambio entre Minikube y EKS sin romper nada?

Cuando creas el clúster, eksctl actualiza tu kubeconfig automáticamente y kubectl apunta al clúster remoto sin que tú toques nada. Pero si quieres volver a Minikube para hacer pruebas, kubectl maneja contextos.

  • kubectl config get-contexts: lista todos los clústeres configurados, marcando con asterisco el activo.
  • kubectl config use-context minikube: cambia el contexto a tu clúster local.
  • kubectl config use-context <nombre-eks>: regresa al clúster en la nube.

¿Qué es un contexto en kubectl? Es una configuración guardada que combina clúster, usuario y namespace. Cambiar de contexto te permite saltar entre clústeres sin reconfigurar credenciales.

¿Cómo elimino el clúster para evitar costos?

EKS y sus Load Balancers generan cobros por hora, así que apaga todo cuando termines tu prueba. El comando es:

bash eksctl delete cluster --name k8s-cluster --region us-west-2

Un detalle importante: usa el nombre exacto que aparece en la consola de AWS. Si copiaste mal el nombre (por ejemplo k8s-course en vez de k8s-cluster), eksctl no encontrará el recurso y fallará. Valida siempre en la consola web antes de ejecutar el delete [19:30].

El flujo en Azure (AKS) y GCP (GKE) es muy parecido. ¿Notaste diferencias entre operar Kubernetes en local y en la nube? Cuéntamelo en los comentarios.