Errores de novato en Kubernetes que aprendí a la mala (y cómo evitarlos)

1. Seguridad en Kubernetes: No seas tu peor enemigo

Cuando inicias en Kubernetes, la prioridad es «que funcione», pero en producción eso es la receta perfecta para el desastre. Aquí te dejo algunos errores comunes de seguridad que debes evitar:

📌 Error #1: Dejar el clúster abierto al mundo

  • Un día te levantas, revisas tu infraestructura y ves que tu clúster de AKS está expuesto al internet sin restricciones. 😱
  • Solución: Usa Azure Private Link y Azure Firewall para restringir el acceso al clúster. Aplica políticas Network Policies o Calico para controlar la comunicación entre pods.

📌 Error #2: No configurar RBAC (Role-Based Access Control)

  • Dar acceso irrestricto a todos los desarrolladores es como dar las llaves del banco a cualquiera que pase por ahí.
  • Solución: Configura RBAC en AKS y usa Azure AD Integration para que los accesos sean controlados y auditados.

📌 Error #3: No escanear imágenes de contenedores

  • Si descargas imágenes de cualquier parte, podrías estar ejecutando malware sin darte cuenta.
  • Solución: Usa Microsoft Defender for Containers y habilita Azure Policy para restringir imágenes que no provengan de un ACR (Azure Container Registry) validado.

2. Estándares con Terraform: Que todos los despliegues sean iguales (y seguros)

Después del desastre de mi primer AKS, aprendí que la infraestructura como código (IaC) es la salvación. Terraform me permitió crear clústeres con configuraciones estandarizadas y seguras.

Aquí te dejo un ejemplo de Terraform para un AKS seguro:

resource "azurerm_kubernetes_cluster" "aks" {
  name                = "mi-cluster-seguro"
  location            = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name
  dns_prefix          = "aks-secure"

  identity {
    type = "SystemAssigned"
  }

  network_profile {
    network_plugin = "azure"
    network_policy = "calico"  # Control de tráfico entre pods
  }

  role_based_access_control_enabled = true

  default_node_pool {
    name       = "default"
    vm_size    = "Standard_D2_v2"
    enable_auto_scaling = true
    min_count = 1
    max_count = 3
  }

  oms_agent {
    log_analytics_workspace_id = azurerm_log_analytics_workspace.law.id
  }

  depends_on = [azurerm_log_analytics_workspace.law]
}

¿Qué hace este código?
✅Habilita RBAC
✅ Aplica Calico para políticas de red
✅ Habilita monitorización con Log Analytics
✅ Usa Auto Scaling para optimizar costos

3. Seguridad operacional en AKS: Automatiza y audita todo

Si quieres dormir tranquilo por las noches, necesitas implementar buenas prácticas operacionales:

✔ Monitorea con Microsoft Defender for Cloud

Si no monitoreas tu AKS, es como manejar con los ojos cerrados. Habilita Defender for Containers para detectar ataques y vulnerabilidades en tiempo real.

✔ Aplica restricciones con Azure Policy

Azure Policy permite definir reglas globales para que nadie despliegue un desastre sin supervisión. Algunos ejemplos:

  • Solo permitir imágenes de contenedores firmadas
  • Restringir permisos excesivos en los pods
  • Forzar TLS en las conexiones

✔ Automatiza auditorías con Kusto Query Language (KQL)

Con KQL puedes detectar intentos de acceso indebidos, cambios sospechosos en los pods y más.

Ejemplo de consulta KQL en Azure Monitor:

AzureDiagnostics 
| where Category == "KubeAudit"
| where log_s contains "unauthorized"
| project TimeGenerated, log_s

Conclusión: La seguridad en Kubernetes no es opcional

Después de aprender a la mala, entendí que un AKS sin seguridad es una pesadilla operativa. Pero con las herramientas adecuadas (RBAC, Terraform, Defender for Containers, Azure Policy y KQL) puedes dormir tranquilo.

Si alguna vez pensaste «¡Vamos a desplegar y luego vemos la seguridad!», detente. Hazlo bien desde el inicio y evita dolores de cabeza.

Y tú, ¿has cometido alguno de estos errores en Kubernetes? Cuéntame tu experiencia en los comentarios. 🚀

Puedes seguirme en Twitter o en LinkedIn, donde comparto mis proyectos, experiencias y próximos eventos en los que estaré participando.

Gracias por leerme y hasta la próxima.