GitOps Es una técnica para el despliegue de aplicaciones a través del patrón control loop. Un operador mantiene sincronizado el despliegue de la aplicación con la configuración, generalmente un repositorio de Git. La última vez que escribimos acerca de GitOps quedaba pendiente la definición del término, o nombre, por parte de la comunidad. En ese momento nos preocupaban las interpretaciones comunes de la técnica que se incluían acercamientos tipo “rama por ambiente” para la configuración, que podrían causar snowflakes as code. Además, las conversaciones en respecto a GitOps como alternativa a la entrega continua eran confusas. Desde entonces, los cuatro principios de GitOps han aclarado el alcance y la naturaleza de la técnica. Cuando se va más allá del alboroto y confusión, GitOps es una técnica útil que aprovecha la funcionalidad de un cúmulo, o clúster, de Kubernetes y crea oportunidades para separar las preocupaciones entre configurar una aplicación y la implementación del proceso de despliegue. Algunos de nuestros equipos han implementado GitOps como parte de su proceso de entrega continua con experiencias positivas, y es por esto que recomendamos su evaluación.
Sugerimos usar GitOps con cierto grado de cuidado, especialmente con lo que respecta a las estrategias de ramificación en repositorios de código. GitOps se puede ver como una forma de implementar infrastructura como código que implica la sincronización y aplicación continua de código de infraestructura desde Git en varios ambientes. Cuando se usa con una estrategia de "rama por ambiente", los cambios se promueven de un ambiente al siguiente mediante la combinación (merge) del código. Si bien tratar el código como única fuente de la verdad es un enfoque sólido, vemos que la estrategia de "rama por entorno" típicamente da pie a que aparezcan diferencias entre ambientes y que configuraciones específicas se propaguen a medida que las operaciones de combinación del código (merge) se vuelven problemáticas o se dejan de hacer. Esto es muy similar a lo que advertimos en el pasado respecto a las ramas de larga duración con GitFlow.