Saltar al contenido principal

Guía sencilla de GitOps

Aprende sobre GitOps, su importancia, varios enfoques y cómo integrarlo en un proyecto de IA.
Actualizado 21 ene 2025  · 10 min de lectura

Probablemente hayas oído hablar de DevOps (Developer Operations), que automatiza los procesos de despliegue de aplicaciones. Si eres un profesional de los datos, probablemente estés familiarizado con MLOps (Machine Learning Operations), que agiliza el despliegue de modelos. Pero, ¿qué pasa con GitOps?

En este blog, exploraremos GitOps, por qué es importante, los distintos modelos de GitOps y, por último, cómo integrar GitOps en un gran proyecto de modelo lingüístico. 

Una guía sencilla para GitOps Imagen destacada

Imagen del autor

También puedes aprender la teoría que hay detrás de los conceptos DevOps y MLOps siguiendo dos de nuestros mejores cursos cortos, Conceptos DevOps y Conceptos MLOps.

¿Qué es GitOps?

GitOps es un marco operativo que extiende los principios DevOps a la automatización de infraestructuras. Hace hincapié en las lecciones clave de DevOps, como el control de versiones, la colaboración, el cumplimiento, CI/CDy la observabilidad, y las aplica al aprovisionamiento y la gestión de la infraestructura, especialmente en entornos modernos de nube.

En esencia, GitOps automatiza la gestión de la infraestructura tratando las configuraciones como código, a menudo denominado Infraestructura como Código (IaC). Al igual que los equipos de desarrollo utilizan el código fuente para crear binarios de aplicaciones de forma coherente, los equipos de operaciones utilizan archivos de configuración almacenados en repositorios Git para garantizar que se despliega siempre el mismo entorno de infraestructura. Este enfoque garantiza la coherencia, la fiabilidad y la repetibilidad.

Componentes clave de un flujo de trabajo GitOps:

  1. Repositorio Git: Almacena tanto el código fuente de la aplicación como los archivos de configuración de la infraestructura.
  2. Canal de entrega continua (CD): Automatiza la creación, las pruebas y el despliegue de la aplicación y los cambios de infraestructura.
  3. Herramienta de despliegue de aplicaciones: Garantiza que las aplicaciones se desplieguen correcta y eficazmente basándose en las configuraciones del repositorio Git.
  4. Sistema de vigilancia: Realiza un seguimiento del rendimiento y la salud de la aplicación para mantener la fiabilidad del sistema.

¿Por qué utilizar GitOps?

La gestión de la infraestructura ha sido tradicionalmente manual, pero la nube moderna requiere automatización para manejar la velocidad y la escala de las aplicaciones nativas de la nube. Con GitOps, la infraestructura se vuelve elástica y fiable, permitiendo a los equipos desplegar cambios de forma rápida y consistente. Elimina los errores manuales, mejora la eficiencia y garantiza que la infraestructura y las aplicaciones estén siempre sincronizadas, dando soporte a las necesidades de ritmo rápido de los flujos de trabajo de desarrollo modernos.

Beneficios clave de GitOps:

  1. Control de versiones: Todos los cambios en la infraestructura y las aplicaciones están controlados por versiones en Git, lo que permite realizar fácilmente reversiones y exhaustivos registros de auditoría.
  2. Mejora de la colaboración: Los equipos pueden colaborar más eficazmente utilizando flujos de trabajo Git conocidos, como los pull requests.
  3. Mayor fiabilidad: Las configuraciones declarativas garantizan que el estado deseado del sistema pueda restaurarse automáticamente en caso de fallo.
  4. Automatización: Minimiza la necesidad de intervención manual, reduciendo así el riesgo de error humano.
  5. Seguridad: El historial de confirmaciones de Git proporciona un registro inmutable, mejorando la seguridad y la trazabilidad.

Modelo GitOps Pull-Based vs Push-Based

En el enfoque GitOps, hay dos modelos principales para desplegar y gestionar las configuraciones de la infraestructura y las aplicaciones: elbasado en pull y el basado en push. Estos modelos difieren en cómo gestionan los cambios de configuración y los aplican al entorno de destino.

Modelo Pull-Based (GitOps típico)

El enfoque basado en la extracción se basa en almacenar el estado deseado del sistema en un repositorio Git. Un operador GitOps, como Flux o Argo CD, supervisa continuamente el repositorio en busca de cambios. Cuando se detectan actualizaciones, el operador extrae automáticamente la configuración actualizada y la aplica al entorno de destino. 

El modelo basado en la extracción también ofrece detección de desviaciones y autorreparación, ya que el clúster "extrae" continuamente el estado deseado de Git. Esto garantiza que cualquier cambio involuntario o desviación de la configuración en el entorno se corrija automáticamente, manteniendo la coherencia y la estabilidad

Modelo basado en push (utilizando herramientas CI/CD)

El enfoque basado en el envío se basa en herramientas como las Acciones de GitHub u otros servicios de CI/CD para enviar actualizaciones al clúster cada vez que se envían cambios. A diferencia del modelo basado en pull, el enfoque basado en push carece de reconciliación continua, lo que significa que no hay detección de desviaciones incorporada ni reversión automatizada. Esto hace que sea menos resistente a los cambios imprevistos del entorno. Sin embargo, el modelo basado en empujar suele ser más sencillo de implantar y proporciona un control granular sobre las implantaciones.

Integración de GitOps en el Proyecto LLM 

Nos centraremos en un enfoque GitOps basado en push utilizando Acciones de GitHubya que es más sencillo de configurar y requiere un conocimiento previo mínimo. Aunque un sistema basado en push puede no ofrecer todas las ventajas de un enfoque basado en pull, sigue proporcionando características esenciales de GitOps, como configuraciones controladas por versiones, despliegues automatizados y reversiones simplificadas.

En esta sección, aplicaremos los principios de GitOps al proyecto del tutorial Cómo desplegar aplicaciones LLM utilizando Docker: Guía paso a paso. Este proyecto incluye el código de una aplicación Gradio, Dockerfile y requirements.txt. Demuestra cómo desplegar una aplicación de IA en la nube utilizando Docker.

Cómo Desplegar Aplicaciones LLM Utilizando Docker: Guía paso a paso

Fuente: Cómo desplegar aplicaciones LLM utilizando Docker: Guía paso a paso

Adopta una mentalidad MLOps para entrenar, documentar, mantener y escalar eficazmente tus modelos de aprendizaje automático inscribiéndote en el curso, Desarrollar modelos de aprendizaje automático para la producción con una mentalidad MLOps.

Estructura del proyecto

Este proyecto GitOps está diseñado para desplegar aplicaciones Large Language Model (LLM) utilizando Docker, Kubernetes y GitHub Actions. El proyecto organiza todos los archivos del proyecto LLM en la carpeta app, crea una carpeta infra para las configuraciones de Kubernetes y utiliza .github/workflows/ para la automatización CI/CD con GitHub Actions.

  • Docker garantiza que la aplicación se ejecute de forma coherente en todos los entornos empaquetándola con todas las dependencias.
  • Kubernetes automatiza el despliegue, el escalado y la gestión de la aplicación.
  • GitHub Actions automatiza las pruebas, la construcción y el despliegue de la aplicación.

Toma el curso Introducción a Kubernetes y aprende los fundamentos de Kubernetes y despliega y orquesta contenedores utilizando Manifiestos e instrucciones kubectl.

Esta estructura garantiza despliegues automatizados, escalables y específicos del entorno para tu aplicación LLM, siguiendo los principios modernos de GitOps.

Deploying-LLM-Applications-with-Docker/
├── app/
│   ├── requirements.txt      <-- Python dependencies for your LLM app
│   ├── main.py               <-- Your LLM application code
│   └── Dockerfile            <-- Docker instructions for building the app
├── infra/
│   ├── dev/                  <-- Dev environment configs (YAML or Helm)
│   ├── staging/              <-- Staging environment configs
│   └── production/           <-- Production environment configs
└── .github/
    └── workflows/
        ├── ci.yaml           <-- GitHub Actions workflow for continuous integration
        └── cd.yaml           <-- GitHub Actions workflow for continuous deployment

He aquí un sencillo desglose:

  • app/: Contiene el código de la aplicación (main.py), las dependencias (requirements.txt) y un archivo Docker para compilar la aplicación en un contenedor.
  • infra/: Contiene configuraciones de Kubernetes para distintos entornos:
    • carpetas dev/, staging/ y production/ para configuraciones específicas del entorno.
  • .github/workflows/: Automatiza el CI/CD con Acciones de GitHub:
    • ci.yaml: Construye la aplicación y la imagen docker.
    • cd.yaml: Despliega la aplicación enviando imágenes Docker y aplicando configuraciones Kubernetes.

Aprende la diferencia entre Kubernetes y Docker leyendo el documento Kubernetes vs Docker tutorial.

Visión general del flujo de trabajo de las Acciones de GitHub

Esto es lo que ocurre en el flujo de trabajo de las Acciones de GitHub:

Developer commits code + config to GitHub
               |
               v
      GitHub Actions CI (ci.yaml)
       - Builds Docker image
       - (Optional) pushes Docker image
               |
               v
     GitHub Actions CD (cd.yaml)
       - Deploys updated app/config
       - kubectl apply or helm upgrade
               |
               v
      Kubernetes Cluster Updated
  1. El desarrollador compromete cambios: Las actualizaciones de código y configuración se envían a GitHub.
  2. Canalización CI (ci.yaml):
    • Construye la imagen Docker.
    • Opcionalmente empuja la imagen al registro de contenedores.
    • Ejecuta pruebas para validar la aplicación.
  3. CD Pipeline (cd.yaml):
    • Despliega la aplicación o configuración actualizada.
    • Ejecuta kubectl apply o helm upgrade para actualizar los manifiestos de Kubernetes.
  4. Clúster Kubernetes Actualizado: El clúster ejecuta la nueva versión de la aplicación.

Aprende a automatizar el entrenamiento, la evaluación, el versionado y el despliegue de modelos mediante Acciones de GitHub y crea un archivo siguiendo Guía para principiantes sobre CI/CD para el aprendizaje automático tutorial.

Principales ventajas y desventajas de utilizar un enfoque GitOps basado en push

Si tienes experiencia previa con las Acciones de GitHub, establecer una metodología GitOps utilizando un enfoque basado en push puede ser sencillo. Todo lo que tienes que hacer es añadir los archivos de configuración de la infraestructura, configurar los conductos CI/CD, y estarás listo para empezar. Sin embargo, aunque este planteamiento es sencillo, hay que tener en cuenta varias contrapartidas importantes.

Ventajas

  • Simple: Sólo necesitas Acciones de GitHub para poner en práctica este enfoque, no es necesario un operador adicional de GitOps como Argo CD o Flux.
  • Ventanilla Única: GitHub Actions proporciona una única plataforma para crear, probar y desplegar tu aplicación, agilizando todo el proceso.

Contrapartidas

  • No es cierto que se base en el tirón: A diferencia de las herramientas GitOps basadas en pull, como Argo CD, este enfoque carece de "reconciliación continua". Esto significa que el estado del clúster no se supervisa automáticamente ni se concilia con el estado deseado en Git.
  • Sin detección de deriva: Si alguien modifica manualmente los recursos en el clúster, estos cambios no se revertirán automáticamente para que coincidan con el repositorio Git. Esto puede provocar que la configuración varíe con el tiempo.
  • Seguridad: Para permitir que las Acciones de GitHub se desplieguen en tu clúster, debes almacenar las credenciales del clúster en secretos de GitHub o utilizar un método de autenticación basado en OIDC. Ambos enfoques requieren un manejo cuidadoso para evitar riesgos de seguridad.

Transición a un modelo pull

A medida que tu proyecto se amplía o tus requisitos se vuelven más exigentes, la transición a un modelo GitOps basado en pull puede ofrecer ventajas significativas. Si tu equipo necesita funciones como la autorreparación, la reconciliación continua o un panel visual, adoptar una herramienta basada en pull, como Argo CD o Flux, podría ser el siguiente paso lógico.

  • Autocuración: Revierte automáticamente los estados del cluster si se desvían.
  • Conciliación continua: Vigila tu repositorio Git en busca de cambios de configuración 24/7.
  • Cuadro de mandos visual: Para comprobar los estados y registros de las aplicaciones.

Puedes cambiar a una herramienta basada en pull, como Argo CD o Flux. Monitorizarán constantemente tu repositorio y se asegurarán de que el clúster siempre coincida con lo que hay en Git, sin necesidad de pasos manuales de "push" tras la confirmación inicial.

Conclusión

Para implantar GitOps con eficacia, lo mejor es empezar poco a poco e ir adoptando sus tecnologías. Empieza con un simple Dockerfile para contenerizar tu aplicación y desplegarla en la nube. A continuación, introduce Kubernetes para permitir la escalabilidad y la fiabilidad mediante el despliegue y la gestión automatizados. 

Una vez que te sientas cómodo, adopta un enfoque GitOps basado en el empuje utilizando herramientas como GitHub Actions para automatizar tanto la infraestructura en la nube como el despliegue de aplicaciones. Por último, a medida que tu proyecto madure y requiera estabilidad a nivel de producción, pásate a un modelo basado en pull con herramientas como Argo CD o Flux para lograr una reconciliación continua, detección de derivas y capacidades de autorreparación. 

Esta progresión paso a paso garantiza una curva de aprendizaje fluida a la vez que se aprovecha todo el potencial de GitOps para las aplicaciones modernas nativas de la nube.

En este blog, hemos explorado GitOps, su importancia, los distintos modelos de GitOps y cómo integrar GitOps en un proyecto de IA. Si eres nuevo en la IA, te recomendamos encarecidamente que realices el curso Fundamentos de la IA que cubre los fundamentos de la IA, profundizando en modelos como el GPT-4o, y descubriendo los secretos de la IA generativa para navegar por el cambiante panorama de la IA.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Soy un científico de datos certificado que disfruta creando aplicaciones de aprendizaje automático y escribiendo blogs sobre ciencia de datos. Actualmente me centro en la creación de contenidos, la edición y el trabajo con grandes modelos lingüísticos.

Temas

Los mejores cursos de DataCamp

curso

MLOps Concepts

2 hr
22.3K
Discover how MLOps can take machine learning models from local notebooks to functioning models in production that generate real business value.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado
An AI juggles tasks

blog

Cinco proyectos que puedes crear con modelos de IA generativa (con ejemplos)

Aprende a utilizar modelos de IA generativa para crear un editor de imágenes, un chatbot similar a ChatGPT con pocos recursos y una aplicación clasificadora de aprobación de préstamos y a automatizar interacciones PDF y un asistente de voz con GPT.
Abid Ali Awan's photo

Abid Ali Awan

10 min

tutorial

Tutorial de GitHub y Git para principiantes

Un tutorial para principiantes que muestra cómo funciona el control de versiones Git y por qué es crucial para los proyectos de ciencia de datos.
Abid Ali Awan's photo

Abid Ali Awan

17 min

tutorial

Git rename branch: Cómo cambiar el nombre de una rama local o remota

Aprende a renombrar ramas Git locales y remotas utilizando el terminal o la interfaz gráfica de usuario (GUI) de clientes populares como GitHub.
François Aubry's photo

François Aubry

tutorial

Tutorial de GIT Push y Pull

Aprende a realizar solicitudes de Git PUSH y PULL con GitHub Desktop y la línea de comandos.

Olivia Smith

13 min

tutorial

Guía para principiantes de la API de OpenAI: Tutorial práctico y prácticas recomendadas

Este tutorial te presenta la API de OpenAI, sus casos de uso, un enfoque práctico para utilizar la API y todas las prácticas recomendadas que debes seguir.
Arunn Thevapalan's photo

Arunn Thevapalan

13 min

tutorial

Visión GPT-4: Guía completa para principiantes

Este tutorial le presentará todo lo que necesita saber sobre GPT-4 Vision, desde cómo acceder a él hasta ejemplos prácticos del mundo real y sus limitaciones.
Arunn Thevapalan's photo

Arunn Thevapalan

12 min

Ver másVer más