Skip to content

Creación de clusters EKS - Conclusión y mejores prácticas

Comparación de métodos de creación de clusters EKS

Hemos explorado varios métodos para crear clusters EKS. Comparemos las ventajas y desventajas de cada método.

eksctl

Ventajas:

  • Método más simple y rápido
  • Creación del cluster con un solo comando
  • Soporte para configuración declarativa mediante archivos YAML
  • Soporte para varias características como node groups y perfiles Fargate

Desventajas:

  • Puede estar limitado para requisitos de infraestructura complejos
  • La integración con la infraestructura existente puede ser difícil

Casos de uso adecuados:

  • Prototipado rápido
  • Entornos de desarrollo y prueba
  • Entornos de producción simples

AWS Management Console

Ventajas:

  • Fácil de entender con una interfaz visual
  • Creación guiada del cluster paso a paso
  • Confirmación visual de varias opciones

Desventajas:

  • El proceso manual dificulta la automatización
  • Las tareas repetitivas consumen mucho tiempo
  • La gestión de la configuración y el control de versiones son difíciles

Casos de uso adecuados:

  • Aprendizaje y exploración
  • Creación única de un cluster
  • Equipos o proyectos pequeños

AWS CLI

Ventajas:

  • Automatización posible mediante scripts
  • Control detallado disponible
  • Fácil integración con servicios de AWS

Desventajas:

  • Estructura de comandos compleja
  • Se requiere la ejecución de varios comandos
  • El manejo de errores puede ser difícil

Casos de uso adecuados:

  • Parte de scripts de automatización
  • Integración con pipelines CI/CD
  • Entornos que requieren control detallado

Terraform

Ventajas:

  • Infrastructure as Code (IaC)
  • Gestión de estado y seguimiento de cambios
  • Integración con varios servicios de AWS
  • Modularización y reutilización

Desventajas:

  • Tiene una curva de aprendizaje
  • La configuración inicial requiere tiempo
  • Se requiere infraestructura adicional para la gestión de estado

Casos de uso adecuados:

  • Entornos de producción a gran escala
  • Gestión de múltiples entornos (desarrollo, staging, producción)
  • Requisitos de infraestructura complejos

AWS CDK

Ventajas:

  • Uso de lenguajes de programación conocidos (TypeScript, Python, etc.)
  • Alto nivel de abstracción
  • Reutilización y modularización de código
  • Integración estrecha con servicios de AWS

Desventajas:

  • Tiene una curva de aprendizaje
  • La depuración puede ser compleja
  • Algunas características avanzadas pueden tener limitaciones

Casos de uso adecuados:

  • Entornos centrados en desarrolladores
  • Infraestructura de aplicaciones complejas
  • Integración con código de aplicación existente

Mejores prácticas para la creación de clusters EKS

Redes

  1. Diseño de VPC

    • Desplegar subnets en al menos 2 availability zones
    • Configurar subnets públicas y privadas
    • Asignar suficientes direcciones IP a cada subnet (considerar el tamaño del bloque CIDR)
    • Aplicar tags adecuados (para el descubrimiento automático del cluster Kubernetes)
  2. Configuración de Security Group

    • Aplicar el principio de privilegio mínimo
    • Abrir solo los puertos requeridos
    • Restringir las IP de origen
    • Utilizar referencias de security group
  3. Network Policies

    • Implementar soluciones de network policy como Calico o Cilium
    • Restringir la comunicación pod-to-pod
    • Aislar entre namespaces

Seguridad

  1. IAM Roles and Policies

    • Aplicar el principio de privilegio mínimo
    • Usar IAM roles para service accounts
    • Configurar políticas de permisos detalladas
  2. Cifrado

    • Habilitar el cifrado de volúmenes EBS
    • Habilitar el cifrado de Secrets
    • Cifrar datos en tránsito (TLS)
  3. Autenticación y autorización

    • Usar AWS IAM authenticator
    • Implementar RBAC (Role-Based Access Control)
    • Separar service accounts y namespaces

Escalabilidad y disponibilidad

  1. Configuración de Node Group

    • Desplegar nodes en múltiples availability zones
    • Configurar auto scaling groups
    • Utilizar varios tipos de instancia (incluidas Spot instances)
  2. Cluster Autoscaler

    • Configurar Cluster Autoscaler o Karpenter
    • Establecer umbrales de escalado adecuados
    • Configurar retrasos de scale-down
  3. Configuración de alta disponibilidad

    • Utilizar múltiples availability zones
    • Configurar PodDisruptionBudget
    • Establecer recuentos de réplicas adecuados

Monitoreo y logging

  1. Logging del Control Plane

    • Habilitar todos los tipos de log (API, audit, authenticator, controller manager, scheduler)
    • Integrar con CloudWatch Logs
  2. Monitoreo de Node y Pod

    • Habilitar CloudWatch Container Insights
    • Desplegar Prometheus y Grafana
    • Configurar métricas personalizadas
  3. Alertas y notificaciones

    • Configurar alarmas de CloudWatch
    • Configurar SNS topics y subscriptions
    • Configurar notificaciones para eventos críticos

Optimización de costos

  1. Selección del tipo de instancia

    • Elegir tipos de instancia adecuados para las cargas de trabajo
    • Utilizar Spot instances
    • Considerar instancias Graviton (ARM)
  2. Auto Scaling

    • Configurar escalado automático según la demanda
    • Optimizar políticas de scale-down
    • Considerar el escalado programado
  3. Resource Requests and Limits

    • Establecer CPU and memory requests adecuados
    • Configurar resource limits
    • Establecer resource quotas y limit ranges
  4. Uso de Fargate

    • Usar Fargate para cargas de trabajo adecuadas
    • Optimizar perfiles Fargate
    • Evaluar costo frente a rendimiento

Próximos pasos

Después de crear correctamente un cluster EKS, considera los siguientes pasos:

  1. Establecer una estrategia de actualización del cluster

    • Planificar actualizaciones regulares
    • Considerar una estrategia de blue/green deployment
    • Automatizar las pruebas de actualización
  2. Planificación de Disaster Recovery

    • Estrategia de backup y restore
    • Considerar el despliegue multi-region
    • Probar escenarios de falla
  3. Integración con pipelines CI/CD

    • Implementar flujos de trabajo GitOps
    • Crear pipelines de deployment automatizados
    • Automatizar pruebas y validación
  4. Integración de servicios adicionales

    • AWS Load Balancer Controller
    • External DNS
    • Cert Manager
    • AWS EBS/EFS CSI drivers
  5. Security Hardening

    • Implementar escaneo de vulnerabilidades
    • Monitoreo de cumplimiento
    • Automatizar políticas de seguridad

Crear un cluster EKS es solo el comienzo de tu recorrido con Kubernetes. Es importante mantener un entorno Kubernetes estable y eficiente mediante gestión, monitoreo y optimización continuos.