Despliegue de Google Kubernetes Engine (GKE) con Terraform
Autor: Eduardo Martínez Agrelo
Kubernetes (K8s) se ha convertido en el estándar de la industria para orquestar contenedores. Sin embargo, instalar y mantener un clúster de Kubernetes "vanilla" es extremadamente complejo (gestionar certificados, etcd, upgrades). Google Kubernetes Engine (GKE) elimina ese dolor. En el examen Associate Cloud Engineer, GKE es un tema central. Debes saber cómo desplegarlo, configurarlo y elegir la arquitectura adecuada.
Arquitectura GKE: El Cerebro y el Cuerpo
Un clúster de Kubernetes tiene dos partes:
- Control Plane (Plano de Control): El cerebro. Incluye el servidor API, el planificador y la base de datos etcd. En GKE, Google gestiona esto por ti. Tú no ves los servidores del cerebro, solo hablas con ellos.
- Nodes (Nodos): El cuerpo. Son las Máquinas Virtuales (Compute Engine) donde corren tus contenedores. En el modo Standard, tú ves y gestionas estas VMs.
Decisión Crítica 1: Zonal vs. Regional
Esta es una pregunta fija de examen sobre Disponibilidad y Costes:
- Clúster Zonal (Single-zone): El Plano de Control y los Nodos viven en una sola zona (ej.
us-central1-a).- Ventaja: Más barato.
- Riesgo: Si Google actualiza el clúster o la zona falla, pierdes el acceso al API (downtime del plano de control).
- Clúster Regional (Multi-zonal): El Plano de Control se replica automáticamente en 3 zonas de la región. Los nodos también se distribuyen.
- Ventaja: Alta Disponibilidad (HA) real. Puedes perder una zona entera y seguir operando.
- Coste: Pagas por la gestión del clúster (Uptime SLA) y consumes más recursos al triplicar nodos.
Decisión Crítica 2: Standard vs. Autopilot
La evolución de GKE:
- GKE Standard: Tú configuras los nodos (tipo de máquina, discos). Pagas por las máquinas encendidas, aunque estén vacías. Te da máximo control sobre la infraestructura subyacente.
- GKE Autopilot: Google gestiona también los nodos. Tú solo despliegas Pods. Google aprovisiona la capacidad justa y necesaria. Pagas por Pod (CPU/RAM solicitada), no por nodo. Es la experiencia "Serverless Kubernetes".
Implementación con Terraform: google_container_cluster
En este ejercicio, desplegamos un clúster Standard Zonal para mantener los costes bajos en el laboratorio, pero con configuración de producción:
initial_node_count: Cuántos nodos arrancan por defecto.node_config: Definimos la máquina (e2-medium) y, crucialmente, los OAuth Scopes.
¡Ojo al examen! Si olvidas configurar los oauth_scopes en los nodos (específicamente storage-ro o logging-write), tus contenedores no podrán descargar imágenes privadas ni enviar logs, aunque tu usuario tenga permisos de Admin.
Conclusión: Orquestación Lista
Al finalizar este ejercicio, tendrás un clúster de Kubernetes operativo esperando tus cargas de trabajo. Has delegado la complejidad del "Master Node" a Google y has definido tu infraestructura de nodos como código.