Foto de Cup of Couple en Pexel

Desde hace un tiempo vengo leyendo muchos artículos del tipo «GitOps vs DevOps» que intentan separar conceptualmente ambos términos.

Esto es un error, si alguien te cuenta esto así, que sepas que esa persona o libro está ya equivocado, sí, así de drástico soy en esta afirmación.

GitOps es una implementación de DevOps. Si sabes DevOps podrás implementar GitOps, pero si sólo sabes GitOps no sabes de DevOps.

El anterior párrafor es lo que debe marcar cualquier explicación.

Aplica la anterior máxima para MLOps, DataOps o lo que por delante venga de Ops. Esto debe ser para justificar algo alguien en su trabajo… al final no deja de ser implementaciones específicas de DevOps. Yo si fuera tú, no me fiaría de alguien que solo sabe la implementación.

Y ¿por qué no?: SubversionOps, VisualSourceSafeOps, o lo que se nos ocurra… al final es una implementación de DevOps.

Para recordar viejos tiempos, este documento: DevOps es Cultura, os cuenta que “todo bajo el control de código fuente” y como veis esa es una de las máximas de GitOps que os voy a detallar.

En su día usé este documento para que de una vez por todas cada vez que veo que se solicita un perfil de DevOps o me ofrecen trabajo de DevOps y terminara explicando una y otra vez lo que plasmé en el documento, no me hicieran perder un segundo más de mi vida.

En esta ocasión voy a desmitificar esto de GitOps para que no vuelva a perder el tiempo en explicar que solamente es una implementación, una implementación, de los cientos que uno puede diseñar.

Esta implementación: GitOps, está muy ligada al mundo Kubernetes y que muchos perfiles de infraestructura que quieren ser “perfiles de DevOps” (lo que me a costado escribir esto) vienen a contarnos milongas con que son perfiles de GitOps. Es lo más de lo más, ya que el término viene unos años atrás de DevOps (lógico, es una implementación) y debe ser más cool que usar DevOps.

Vuelvo al tema principal.

Introducción

Yo os había adelantado que GitOps va muy ligado a Kubernetes.

Por si acaso, Kuberenetes es una popular plataforma de orquestación de cargas de trabajo de contenedores de código abierto y el estándar de facto para ejecutar aplicaciones de producción, ya sea en nubes públicas o privadas. La apertura y extensibilidad de esta plataforma permite la automatización, lo que reduce los riesgos de entrega y aumenta la calidad del servicio. Este potente paradigma se amplía con otro enfoque cada vez más popular denominado GitOps.

¿Qué es GitOps?

GitOps es una metodología y una práctica que utiliza repositorios Git como única fuente de verdad para ofrecer infraestructura como código. Toma los pilares y enfoques de la cultura DevOps y proporciona un marco para empezar a obtener resultados. La relación entre DevOps y GitOps es estrecha, ya que GitOps se ha convertido en la opción popular para implementar y mejorar DevOps, ingeniería de plataformas y SRE.

GitOps es un enfoque agnóstico, y un marco GitOps se puede construir con herramientas como Git, Kubernetes y soluciones CI/CD. Los tres pilares principales de GitOps son:

  • Git es la única fuente de verdad
  • Tratar todo como código
  • Las operaciones se realizan a través de flujos de trabajo Git

Hay una comunidad activa en torno a GitOps, y el Grupo de Trabajo GitOps define un conjunto de Principios GitOps (actualmente en la versión 1.0.0) disponible en OpenGitOps:

  • Declarativo: un sistema gestionado por GitOps debe tener su estado deseado expresado declarativamente.
  • Versionado e inmutable: el estado deseado se almacena de forma que se aplique la inmutabilidad, el versionado y se conserve un historial de versiones completo.
  • Extraído (Pulled) automáticamente: los agentes de software extraen automáticamente las declaraciones de estado deseadas de la fuente.
  • Conciliación continua: los agentes de software observan continuamente el estado real del sistema e intentan aplicar el estado deseado.

Como puedes ver es simple y llanamente un framework de DevOps que se denomina GitOps y tiene una serie de prácticas. Por tanto, si conoces DevOps puedes llegar a GitOps, si solo conoces GitOps, nunca podrás llegar a conocer DevOps. Por si no queda suficientemente claro: GitOps es un subconjunto de DevOps.

¿Por qué GitOps?

Utilizando los flujos de trabajo comunes basados en Git con los que los desarrolladores estamos tan familiarizados, GitOps amplía los procesos existentes desde el desarrollo de aplicaciones hasta su despliegue, la gestión del ciclo de vida de las aplicaciones y la configuración de la infraestructura.

Cada cambio a lo largo del ciclo de vida de la aplicación puede ser rastreada en el repositorio Git y por tanto auditable. Este enfoque es beneficioso tanto para los desarrolladores como para los equipos de operaciones, ya que mejora la capacidad de rastrear y reproducir problemas rápidamente, mejorando la seguridad general. Un punto clave es reducir el riesgo de cambios no deseados y corregirlos antes de que pasen a producción.

Beneficios clave de esta implementación
  • Flujo de trabajo estándar: uso de herramientas y flujos de trabajo de Git ampliamente conocidos por los equipos de desarrollo de aplicaciones.
  • Seguridad mejorada: posibilidad de revisar los cambios de antemano, detectar desviaciones en la configuración y actuar en consecuencia.
  • Visibilidad y auditoría: captura y rastrea cualquier cambio en los clústeres a través del historial de Git
  • Coherencia multiclúster: configura de forma fiable y coherente varios entornos y varios clústeres y despliegues Kubernetes.
Conclusión
  • No busques un perfil de DevOps, busca a alguien a favor de la cultura, la haya vivido y sea claramente alguien completamente partidaria por ella. El resto vendrá depues.
  • No busques a alguien que sólo sepa GitOps, si no que sepa DevOps y conozca el framework de GitOps.
  • Por mucho que tenga el prefijo Git, es tan factible otra herramienta de control del código fuente como Git… aunque Git es lo más deseable hoy en día.
  • Siempre busca a alguien que sepa la teoría, el tooling viene después.
  • Este framework se puede aplicar a Serverless, ya que la IaC esta integrada en tu control del código fuente y los estados inmutables tambien son aplicables aquí. Es decir, no es exclusivo de Kubernetes.
  • Y para terminar juraría que muchas de las personas que han realizado DevOps, IaC, ya han realizado GitOps sin saber que esto en un momento dado alguien lo había bautizado como GitOps.