Compartir un mismo cluster de OpenShift entre varios entornos, por ejemplo producción y preproducción, es habitual cuando no hay presupuesto o infraestructura para clusters separados. Si el aislamiento no está bien pensado, también es una fuente clásica de incidentes silenciosos.
Mi primer intento para separar cargas por entorno fue con taints: marcar los nodos de un entorno como “no tolerado” para el otro. Sobre el papel sonaba limpio. En la práctica, rompió la programación de varios DaemonSets que necesitaban correr en todos los nodos fuera cual fuera el entorno, y tuve que revertirlo.
El enfoque que sí funcionó fue más simple de lo que esperaba. Etiqueté los nodos por entorno (env=pro / env=pre) y usé nodeSelector o afinidad en las cargas de trabajo de cada entorno, en vez de intentar bloquear a nivel de scheduler con taints. Es menos elegante, pero mucho más predecible.
Lo que de verdad me hizo priorizar arreglar esto fue lo que encontré al auditar dónde estaba corriendo cada cosa. Varias cargas de trabajo “de producción”, incluido un miembro de un replica set de base de datos, estaban corriendo físicamente sobre nodos pensados para el otro entorno. Nada estaba caído. Pero si ese nodo hubiera fallado, habría afectado al quórum de una base de datos que se suponía intocable desde el otro entorno.
La lección no es que los taints sean malos. Es que cualquier estrategia de aislamiento hay que verificarla. Que el manifiesto diga env: pro en algún sitio no garantiza que todo lo que debería estar en PRO esté físicamente en nodos de PRO. Un simple kubectl get pods -A -o wide cruzado con las etiquetas de los nodos destapa estas cosas en dos minutos. Merece la pena hacerlo de forma recurrente, no solo la primera vez que se configura.
¿Compartís cluster entre entornos? ¿Cómo os aseguráis de que cada carga corre donde debe?
Si te interesa el aislamiento y la seguridad en clusters de Kubernetes y OpenShift, lo trato a fondo en mi manual “Seguridad y monitorización en Kubernetes” (950 páginas, en español). [Echa un vistazo a la muestra gratuita]([URL de la muestra]) · Consigue el manual completo

Leave a Reply