¿Por qué hemos creado en OVH la solución Managed Kubernetes?

Aunque usar Kubernetes es una gran experiencia, manejarlo en producción es mucho menos sencillo y crear una plataforma de Kubernetes administrada es todavía peor... 

En noviembre de 2018 lanzamos la versión beta de nuestro servicio Managed Kubernetes. Este fue el final de un viaje que iniciamos en OVH como simples usuarios de Kubernetes y que nos llevó a construir un servicio totalmente administrado, convertirnos en una plataforma Kubernetes certificada y aprender una infinidad de cosas sobre cómo construir, operar y manejar este servicio a gran escala...

Ahora que la fase beta ya está en marcha y que estamos puliendo los últimos detalles antes de su lanzamiento oficial, vamos a hacer un alto en el camino para analizar algunas de las lecciones que hemos aprendido, las decisiones tecnológicas que hemos tomado y las herramientas que hemos ido construyendo a lo largo de este proceso.

En este artículo vamos a presentar nuestro Managed Kubernetes y explicar por qué OVH ha decidido construir este servicio. En las próximas entregas analizaremos algunos aspectos concretos de la arquitectura, como el escalado del etcd o cómo iniciar los maestros Kubernetes de los clientes en los nodos de nuestro cluster.

El viaje de Kubernetes 

La primera vez que trasteas con Minikube suele ser increíble. No tienes que preocuparte de administrar las instancias, ni de monitorizar si los contenedores están funcionando; si detienes una instancia, Kubernetes vuelve a crear los contenedores en otra instancia... En fin, ¡pura magia!

Así que, como nuevo adepto, decides intentar construir un cluster de verdad y desplegar en él aplicaciones algo mayores. Creas algunas máquinas virtuales, aprendes a usar kubeadm y, poco después, te das cuenta de que has creado un cluster Kubernetes nuevecito en el que desplegar tus aplicaciones. Sigue siendo mágico, pero empiezas a pensar que, como en muchos cuentos, la magia tiene un precio.

Poner Kubernetes en producción

Y cuando intentas desplegar en producción tu primer cluster Kubernetes —en un hipervisor o una plataforma bare-metal— te das cuenta de que, efectivamente, toda esa magia tiene un precio bastante elevado... 

Desplegar el cluster Kubernetes es solo el principio, ya que para poder considerarlo production ready (apto para su puesta en producción), también hay que asegurarse de lo siguiente: 

  • El proceso de instalación es automatizable y reproducible.
  • El proceso de upgrade y rollback es seguro. 
  • Existe un procedimiento de recuperación, con suficiente documentación y ya testeado.
  • Su rendimiento es constante y predecible, especialmente al utilizar volúmenes persistentes.
  • El cluster es operable, con suficientes trazas, métricas y logs para detectar y solucionar posibles problemas y fallos.
  • El servicio es seguro y de alta disponibilidad.

La respuesta de OVH ante esta complejidad operativa

Pero si alguien creía que desplegar un nuevo cluster Kubernetes le iba a dar toda esa experiencia NoOps, parece que se equivocaba. Aprender a dominar la magia requiere mucho tiempo y, desde luego, no es algo que esté exento de riesgo...

Así que, como sucede con muchas otras potentes tecnologías, la aparente sencillez y versatilidad de Kubernetes en cuanto a «Dev» viene acompañada de una gran complejidad respecto a «Ops». No es de extrañar que muchos usuarios busquen un servicio de Kubernetes administrado cuando tienen que pasar de la prueba de concepto a la producción.

OVH, que trabaja por y para los usuarios, ha querido ofrecer una respuesta a esta demanda creando su propia solución Kubernetes administrada, íntegramente basada en código abierto, sin nada que impida a los clientes cambiar de proveedor y totalmente compatible con cualquier solución Kubernetes pura. Nuestro objetivo era ofrecer a los usuarios un cluster Kubernetes totalmente administrado, llave en mano y listo para usar, sin los inconvenientes de la instalación o la gestión.

A hombros de los gigantes...

Teníamos claro que queríamos construir una solución Kubernetes administrada, pero ¿cómo? El primer paso era fácil: teníamos que asegurarnos de que la infraestructura subyacente era extremadamente robusta, así que decidimos apoyarnos en nuestra solución Public Cloud, basada en OpenStack.

Certificación de Kubernetes

Construir nuestra plataforma sobre un producto maduro, de alta disponibilidad y basado en estándares como el Public Cloud de OVH nos permitió concentrar nuestros esfuerzos en el verdadero reto al que nos enfrentábamos: crear un servicio Kubernetes administrado altamente escalable, fácil de operar y con certificación de la CNCF (Cloud Native Computing Foundation).

¿Y ahora?

En próximos artículos analizaremos la arquitectura del servicio Managed Kubernetes de OVH y abordaremos algunas de nuestras elecciones técnicas, explicando por qué las tomamos y cómo hicimos que funcionaran.

Kubinception: ejecutar Kubernetes en Kubernetes
«Kubinception»: ejecutar Kubernetes en Kubernetes

Y empezaremos por una de nuestras decisiones más atrevidas: ejecutar Kubernetes en Kubernetes o, como nosotros lo llamamos, la Kubinception.

Horacio Gonzalez, Developer Evangelist at OVH Platform