Volver al portafolio
EN PT ES
Caso de estudio · Networking de plataforma

Migración de GKE a Dataplane V2 (Cilium / eBPF)

GKE está cambiando su networking por defecto de iptables a Cilium y eBPF, y el campo que lo controla no se puede cambiar en un cluster en ejecución. Así convertí una destrucción y recreación forzada en un bootstrap GitOps versionado y un plan de validación de 18 puntos.

Por Vitor Schiavo Actualizado en octubre de 2026 ~7 min de lectura
Solución de un vistazoCambiar la red en un entorno controlado.
Cluster existenteCapturar un baseline funcional
Dataplane V2Aplicar cambios de red
ValidaciónProbar rutas y rollback

Entrega en no producción con verificaciones explícitas y rollback; producción quedó fuera de este alcance.

Contribución de un vistazo

Mi responsabilidad
Migración de red en no producción y un bootstrap de plataforma repetible.
Alcance
Migración de desarrollo, staging y sandbox; producción excluida de esta entrega.
Colaboración y límites
Validé la infraestructura y la compatibilidad de los controladores en la ventana de no producción disponible.
Resultado
Una entrega escalonada en no producción con validación explícita y rollback; no se afirma ningún resultado de migración a nivel de producción.

GKE anunció que, a partir del 30 de marzo de 2027, los nuevos clusters usan por defecto Dataplane V2 (DPv2), que reemplaza el antiguo data plane de kube-proxy e iptables (Dataplane V1) por Cilium y eBPF. El detalle: el campo datapath_provider es inmutable. No se puede cambiar un cluster en ejecución de V1 a V2. La única forma de cruzar es destruir y recrear el cluster.

Por qué moverse antes y no en la fecha límite

Esperar hasta 2027 es la opción cara. Me moví mientras era barato y seguro:

Hacer explícito el campo inmutable

La causa raíz del riesgo de la «sorpresa en 2027» es que el campo siempre se había dejado en el valor por defecto de la nube. Convertí datapath_provider en una variable de Terraform explícita y obligatoria en el módulo del cluster, para que ningún cluster se cree jamás sin una elección consciente:

La lección se generaliza: cualquier campo de infraestructura inmutable debería ser una variable explícita en el código, nunca un valor por defecto heredado. Los valores por defecto cambian sin avisar.

El lado positivo: un bootstrap GitOps

Antes de esto, levantar un cluster significaba un montón de kubectl apply manuales e instalaciones ad-hoc de Helm: cert-manager, dos ingress controllers, el autoscaler, cluster issuers. Ese conocimiento vivía en la cabeza de las personas. Como una destrucción y recreación lo habría perdido todo, lo convertí en un directorio de bootstrap versionado más un workflow de CI, de modo que levantar un cluster desde cero es ahora una ejecución de pipeline determinista y revisada. La recreación también me permitió actualizar el autoscaler unas pocas versiones menores y fijar versiones exactas de cert-manager y del resto.

Cada cluster recreado se vuelve a registrar luego con el controlador central de GitOps, ya que el endpoint de la API del cluster, el token y el certificado de CA cambian al recrearlo.

eBPFdata plane de Cilium
GitOpsbootstrap repetible
18 puntosplan de validación
0 → prodriesgo escalonado, prod al final

Valida el data plane, no lo des por hecho

Cambiar el data plane puede alterar comportamientos sutiles (la aplicación de NetworkPolicy, las IP de origen, la conectividad). Validé cada cluster recreado contra un plan de 18 puntos: NetworkPolicies, external secrets con Workload Identity, sincronización de GitOps, scraping de Prometheus, emisión de certificados con cert-manager y egress a través de Cloud NAT, entre otros. Todo en verde antes de que algo dependiera de ello.

Lo que le diría a alguien que empieza con esto

Decisiones y próximos pasos

Una mirada retrospectiva al enfoque y sus límites. La próxima mejora es una propuesta, no un resultado entregado.

Alternativa y justificación

Mantener el data plane anterior evita el trabajo de migración inmediato; una reconstrucción controlada ofrece la oportunidad de validar el reemplazo antes de un cambio de dependencia futuro.

Contrapartida

El networking inmutable del cluster obliga a recrearlo. La compatibilidad de los controladores y el orden de restauración importan tanto como la creación del cluster.

Lo que mejoraría a continuación

Próxima mejora: conservar una lista de verificación de compatibilidad y ensayar los prerrequisitos de producción antes de planificar cualquier migración de producción aparte.