Aprovisionando un Clúster Kubernetes con Kind y Terraform
En este tutorial paso a paso, aprenderás a crear y gestionar un clúster Kubernetes local utilizando Kind y Terraform, dos herramientas poderosas que revolucionarán tu flujo de trabajo de desarrollo.
Introducción a las Herramientas
Kubernetes: El Orquestador de Contenedores
Kubernetes es una plataforma de orquestación que automatiza el despliegue, escalado y gestión de aplicaciones en contenedores. Su popularidad radica en su capacidad para:
Automatizar despliegues
Gestionar la escalabilidad
Manejar aplicaciones en contenedores
Proporcionar alta disponibilidad
Documentación Kubernetes
Kind: Kubernetes en tu Máquina Local
Kind (Kubernetes IN Docker) es tu mejor aliado para desarrollo local, ofreciendo:
Clústeres multinodo en Docker
Configuración simple y rápida
Eficiencia en el uso de recursos
Ideal para CI/CD y pruebas
Documentación Kind
Terraform: Infraestructura como Código
Terraform complementa perfectamente a Kind, permitiendo:
Automatización de la creación de clústeres
Gestión consistente de la infraestructura
Versionamiento de configuraciones
Reproducibilidad garantizada
Documentación Terraform
Configuración del Entorno
Requisitos Previos
Docker instalado en tu máquina
Terraform instalado
kubectl configurado
Configuración Inicial
1. Instalar Kind
Sigue la documentación oficial de Kind para instalarlo.
Verifica la instalación con:
kind version
2. Crear un archivo de configuración para Kind
Un ejemplo básico para un clúster con un control plane y un worker:
Guarda este archivo como kind-config.yaml
.
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- Creando el clúster kind 🔗︎
kind create cluster --config kind-config.yaml
4. Administrar el clúster con K9s
Para una administración más eficiente del clúster, utiliza K9s, una interfaz de terminal que facilita la gestión de recursos de Kubernetes.
Instala K9s siguiendo las instrucciones oficiales de su repositorio.
Luego, simplemente ejecuta:
k9s
Esto te permitirá explorar y gestionar recursos del clúster de forma visual e interactiva. 🚀
Siguientes Pasos
Ahora que tienes un clúster Kubernetes local, puedes comenzar a desplegar aplicaciones. Te recomiendo seguir la Guía de Conceptos Básicos de Kubernetes para aprender más.
Terraform para Kind
¿Por qué usar Terraform y Kind juntos?
Usar Terraform y Kind juntos ofrece una solución eficiente para crear y gestionar clústeres Kubernetes locales de manera automatizada y reproducible.
Automatización: Terraform permite definir y provisionar clústeres Kubernetes con solo unos comandos, eliminando la configuración manual.
Consistencia: Puedes versionar y compartir la configuración del clúster, asegurando que se pueda recrear en cualquier momento o máquina.
Escalabilidad: Kind soporta clústeres multinodo, y con Terraform puedes gestionar fácilmente su infraestructura de manera flexible.
Desarrollo y CI/CD: Ideal para entornos locales de desarrollo y pruebas en integración continua.
Módulo de Terraform para kind https://registry.terraform.io/providers/tehcyx/kind/latest
Aprovisionando tu Primer Clúster
1. Estructura del Proyecto
mkdir kind-terraform-demo
cd kind-terraform-demo
touch main.tf
2. Configuración Básica de Terraform
Sobre el módulo de terraform tehcyx/kind
terraform {
required_providers {
kind = {
source = "tehcyx/kind"
version = "0.7.0"
}
}
}
provider "kind" {}
resource "kind_cluster" "default" {
name = "kindcluster"
node_image = "kindest/node:v1.31.0"
wait_for_ready = true
kind_config {
kind = "Cluster"
api_version = "kind.x-k8s.io/v1alpha4"
node {
role = "control-plane"
}
node {
role = "worker"
}
}
}
3. Inicialización y Despliegue
# Inicializar Terraform
terraform init
# Planificar cambios
terraform plan
# Aplicar configuración
terraform apply
Vamos a la practica
Aprovisionando con terraform Clúster Kind con Nginx Ingress Controller
El propósito es utilizar Terraform para automatizar la creación de un clúster Kubernetes local (usando herramientas como Kind o Minikube) y desplegar un Nginx Ingress Controller. Esto permitirá manejar el enrutamiento de solicitudes HTTP/HTTPS hacia servicios internos del clúster.
Revisa el repositorio roxs-projects-blog
git clone -b devops-tf-kind-cluster https://github.com/roxsross/roxs-projects-blog.git
cd devops-tf-kind-cluster/02-kind-cluster-with-terraform
Estructura del Proyecto
.
├── terraform/
│ ├── main.tf
│ ├── variables.tf
│ ├── outputs.tf
│ └── ingress.tf
└── kubernetes/
└── test-app.yaml
Despliegue del Clúster
cd terraform
terraform init
terraform plan
terraform apply -auto-approve
Despliegue de la Aplicación de Prueba
cd ../kubernetes
kubectl apply -f test-app.yaml
# Verificar despliegue
kubectl get pods
kubectl get ingress
kubectl get services
# Probar el acceso
curl localhost/hello
Verificación de Componentes
# Estado del Ingress Controller
kubectl get pods -n ingress-nginx
# Logs del Controller
kubectl logs -n ingress-nginx -l app.kubernetes.io/component=controller
# Estado del Ingress
kubectl describe ingress hello-ingress
Características Clave del Clúster
Control Plane
Nodo principal para coordinación
Compatibilidad con Kubernetes v1.31.0
Puertos expuestos: 80 (HTTP) y 443 (HTTPS)
Workers
Dos nodos worker para distribución de carga
Mismo sistema de imágenes que el control plane
Ideal para pruebas de balanceo
Networking
Mapeo de puertos para acceso directo
Soporte para Ingress Controller
Conectividad entre nodos
Limpieza
# Eliminar aplicaciones
kubectl delete -f kubernetes/test-app.yaml
# Eliminar clúster (si es necesario)
terraform destroy
Vamos al Video.
Recursos Adicionales
Conclusión
El dominio de Kind y Terraform para la gestión de clústeres Kubernetes locales no solo mejora tu flujo de trabajo actual, sino que también establece una base sólida para el crecimiento futuro. Las habilidades adquiridas son transferibles a entornos de producción y te preparan para los desafíos del desarrollo moderno de aplicaciones.
La combinación de estas herramientas te permite:
Desarrollar con confianza
Experimentar sin riesgos
Innovar continuamente
Mantener alta calidad en tus entregas
Recuerda que el aprendizaje es continuo en el mundo del DevOps y la infraestructura como código. Mantente curioso, sigue explorando y no dudes en compartir tu conocimiento con la comunidad.
¡Feliz coding y que la automatización te acompañe! 🚀
Subscribe to my newsletter
Read articles from Rossana Suarez directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Rossana Suarez
Rossana Suarez
Soy Roxs 👩💻| Software Developer | DevOps | DevSecOps | en @295DevOps 🖼 Content Creator. No se puede crecer si no estas dispuesto a saltar a la zona de peligro 🔥