cloud

GitOps aplica las mismas técnicas a la implementación de infraestructura que los devops y el uso de CI / CD para implementar aplicaciones.

La última década de programación ha visto una serie de transformaciones revolucionarias. Uno ha surgido de un grupo de prácticas en torno a devops , que alinea los equipos de desarrollo y operaciones en un proceso de trabajo compartido, y la integración continua y entrega continua ( CI / CD ), en el que los equipos devops entregan actualizaciones incrementales constantes a una base de código.

Otra transformación provino del movimiento relacionado de bases de código monolíticas a microservicios basados ​​en la nube que se ejecutan en contenedores administrados por plataformas de orquestación como Kubernetes .

Las aplicaciones basadas en contenedores que se ejecutan en sistemas en clúster o en la nube pueden ser complejas y difíciles de aprovisionar y administrar, incluso con una plataforma como Kubernetes que organiza las cosas. GitOps es un conjunto emergente de prácticas que tiene como objetivo simplificar esta tarea de administración mediante la aplicación de técnicas de los mundos de devops y CI / CD.

La clave de GitOps es la idea de infraestructura como código , que adopta el mismo enfoque para el aprovisionamiento de infraestructura que los devops utilizan para aprovisionar aplicaciones.

Entonces, no solo la aplicación, sino también las máquinas y redes host subyacentes se describen en archivos que pueden tratarse como cualquier otro código dentro de un sistema de control de versiones , con procesos automatizados que luego trabajan para converger la aplicación del mundo real con la descrita en esos archivos

En el lenguaje de GitOps, el código en el sistema de control de versiones es la única fuente de verdad sobre cómo debería ser la aplicación en producción .

GitOps definido

Weaveworks es la compañía que más ha hecho para popularizar el concepto de GitOps. Entraremos en los detalles del papel de Weaveworks en un momento, pero primero, echemos un vistazo a  la definición de GitOps de la compañía , que es doble:

  • Un modelo operativo para Kubernetes y otras tecnologías nativas de la nube, que proporciona un conjunto de mejores prácticas que unifican la implementación, la administración y la supervisión de clústeres y aplicaciones en contenedores.
  • Un camino hacia una experiencia de desarrollador para administrar aplicaciones; donde las tuberías de CI / CD de extremo a extremo y los flujos de trabajo de Git se aplican tanto a las operaciones como al desarrollo

En otras palabras, GitOps es un conjunto específico de prácticas diseñadas para administrar Kubernetes y plataformas similares, que también se presta a una posible aplicación más amplia a medida que más y más tiendas de desarrollo adoptan prácticas devops y migran código a la nube. Pero para comprender la salsa secreta de GitOps y los problemas que resuelve, necesitamos hablar sobre los componentes que intervienen en él.

Definición git

El Git en GitOps se refiere al sistema de control de versiones distribuido muy popular desarrollado por Linus Torvalds en 2005. Git es una herramienta que permite a los equipos de desarrolladores trabajar juntos en una base de código de aplicación, almacenando varias ramas de código con las que juegan antes de fusionarlas. Codigo de producción.

Un concepto clave dentro de Git es la solicitud de extracción, en la que un desarrollador solicita formalmente que algún código en el que han estado trabajando se integre en otra rama dentro de la base de código.

Una solicitud de extracción de Git brinda una oportunidad para que los miembros del equipo colaboren y discutan antes de llegar a un consenso sobre si el nuevo código debe agregarse a la aplicación. Git también almacena versiones anteriores de código, lo que facilita volver a la última versión correcta si algo sale mal, y le permite ver rápidamente qué ha cambiado entre revisiones.

Git puede ser mejor conocido como la base de GitHub , un sistema de control de versiones alojado en la nube, pero Git es un software de código abierto que se puede implementar en cualquier lugar, desde servidores corporativos internos hasta su PC.

Tenga en cuenta que si bien generalmente pensamos en Git como una herramienta de programación de computadoras, en realidad es agnóstico en cuanto al contenido para el que lo está utilizando. Git tratará felizmente cualquier conjunto de archivos de texto como su “base de código”, y puede, por ejemplo, ser utilizado por escritores que buscan realizar un seguimiento de las ediciones de un trabajo colaborativo . Esto es importante porque gran parte de la base de código en el núcleo de GitOps consiste en archivos de configuración declarativos en lugar de código ejecutable.

Una última cosa que decir antes de continuar: a pesar de que “Git” está ahí en el nombre, GitOps en realidad no requiere el uso de Git. Las tiendas que ya han invertido en otro software de control de versiones, como Subversion, también pueden implementar GitOps. Pero Git se usa ampliamente en el mundo de los desarrolladores para implementar CI / CD, por lo que la mayoría de los proyectos de GitOps terminarán usando Git.

¿Cuál es el proceso de CI / CD?

La mitad de integración continua de CI / CD está habilitada por repositorios de control de versiones como Git: los desarrolladores pueden realizar pequeñas mejoras constantes en su base de código, en lugar de lanzar nuevas versiones enormes y monolíticas cada pocos meses o años. La pieza de implementación continua es posible gracias a sistemas automatizados llamados tuberías que construyen, prueban e implementan el nuevo código en producción.

Una vez más, seguimos hablando de código aquí, y eso generalmente convoca visiones de código ejecutable escrito en un lenguaje de programación como C o Java o JavaScript. Pero en GitOps, el “código” que estamos administrando está compuesto principalmente por archivos de configuración. Esto no es solo un detalle menor: está en el corazón de lo que hace GitOps.

Estos archivos de configuración son, como hemos dicho, la “única fuente de verdad” que describe cómo debería ser nuestro sistema. Son declarativos más que instructivos. Eso significa que en lugar de decir “iniciar diez servidores”, el archivo de configuración simplemente dirá, “este sistema incluye diez servidores”.

La mitad CI de la ecuación de GitOps permite a los desarrolladores implementar rápidamente ajustes y mejoras en estos archivos de configuración; la mitad del CD ocurre cuando los agentes de software automatizados hacen todo lo posible para garantizar que la versión en vivo de la aplicación refleje las descripciones en los archivos de configuración, que converja con el modelo declarativo, en el lenguaje de GitOps.

GitOps y Kubernetes

Como hemos mencionado, los conceptos de GitOps se desarrollaron originalmente en torno a la administración de aplicaciones Kubernetes. Con lo que ahora sabemos sobre GitOps, revisemos la discusión de GitOps de Weaveworks y veamos cómo describen cómo realizaría actualizaciones a un Kubernetes administrado según los principios de GitOps. Aquí hay un resumen:

  1. Un desarrollador realiza una solicitud de extracción de Git para una nueva característica
  2. El código se revisa y aprueba, luego se fusiona con la base de código principal
  3. La fusión activa la canalización de CI / CD, que automáticamente prueba y reconstruye el nuevo código y lo implementa en un registro
  4. Un agente de software se da cuenta de la actualización, extrae el nuevo código del registro y actualiza el archivo de configuración (escrito en YAML) en el repositorio de configuración
  5. Un agente de software en el clúster de Kubernetes detecta que el clúster está desactualizado, en función del archivo de configuración, extrae los cambios e implementa la nueva característica

Weaveworks y GitOps

Claramente, los pasos cuatro y cinco aquí están haciendo gran parte del trabajo pesado. Los agentes de software que están sincronizando mágicamente la “fuente de la verdad” en el repositorio de Git con la aplicación Kubernetes del mundo real son la magia que hace posible GitOps.

Como hemos dicho, en términos de GitOps, el proceso de hacer que los sistemas en vivo se parezcan más a los sistemas ideales descritos en los archivos de configuración se llama convergencia . Cuando el sistema en vivo y el sistema ideal no están sincronizados, eso es divergencia.

Idealmente, la convergencia se lograría mediante procesos automatizados, pero existen límites para lo que la automatización puede hacer y, a veces, es necesaria la intervención humana.

Hemos descrito el proceso aquí en términos genéricos, pero de hecho, si realmente va a la página de Weaveworks, los “agentes de software” que mencionamos son parte de la plataforma Weave Cloud de la compañía. El término “GitOps” fue acuñado por el CEO de Weaveworks, Alexis Richardson , y sirve en parte para hacer que la plataforma de Weaveworks sea atractiva para los desarrolladores que ya están inmersos en los mundos devops y CI / CD.

Pero Weaveworks nunca ha reclamado el monopolio de GitOps, que es más una filosofía y un conjunto de mejores prácticas que un producto específico.

Como señala el blog de CloudBees, una empresa que proporciona soluciones de CI / CD, GitOps representa un modelo abierto y neutral para el proveedor  que se desarrolló en reacción a las soluciones de Kubernetes patentadas que están implementando los proveedores de grandes nubes como Amazon, Google y Microsoft. . CloudBees ofrece sus propias soluciones de GitOps, al igual que varios jugadores en este espacio.

GitOps y devops

Atlassian, una compañía que fabrica una serie de herramientas para desarrolladores ágiles, tiene una publicación de blog en profundidad sobre la historia y el propósito de GitOps que vale la pena. En su opinión, GitOps representa una extensión lógica de las ideas que se unieron como devops.

Específicamente, GitOps es una elaboración del concepto de infraestructura como código, una idea que surgió del entorno devops. GitOps, como Atlassian lo ve, colmó la brecha crucial entre las técnicas existentes de DevOps, que habían evolucionado para resolver problemas de administración del sistema y las necesidades específicas de las aplicaciones distribuidas de alojamiento en la nube. La convergencia automatizada que ofrecen varios proveedores de la nube es lo que hace que GitOps sea especial.

Y aunque GitOps sigue centrado en Kubernetes hoy, esperamos haber dejado en claro cómo se aplica al mundo mucho más amplio de aplicaciones distribuidas basadas en la nube. Una publicación de blog del proveedor de seguridad de código abierto WhiteSource describe las ventajas de GitOps:

  • Observabilidad : los sistemas GitOps ofrecen monitoreo, registro, seguimiento y visualización en aplicaciones complejas para que los desarrolladores puedan ver qué se está rompiendo y dónde
  • Control de versiones y gestión de cambios : Obviamente, este es un beneficio clave de usar un sistema de control de versiones como Git. Las actualizaciones defectuosas pueden revertirse fácilmente
  • Adopción fácil : GitOps se basa en las habilidades de desarrollo que muchos desarrolladores ya tienen
  • Productividad : GitOps proporciona los aumentos a la productividad que los devops y CI / CD han llevado a otros reinos.
  • Auditoría: gracias a Git, cada acción se puede rastrear a una confirmación específica, lo que facilita el seguimiento de la causa de los errores

Incluso si no usa Kubernetes, es muy probable que GitOps sea parte de su flujo de trabajo tarde o temprano.

Fuente: https://www.arnnet.com.au/article/681320/what-gitops-extending-devops-kubernetes-beyond/

Etiquetas:

Sobre el Autor

0 0 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments