¿Qué es GitOps?

Copiar URL

GitOps consiste en una serie de prácticas destinadas a gestionar las configuraciones de las aplicaciones y las infraestructuras para ampliar los procesos actuales y mejorar el ciclo de vida de las aplicaciones.

GitOps usa los repositorios de Git como única fuente de verdad para ofrecer una infraestructura como código (IaC). La IaC permite gestionar y preparar la infraestructura a través del código, en lugar de hacerlo mediante procesos manuales. Con este tipo de infraestructura, se crean archivos de configuración que contienen las especificaciones que esta necesita y garantizan que siempre se implemente el mismo entorno. Es fundamental en la implementación de las prácticas de DevOps y de la integración y distribución continuas (CI/CD)

GitOps exige que se describa de manera declarativa el estado deseado del sistema. Si utilizas herramientas declarativas, podrás controlar la versión de todos tus archivos de configuración y códigos fuente en Git. Dado que se hace un seguimiento de todos los cambios en el código, resulta más sencillo implementar las actualizaciones. Además, se puede usar el control de versiones para restaurar el sistema, en caso de ser necesario.

GitOps ofrece:

  • un flujo de trabajo estándar para el desarrollo de las aplicaciones;
  • mayor seguridad gracias a la mejora del sistema de supervisión y auditorías;
  • confiabilidad mejorada con un sistema de supervisión y control de versiones a través de Git;
  • uniformidad en todos los clústeres, las nubes y los entornos locales.

Descubre los operadores de Red Hat OpenShift GitOps

GitOps y DevOps comparten algunos principios y objetivos. DevOps se concentra en el cambio cultural y en ofrecer a los equipos de desarrollo y de operaciones la posibilidad de trabajar juntos de manera colaborativa.

GitOps te proporciona las herramientas y un marco para que apliques las prácticas de DevOps (como la colaboración, la CI/CD y el control de versiones) a la automatización de la infraestructura y la implementación de las aplicaciones.

Recursos de Red Hat

GitOps implica un cambio de proceso, de modo que los equipos pueden necesitar tiempo para adoptarlo, así como una mayor colaboración y comunicación entre los miembros. Una manera de reducir estos desafíos es fomentar una cultura de retroalimentación, pero aún así pueden surgir.

A pesar de ello, GitOps utiliza las filosofías y los enfoques ofrecidos a quienes invierten en la cultura de DevOps y proporciona un marco para empezar a obtener resultados.

Además, emplea los flujos de trabajo de Git que conocen los desarrolladores para ampliar los procesos actuales, desde el desarrollo de la aplicación hasta la implementación, la gestión del ciclo de vida y la configuración de la infraestructura. Los desarrolladores pueden trabajar en los repositorios de código que ya conocen, mientras que los equipos de operaciones adoptan las mismas herramientas y técnicas para gestionar la infraestructura. Los cambios que se implementan durante el ciclo de vida de la aplicación se registran en el repositorio de Git y se pueden auditar.

Esto permite que los desarrolladores finalmente puedan trabajar a gusto: escriben el código a su propio ritmo sin tener que esperar a que los equipos de operaciones les asignen o aprueben los recursos.

En cuanto a los equipos de operaciones, el hecho de que puedan obtener información sobre los cambios implica que les será posible rastrear y solucionar los problemas con rapidez para mejorar la seguridad general. Los registros de auditoría actualizados permiten que las empresas reduzcan el riesgo de enfrentarse a cambios no deseados y los corrijan antes de que lleguen a la etapa de producción.

Estos cambios en el código, desde la etapa de desarrollo hasta la de producción, agilizan la capacidad de respuesta de las empresas en el panorama empresarial y competitivo.

Hay muchas herramientas que se pueden combinar con otras diferentes para diseñar un marco de GitOps, como los repositorios de Git, Kubernetes, las herramientas de integración y distribución continuas (CI/CD) y las de gestión de la configuración. Para elegir la combinación adecuada, los desarrolladores deben identificar sus necesidades y las funciones que ofrecen una solución para ellas. A continuación se indican algunas herramientas que conviene tener en cuenta.  

Herramientas de CI

La integración continua (CI) consiste en integrar los cambios del código en un repositorio de código fuente compartido de forma automática y frecuente. A medida que se realizan estas actualizaciones, se activan los pasos de prueba automatizados para garantizar la confiabilidad de los cambios fusionados. 

Tekton: un marco desarrollado para Kubernetes que permite establecer sistemas de CI/CD. Ofrece a los ingenieros y los desarrolladores de plataformas la flexibilidad, las prácticas recomendadas y la estandarización que necesitan para realizar los diseños, las pruebas y las implementaciones en proveedores en la nube y sistemas locales. 

Jenkins: es un servidor de automatización open source basado en Java. Facilita a los desarrolladores la integración de sus cambios al realizar pruebas permanentes, diseñar e implementar los proyectos de forma sencilla y con una configuración mínima. Jenkins X es una extensión del ecosistema de Jenkins que permite automatizar los procesos de CI/CD en la nube. 

Herramientas de CD

La implementación o distribución continua (CD) es un proceso de dos partes que implica la integración, la prueba y la distribución de los cambios en el código. Después de la automatización de las compilaciones y las pruebas de unidad e integración de la CI, la distribución continua automatiza el traslado del código validado hacia un repositorio. La implementación continua es una extensión de la distribución continua e implica el lanzamiento automático de los cambios del desarrollador, desde el repositorio hasta la producción, para ponerlos a disposición de los clientes.

Argo CD: es una herramienta declarativa de distribución continua para Kubernetes. Permite que los equipos de desarrollo implementen y gestionen las aplicaciones sin necesidad de poseer amplios conocimientos sobre Kubernetes ni acceso completo a este sistema. Con la supervisión de todo el proceso de ejecución, Argo CD garantiza que sus aplicaciones nunca dejen de estar sincronizadas con los estados deseados. 

Primeros pasos en Argo CD

Flux: se trata de una herramienta de GitOps que automatiza la implementación en clústeres de Kubernetes gracias a que mantiene los estados del clúster sincronizados con los repositorios de Git. Se basa en un conjunto de extensiones de la API de Kubernetes y admite la implementación de aplicaciones y la gestión de infraestructuras.

Lo primero que necesitas es una infraestructura que se pueda gestionar de manera declarativa. Por eso, GitOps suele utilizarse como modelo operativo para Kubernetes y para el desarrollo de aplicaciones en la nube, y permite que Kubernetes realice implementaciones constantes.

Sin embargo, GitOps no exige el uso de esta plataforma, ya que se trata de una técnica que puede aplicarse a otros canales de implementación e infraestructura. GitOps puede usarse para diseñar canales de desarrollo, programar aplicaciones, gestionar configuraciones, preparar clústeres de Kubernetes y realizar implementaciones en registros de contenedores o Kubernetes.

Utiliza GitOps en Red Hat OpenShift

GitOps puede considerarse una evolución de la infraestructura como código (IaC) que usa Git como su sistema de control de versiones para las configuraciones de la infraestructura. Por lo general, la IaC utiliza un enfoque declarativo para gestionar la infraestructura, es decir, define el estado deseado del sistema y realiza un seguimiento del estado actual.

Al igual que con la IaC, GitOps exige que se describa de manera declarativa el estado deseado del sistema. Si utilizas herramientas declarativas, podrás controlar la versión de todos tus archivos de configuración y códigos fuente en Git.

Por lo general, los canales de CI/CD se activan por eventos externos, como la inserción de un código en un repositorio. En un flujo de trabajo de GitOps, los cambios se realizan utilizando solicitudes de incorporación de cambios, las cuales modifican el estado en el repositorio de Git. 

Para implementar una nueva versión mediante un flujo de trabajo de GitOps, se debe realizar una solicitud de incorporación de cambios en Git, que modifica el estado declarado del clúster. El operador de GitOps detecta la confirmación y extrae de Git la declaración con el nuevo estado.  

Una vez que se aprueban y unifican los cambios, se aplican automáticamente a la infraestructura actual. Los desarrolladores pueden seguir usando sus prácticas de CI/CD y flujos de trabajo estándares, ya que la CD recae únicamente en el motor de GitOps y puede funcionar de manera autónoma o integrarse en una solución coordinada de CI.

Por lo general, si utilizas GitOps con Kubernetes, el operador será un operador de Kubernetes. El operador compara el estado deseado, que figura en el repositorio, con el estado real de la infraestructura implementada. En caso de encontrar diferencias entre el estado real y lo que hay en el repositorio, actualizará la infraestructura y las aplicaciones.

Un concepto importante de GitOps es la capacidad para determinar el estado interno de todos los sistemas que puedan analizarse, la cual permite garantizar que coincidan el estado deseado y el real (es decir, el que se observa). Aunque GitOps permite determinar el estado interno de los recursos que implementa, no funciona como una herramienta de supervisión general. En cambio, Red Hat® OpenShift® Observability ofrece un conjunto completo de herramientas que utilizan indicadores, registros, rastros y eventos para que puedas superar esas limitaciones y establecer bucles de retroalimentación entre los sistemas de aplicaciones y los repositorios de Git. La combinación de GitOps y OpenShift Observability proporciona información sobre los sistemas de aplicaciones a través de la supervisión, el análisis y la resolución de problemas. 

Si utilizas solicitudes de incorporación de cambios y sistemas de control de versiones, como Git, obtendrás un panorama completo del proceso de implementación:  visualizarás y rastrearás los cambios que se realizaron en el sistema, obtendrás un registro de auditoría, y podrás revertir los cambios si algo sale mal.

Los flujos de trabajo de GitOps pueden aumentar la productividad y la velocidad del desarrollo y de las implementaciones y, al mismo tiempo, mejorar la estabilidad y fiabilidad de los sistemas.

Obtén más información sobre los flujos de trabajo de GitOps

Red Hat cuenta con una variedad de productos que respaldan tu flujo de trabajo de GitOps.Red Hat OpenShift es una plataforma de aplicaciones unificada que los administradores pueden configurar y gestionar conforme a los principios de GitOps, lo cual garantiza la uniformidad entre los clústeres de Kubernetes y los ciclos de vida de desarrollo. Red Hat OpenShift permite consolidar la administración y la gestión de las aplicaciones que se encuentran distribuidas en recursos locales y de nube pública, lo cual permite:

  • comprobar que sea similar el estado de los clústeres (las configuraciones, la supervisión, el almacenamiento), para conocer las limitaciones de la aplicación al comienzo del ciclo de desarrollo;
  • restaurar un cambio en el código en varios clústeres recuperándolos desde un estado conocido;
  • implementar un cambio enviado a Git en varios clústeres de Red Hat OpenShift;
  • asociar las configuraciones en plantillas en toda la nube híbrida.

 

GitOps Red Hat OpenShift Kubernetes diagram
 

Red Hat OpenShift GitOps es un operador que proporciona un flujo de trabajo que integra los repositorios de Git, las herramientas de integración y distribución continuas y Kubernetes para desarrollar sistemas de software con mayor agilidad, seguridad y flexibilidad, pero sin dejar de lado la calidad. Permite diseñar e integrar flujos de trabajo declarativos de distribución continua impulsados por Git directamente en la plataforma de desarrollo de las aplicaciones. Antes, se usaba una sola herramienta para la CI/CD, como Jenkins o Tekton, pero ahora se utilizan dos. Por ejemplo, puedes utilizar Jenkins o Tekton para la CI, y además GitOps, que es un motor de CD. Red Hat participa en diversos proyectos open source (como Argo CD) a fin de implementar un marco para GitOps. Instala el operador de Red Hat OpenShift GitOps y desarrolla las herramientas nuevas con Argo para gestionar GitOps dentro de las implementaciones actuales de Red Hat OpenShift.

OpenShift GitOps está disponible para servicios autogestionados, en la nube y de edge computing. Los servicios de nube gestionados, como Red Hat OpenShift Service on AWS (ROSA), Microsoft Azure Red Hat OpenShift y Red Hat OpenShift Dedicated, permiten que las empresas aumenten la eficiencia operativa, se centren nuevamente en generar innovaciones y diseñen, implementen y ajusten las aplicaciones en poco tiempo. 

Las versiones autogestionadas de OpenShift, como Red Hat OpenShift Virtualization Engine, brindan la función de virtualización de esta plataforma para implementar, gestionar y ajustar máquinas virtuales. OpenShift GitOps admite la implementación automatizada de las máquinas virtuales y, junto con OpenShift Virtualization Engine, facilita a los usuarios la migración y la gestión de estas unidades en función de sus necesidades de virtualización. En el extremo de la red, la compilación MicroShift de Red Hat ofrece toda la potencia y capacidad de ajuste de Kubernetes, lo cual permite que las aplicaciones se escriban una vez y se ejecuten en el lugar donde se necesiten, ya sea cerca de la fuente de datos o del usuario final.

Red Hat Advanced Cluster Management for Kubernetes ofrece funciones para gestionar el ciclo de vida de varios clústeres de Kubernetes. Utiliza un marco de suscripción y canal, junto con normas de ubicación, para implementar las aplicaciones de forma automática en un modelo de estado deseado en múltiples clústeres. Advanced Cluster Management for Kubernetes utiliza OpenShift GitOps como motor de GitOps. Cuenta con funciones que no solo facilitan la gestión de conjuntos de aplicaciones, instancias de Argo y configuraciones de clústeres de GitOps, sino que también permiten implementar políticas. 

Red Hat Ansible® Automation Platform se encarga de que tus sistemas alcancen el estado deseado, sin importar el actual. Los playbooks de Ansible, escritos en YAML, describen el estado deseado de tus sistemas, que generalmente se conservan en el control de versiones. Ansible es una de las herramientas ideales para el flujo de trabajo de GitOps. Dado que Argo y GitOps solo tienen relación con la plataforma de Kubernetes, Ansible puede utilizarse para automatizar tareas externas a esta, sobre todo cuando se trata de acciones obligatorias. Con la integración de Red Hat Advanced Cluster Management, Red Hat OpenShift GitOps y Red Hat Ansible Automation Platform, los equipos de DevOps pueden asegurarse de que las configuraciones se gestionen y mantengan según sea necesario para mejorar los canales de CI/CD.

Descubre algunos ejemplos reales para aplicar las prácticas de GitOps en Kubernetes

Hub

El blog oficial de Red Hat

Obtenga la información más reciente sobre nuestro ecosistema de clientes, socios y comunidades.

Todas las versiones de prueba de los productos de Red Hat

Con las versiones de prueba gratuitas de nuestros productos, podrás adquirir experiencia práctica, prepararte para obtener una certificación o evaluar las soluciones para saber si son adecuadas para tu empresa.

Más información

What is multi-cloud GitOps?

GitOps is a set of principles that guide your workflow and enables you to implement continuous deployment (CD) for cloud native applications. It helps you manage your cluster configuration and application deployments by introducing automation to a previously manual process.

¿Qué es un flujo de trabajo de GitOps?

Se trata de un enfoque moderno de desarrollo e implementación de software en el que todo el ciclo de vida de la infraestructura y las aplicaciones se gestiona a través de repositorios de Git como única fuente de información.

¿Qué es una plataforma interna para desarrolladores?

Una plataforma interna para desarrolladores (IDP) consiste en un conjunto de tecnologías y herramientas de autoservicio que los desarrolladores necesitan para crear e implementar código.

DevOps: lecturas recomendadas