Logo GCP con Eduardo

GCP con Eduardo

Tutorial GKE: Despliegue de Clúster Kubernetes en Google Cloud con Terraform y Antigravity AI
✦ Guía Técnica & Arquitectura

Despliegue de Clúster Kubernetes (GKE) en Google Cloud con Terraform y Antigravity AI

El paradigma del desarrollo ha cambiado: "Stop coding, start architecting". En esta guía para Staff y Senior Engineers aprenderás a diseñar e implementar una infraestructura de producción elástica sobre Google Kubernetes Engine (GKE) en GCP mediante Infraestructura como Código (Terraform), acelerando la implementación mediante el agente inteligente Antigravity.

Lo que aprenderás en esta guía

Diseño modular de VPC, Subredes y Clúster GKE mediante HCL.
Aprovisionamiento agéntico de infraestructura asistido por Antigravity (Gemini).
Autenticación robusta con Application Default Credentials (ADC) en WSL.
Despliegue y verificación de cargas de trabajo reales con kubectl.
Google Cloud Platform (GCP) Google Kubernetes Engine (GKE) Terraform / OpenTofu Antigravity AI Gemini 3.1 Pro WSL2 / Linux FinOps & Sizing

Matriz de Decisión Arquitectónica para Cómputo en GCP

Elegir el servicio de cómputo adecuado define la resiliencia operativa, la sobrecarga de mantenimiento y la eficiencia de costes (FinOps) de tu plataforma empresarial:

Plataforma Nivel de Control Latencia de Escala Modelo de Costes (FinOps) Caso de Uso Óptimo
GKE Standard Máximo (Control de Nodos, OS, CNI) Media (Segundos a minutos para aprovisionar VMs) Por Compute Engine (VMs fijas/Spot) + Gestión Microservicios de alta concurrencia, StatefulSets y control de kernel
GKE Autopilot Medio (Solo configuración de Pods) Rápida (Pods elásticos automáticos) Pago por recurso solicitado (vCPU / vRAM) Equipos con foco puramente en desarrollo sin equipo de infra dedicado
Cloud Run Bajo (Serveless Containers) Ultra Rápida (Escala a cero en milisegundos) Pago por invocación y tiempo de CPU activa APIs REST sin estado, microservicios HTTP y webhooks esporádicos
Compute Engine (MIGs) Total (Infraestructura IaaS pura) Lenta (Inicio de imagen OS y aprovisionamiento) Instancias dedicadas 24/7 o programadas Cargas monolíticas heredadas sin contenedorizar
⚠ Antipatrón Crítico de Producción: Default Service Account y Vinculación de Billing

Un error recurrente en implementaciones iniciales de GKE es utilizar la Default Compute Engine Service Account ([PROJECT_NUMBER]-compute@developer.gserviceaccount.com) con permisos de Editor en los nodos. Si un pod es comprometido, un atacante obtiene control total del proyecto GCP.

Solución: Crea siempre una Service Account dedicada con el principio de mínimo privilegio (roles/container.nodeServiceAccount) y gestiona la activación de APIs (container.googleapis.com, compute.googleapis.com) y la asociación a la cuenta de facturación mediante variables de entorno seguras de Terraform.

Implementación Práctica en Terraform (HCL)

A continuación se detalla la estructura declarativa generada para orquestar la VPC, la subred y el clúster GKE con su node pool administrado:

# variables.tf
variable "billing_account_id" {
  description = "ID de la cuenta de facturacion de Google Cloud"
  type        = string
}

variable "project_name" {
  description = "Nombre identificador del proyecto"
  type        = string
  default     = "gke-dev-env"
}

variable "region" {
  description = "Region principal de despliegue"
  type        = string
  default     = "europe-west1"
}

variable "zone" {
  description = "Zona dentro de la region"
  type        = string
  default     = "europe-west1-b"
}

# main.tf
terraform {
  required_version = ">= 1.5.0"
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = "~> 5.0"
    }
    random = {
      source  = "hashicorp/random"
      version = "~> 3.5"
    }
  }
}

resource "random_id" "project_suffix" {
  byte_length = 4
}

resource "google_project" "gke_project" {
  name            = var.project_name
  project_id      = "${var.project_name}-${random_id.project_suffix.hex}"
  billing_account = var.billing_account_id
}

resource "google_project_service" "enabled_apis" {
  for_each = toset([
    "compute.googleapis.com",
    "container.googleapis.com"
  ])
  project = google_project.gke_project.project_id
  service = each.key

  disable_on_destroy = false
}

resource "google_compute_network" "custom_vpc" {
  name                    = "gke-custom-vpc"
  project                 = google_project.gke_project.project_id
  auto_create_subnetworks = false
  depends_on              = [google_project_service.enabled_apis]
}

resource "google_compute_subnetwork" "gke_subnet" {
  name          = "gke-subnet-01"
  project       = google_project.gke_project.project_id
  region        = var.region
  network       = google_compute_network.custom_vpc.id
  ip_cidr_range = "10.10.0.0/24"
}

resource "google_container_cluster" "primary" {
  name               = "gke-dev-cluster"
  project            = google_project.gke_project.project_id
  location           = var.zone
  network            = google_compute_network.custom_vpc.name
  subnetwork         = google_compute_subnetwork.gke_subnet.name
  
  # Desactivamos el pool por defecto para gestionar un node pool independiente
  remove_default_node_pool = true
  initial_node_count       = 1
  deletion_protection      = false

  depends_on = [google_project_service.enabled_apis]
}

resource "google_container_node_pool" "primary_nodes" {
  name       = "primary-node-pool"
  project    = google_project.gke_project.project_id
  location   = var.zone
  cluster    = google_container_cluster.primary.name
  node_count = 1

  node_config {
    machine_type = "e2-small"
    disk_size_gb = 30
    oauth_scopes = [
      "https://www.googleapis.com/auth/cloud-platform"
    ]
    labels = {
      environment = "development"
    }
  }
}

Framework de Implementación Paso a Paso

  1. Configuración del Entorno de Ejecución (WSL / Linux)

    Autentica tu sesión de desarrollo para que Terraform pueda consumir las credenciales del Cloud SDK:

    gcloud auth application-default login
  2. Inicialización y Planificación de Terraform

    Descarga los proveedores e inspecciona el grafo de recursos que serán creados en GCP:

    terraform init
    terraform plan
  3. Aprovisionamiento del Clúster en GCP

    Aplica la configuración declarativa para orquestar el proyecto, APIs, redes y nodos:

    terraform apply -auto-approve
  4. Obtención de Credenciales y Verificación con Kubernetes

    Configura el contexto de kubectl para interactuar de forma segura con el plano de control de GKE:

    gcloud container clusters get-credentials gke-dev-cluster --zone europe-west1-b --project [PROJECT_ID]
    kubectl get nodes
    kubectl create deployment hola-mundo --image=nginx
    kubectl get pods

Preguntas Frecuentes Técnicas (FAQ)

¿Por qué usar Terraform junto con asistentes agénticos de IA para desplegar GKE?

La integración de agentes como Antigravity permite convertir requerimientos de alto nivel en configuraciones HCL completas y sintácticamente válidas en segundos. Esto libera al arquitecto de tareas repetitivas de sintaxis y le permite concentrarse en la resiliencia, seguridad y optimización de costes.

¿Cuál es la diferencia entre GKE Standard y GKE Autopilot al definir la infraestructura?

En GKE Standard el equipo de arquitectura tiene control absoluto sobre el dimensionamiento de las instancias Compute Engine, parámetros de red y políticas de autoescalado. En GKE Autopilot, Google gestiona por completo los nodos y el cobro se basa en la reserva exacta de recursos declarada en los Pods.

¿Cómo autenticar Terraform en entornos WSL/Linux contra Google Cloud correctamente?

Ejecutando gcloud auth application-default login se abre el flujo OAuth en el navegador y se almacena el token localmente en ~/.config/gcloud/application_default_credentials.json, permitiendo al Google Provider de Terraform actuar con tus permisos sin exponer Service Account Keys en texto plano.

Sobre el Autor: Eduardo Martínez Agrelo

AI & Data Architect

Especialista en diseño de plataformas de datos, arquitecturas cloud nativas en Google Cloud Platform e integración de Inteligencia Artificial aplicada a la ingeniería de sistemas y automatización empresarial.