En su núcleo, el modelo GitOps utiliza el patrón del controlador. Esto se ve favorecido aún más por el patrón del operador desde la perspectiva de Kubernetes u OpenShift, en el que los operadores son extensiones de software que utilizan recursos personalizados para gestionar 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 el despliegue continuo (CI/CD) de aplicaciones. Implementado como un controlador de Kubernetes, Argo CD monitorea 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 solo 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. Para tomar prestado de 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 de información para las definiciones de infraestructura. Git realiza un seguimiento de todos los cambios en la gestión de código.
- PRs o MRs: GitOps utiliza solicitudes de extracción (PR) o solicitudes de fusión (MR) como mecanismo de cambio para todas las actualizaciones de infraestructura. Aquí es donde los equipos pueden colaborar a través de revisiones y comentarios y donde se llevan a cabo 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 de configuración, como cambios manuales o errores, se sobrescribe con la automatización de GitOps para que el entorno converja en el estado deseado definido en Git, proporcionando así operaciones continuas (CO):