En esencia, el modelo de GitOps utiliza el patrón del controlador. Esto se ve favorecido aún más por el patrón de operadores desde la perspectiva de Kubernetes u OpenShift, en el que los operadores son extensiones de software que utilizan recursos personalizados para gestionar las aplicaciones y sus componentes.
Sería un error no mencionar Argo CD, una herramienta de GitOps que ayuda con los flujos de trabajo de GitOps. Argo CD es una herramienta declarativa de código abierto para la integración continua y la implementación continua (CI/CD) de aplicaciones. Implementado como un controlador de Kubernetes, Argo CD monitoriza continuamente las definiciones y configuraciones de aplicaciones en ejecución, comparando el estado actual en vivo en el clúster con el estado deseado definido en un repositorio Git.
Pero GitOps no es un único producto, complemento o plataforma. Los flujos de trabajo de GitOps ayudan a los equipos a gestionar la infraestructura de TI a través de procesos que ya utilizan en el desarrollo de aplicaciones. Según un blog de GitLab, GitOps requiere tres componentes principales: GitOps = IaC + PR o MR + CI/CD
- IaC: Infraestructura como Código (IaC) es la práctica de mantener toda la configuración de infraestructura almacenada como código. GitOps utiliza un repositorio Git como única fuente fiable para las definiciones de infraestructura. Git realiza un seguimiento de todos los cambios en la gestión del código.
- PRs o MRs: GitOps utiliza pull requests (PRs) o merge requests (MRs) como mecanismo de cambio para todas las actualizaciones de infraestructura. Aquí es donde los equipos pueden colaborar a través de reseñas y comentarios y donde tienen lugar las aprobaciones formales.
- CI/CD: GitOps automatiza las actualizaciones de infraestructura mediante un flujo de trabajo Git con integración continua (CI) y entrega continua (CD). Cuando se fusiona código nuevo, el pipeline de CI/CD promulga el cambio en el entorno. Cualquier desviación en la configuración, como cambios manuales o errores, se sobrescribe mediante la automatización de GitOps, de modo que el entorno converge en el estado deseado definido en Git, lo que proporciona operaciones continuas (CO):