Is Argo based on real events?

Descubriendo Argo Events: Automatización en Kubernetes

hace 2 años

Valoración: 3.99 (2790 votos)

En el mundo de Kubernetes, la automatización es clave para gestionar aplicaciones complejas y flujos de trabajo eficientes. Argo Events emerge como una solución poderosa para orquestar acciones basadas en eventos dentro de tu cluster. Pero, ¿qué es exactamente Argo Events y cómo puede beneficiar a tu infraestructura?

Índice de Contenido

¿Qué es Argo Events?

Argo Events es un gestor de dependencias basado en eventos diseñado específicamente para Kubernetes. Su función principal es permitirte definir dependencias a partir de diversas fuentes de eventos, como webhooks, S3, programaciones, streams y más, y luego, desencadenar objetos de Kubernetes una vez que estas dependencias se resuelven exitosamente.

What is the role of Argo events?
Argo Events is an event-based dependency manager for Kubernetes which helps you define multiple dependencies from a variety of event sources like webhook, s3, schedules, streams etc. and trigger Kubernetes objects after successful event dependencies resolution.

Imagina que necesitas ejecutar un flujo de trabajo en Kubernetes cada vez que se carga un nuevo archivo en un bucket de S3 o cuando se recibe una notificación de un webhook. Argo Events facilita la configuración de estas automatizaciones de manera declarativa y flexible.

El Rol Fundamental de Argo Events

El rol de Argo Events se centra en la automatización reactiva dentro de Kubernetes. En lugar de depender de programaciones rígidas o intervenciones manuales, Argo Events permite que tu sistema responda dinámicamente a eventos que ocurren en tu entorno. Esto se traduce en:

  • Orquestación basada en eventos: Define flujos de trabajo que se activan automáticamente en respuesta a eventos específicos.
  • Desacoplamiento: Separa la generación de eventos de la ejecución de acciones, promoviendo una arquitectura más modular y mantenible.
  • Flexibilidad: Soporta una amplia variedad de fuentes de eventos y permite definir lógica de dependencia compleja.
  • Escalabilidad: Diseñado para entornos Kubernetes, Argo Events escala horizontalmente para manejar grandes volúmenes de eventos.

Características Destacadas de Argo Events

Argo Events se distingue por un conjunto robusto de características que lo convierten en una herramienta versátil para la automatización basada en eventos:

  • Gestión de dependencias de múltiples fuentes de eventos: Se integra con una amplia gama de fuentes, incluyendo webhooks, sistemas de mensajería, almacenamiento en la nube, y más.
  • Lógica de restricción personalizable a nivel de negocio: Permite definir reglas complejas para determinar cuándo se resuelven las dependencias de eventos, adaptándose a las necesidades específicas de cada caso de uso.
  • Gestión de dependencias simples y complejas: Desde dependencias lineales y en tiempo real hasta escenarios complejos con múltiples fuentes y trabajos por lotes.
  • Extensibilidad: El framework es extensible, permitiendo agregar listeners para fuentes de eventos personalizadas.
  • Lógica booleana arbitraria para resolver dependencias: Define condiciones lógicas complejas para determinar cuándo se cumplen las dependencias de eventos.
  • Cumplimiento con CloudEvents: Adopta el estándar CloudEvents, facilitando la interoperabilidad con otros sistemas y herramientas.
  • Gestión de fuentes de eventos en tiempo de ejecución: Permite modificar y gestionar las fuentes de eventos dinámicamente sin interrumpir el sistema.

Componentes Clave de Argo Events

La arquitectura de Argo Events se basa en cuatro componentes principales que trabajan en conjunto para lograr la automatización basada en eventos:

Event Source (Fuente de Eventos)

Las fuentes de eventos son las encargadas de definir la configuración necesaria para consumir eventos desde diferentes orígenes. Estos orígenes pueden ser variados, desde colas de mensajes como AWS SQS o GCP Pub/Sub, hasta webhooks, sistemas de archivos como S3, o incluso programaciones temporales (schedules). Una fuente de eventos puede transformar los eventos recibidos al formato CloudEvents y luego reenviarlos al bus de eventos (Eventbus).

Sensor

Los sensores son el corazón de Argo Events. Definen las dependencias de eventos y los disparadores (triggers) que se ejecutarán cuando estas dependencias se cumplan. Los sensores se suscriben a los eventos en el bus de eventos y gestionan las dependencias de forma independiente. Una vez que un sensor determina que todas las dependencias definidas se han resuelto, procede a ejecutar los disparadores configurados.

Eventbus (Bus de Eventos)

El bus de eventos actúa como la capa de transporte central dentro de Argo Events. Es un recurso personalizado de Kubernetes que se encarga de transmitir los eventos desde las fuentes de eventos hacia los sensores. En esencia, las fuentes de eventos publican los eventos en el bus, y los sensores se suscriben a estos eventos para poder reaccionar a ellos y ejecutar los disparadores. La implementación actual del bus de eventos se basa en NATS Streaming, una tecnología de mensajería de alto rendimiento.

What is the difference between Argo events and airflow events?
Airflow has a more traditional, cron-like scheduler, with rich scheduling capabilities including backfilling and the ability to rerun parts of DAGs. Argo uses Kubernetes resources to manage workflow executions, which can be more intuitive for those already invested in the Kubernetes ecosystem.

Triggers (Disparadores)

Los disparadores son los recursos o cargas de trabajo que los sensores ejecutan una vez que han resuelto las dependencias de eventos. Argo Events ofrece una amplia variedad de tipos de disparadores, incluyendo:

  • Argo Rollouts y Argo Workflows: Para orquestar despliegues progresivos y flujos de trabajo complejos.
  • Mensajes a Kafka, NATS y Azure Event Hubs: Para integrar con sistemas de mensajería y colas de eventos.
  • Notificaciones Slack: Para enviar alertas y notificaciones a equipos de trabajo.
  • AWS Lambda: Para ejecutar funciones serverless en la nube de AWS.
  • Apache OpenWhisk: Para ejecutar funciones serverless en Apache OpenWhisk.
  • Objetos de Kubernetes: Para crear, actualizar o eliminar cualquier recurso de Kubernetes (Pods, Deployments, Services, etc.).
  • Peticiones HTTP: Para realizar llamadas a APIs externas o servicios web.
  • Disparadores personalizados: Para extender la funcionalidad de Argo Events e integrar con sistemas específicos.

Integración con Argo Workflows: Una Sinergia Poderosa

Si bien Argo Events puede ser útil por sí solo, su verdadero potencial se desbloquea al integrarse con Argo Workflows. Argo Workflows es otro proyecto del mismo ecosistema que permite orquestar trabajos paralelos en Kubernetes. Un flujo de trabajo en Argo se define como un conjunto de pasos, donde cada paso se ejecuta como un contenedor independiente. Se pueden modelar flujos de trabajo complejos utilizando grafos acíclicos dirigidos (DAGs) para definir las dependencias entre tareas y el orden de ejecución.

La combinación de Argo Events y Argo Workflows crea una sinergia poderosa. Argo Events se encarga de la parte de disparo basado en eventos, detectando eventos relevantes y actuando como el punto de entrada para iniciar flujos de trabajo. Argo Workflows, por su parte, se ocupa de la orquestación detallada del flujo de trabajo, gestionando la ejecución de los pasos, las dependencias y la lógica interna del proceso. Esta integración permite construir sistemas robustos y altamente automatizados en Kubernetes.

Primeros Pasos con Argo Events: Un Tutorial Rápido

Comenzar a utilizar Argo Events es relativamente sencillo. A continuación, se presenta un resumen de los pasos básicos para poner en marcha un ejemplo simple:

Prerrequisitos

  • Un cluster de Kubernetes en funcionamiento (versión 1.11 o superior).
  • La herramienta de línea de comandos kubectl instalada (versión 1.11.0 o superior).

Paso 1: Instalación

Argo Events se puede instalar de varias maneras:

  • kubectl: Utilizando manifiestos YAML para desplegar los componentes de Argo Events.
  • Helm Charts: A través de Helm, un gestor de paquetes para Kubernetes, lo que simplifica la instalación y configuración.
  • Kustomize: Utilizando Kustomize, una herramienta para personalizar configuraciones de Kubernetes, para adaptar la instalación a necesidades específicas.

El método más común para una instalación rápida es utilizando kubectl. Simplemente se crea un namespace llamado argo-events y se aplican los manifiestos YAML desde el repositorio oficial de Argo Events.

Paso 2: Configurar un Sensor y una Fuente de Eventos

Una vez instalado Argo Events, el siguiente paso es configurar una fuente de eventos y un sensor. En un ejemplo básico, se puede configurar una fuente de eventos de tipo webhook para recibir peticiones HTTP POST y un sensor que escuche a esta fuente de eventos.

Se debe desplegar un Eventbus (por ejemplo, utilizando NATS nativo) para permitir la comunicación entre la fuente de eventos y el sensor. Luego, se define la fuente de eventos webhook y el sensor correspondiente, especificando las dependencias y el disparador que se ejecutará (por ejemplo, iniciar un flujo de trabajo de Argo Workflows).

What are Argocd events?
Argo Events is a framework for automating workflows in Kubernetes. It can consume events from over 20 event sources, including Amazon Simple Storage Service (S3), Amazon Simple Queue Service (SQS), Google Cloud Platform Pub/Sub, webhooks, schedules, and messaging queues.

Paso 3: Enviar una Petición POST y Verificar la Ejecución del Workflow

Finalmente, se puede enviar una petición HTTP POST a la URL expuesta por la fuente de eventos webhook. Si todo está configurado correctamente, el sensor detectará el evento, resolverá las dependencias (en este caso, la recepción del evento webhook) y ejecutará el disparador, lo que debería resultar en la creación y ejecución de un flujo de trabajo de Argo Workflows en el cluster.

Argo Events en Codefresh: CI/CD Potenciado por Eventos

Codefresh, una plataforma de CI/CD, integra nativamente Argo Workflows y Argo Events para ofrecer una experiencia de entrega de software optimizada. Mientras que Argo Workflows proporciona una solución genérica para flujos de trabajo, Codefresh se centra en casos de uso específicos de CI/CD, ofreciendo una solución "llave en mano" que funciona de inmediato.

Codefresh añade valor a Argo Workflows y Argo Events a través de:

  • Un sistema de triggers completo: Con eventos predefinidos para escenarios comunes de CI/CD como pushes a Git, aperturas de Pull Requests, eliminaciones de ramas, etc.
  • Pasos de pipeline predefinidos: Pasos comunes en pipelines de CI/CD como escaneo de seguridad, construcción de imágenes, pruebas unitarias, etc.
  • Una vista de build específica para CI/CD: Una interfaz visual optimizada para pipelines de CI/CD.

La integración de Argo Events en Codefresh permite que los pipelines de CI/CD se activen automáticamente en respuesta a eventos, como cambios en el código fuente en repositorios Git. Codefresh simplifica la configuración de estos triggers a través de una interfaz gráfica intuitiva, pero por debajo, se utilizan sensores y triggers de Argo Events para gestionar la lógica basada en eventos.

Diferencia entre Argo Events y Airflow Events

Si bien tanto Argo Events como Apache Airflow se utilizan para la automatización de flujos de trabajo, existen diferencias fundamentales en su filosofía de diseño y enfoque.

What is the role of Argo events?
Argo Events is an event-based dependency manager for Kubernetes which helps you define multiple dependencies from a variety of event sources like webhook, s3, schedules, streams etc. and trigger Kubernetes objects after successful event dependencies resolution.

Apache Airflow se centra en la creación de Grafos Acíclicos Dirigidos (DAGs), donde los flujos de trabajo se definen como una serie de tareas con dependencias predefinidas. Airflow es ideal para flujos de trabajo basados en programación temporal o dependencias de datos, y permite generar DAGs dinámicamente. Aunque Airflow puede integrarse con sistemas de eventos, su enfoque principal no es la automatización reactiva basada en eventos en tiempo real.

Argo Events, por otro lado, está diseñado específicamente para la automatización basada en eventos. Su objetivo principal es reaccionar a eventos que ocurren en el sistema y desencadenar acciones en respuesta. Mientras que Airflow se centra en la orquestación de tareas secuenciales o paralelas definidas en un DAG, Argo Events se centra en la detección y gestión de eventos para iniciar flujos de trabajo o acciones.

En resumen, Airflow es un sistema de orquestación de flujos de trabajo basado en DAGs, mientras que Argo Events es un sistema de gestión de dependencias basado en eventos. Si necesitas automatizar flujos de trabajo complejos con dependencias predefinidas y programaciones, Airflow puede ser una buena opción. Si necesitas reaccionar a eventos en tiempo real y automatizar acciones en Kubernetes en respuesta a estos eventos, Argo Events es la herramienta más adecuada.

Preguntas Frecuentes (FAQs)

¿Qué beneficios aporta Argo Events?
Argo Events permite automatizar flujos de trabajo en Kubernetes basados en eventos, mejorando la eficiencia, la capacidad de respuesta y la modularidad de las aplicaciones.
¿Es difícil instalar Argo Events?
No, la instalación de Argo Events es relativamente sencilla y se puede realizar utilizando kubectl, Helm Charts o Kustomize.
¿Necesito Argo Workflows para utilizar Argo Events?
No es estrictamente necesario, pero la integración de Argo Events con Argo Workflows maximiza el potencial de ambas herramientas y permite construir soluciones de automatización más completas.
¿Qué tipos de fuentes de eventos soporta Argo Events?
Argo Events soporta una amplia variedad de fuentes de eventos, incluyendo webhooks, S3, colas de mensajes (SQS, Pub/Sub), programaciones, streams y más.
¿Argo Events es compatible con CloudEvents?
Sí, Argo Events cumple con la especificación CloudEvents, lo que facilita la interoperabilidad con otros sistemas y herramientas que también adoptan este estándar.

En conclusión, Argo Events se presenta como una herramienta esencial para la automatización basada en eventos en Kubernetes. Su capacidad para gestionar dependencias de múltiples fuentes, su flexibilidad y su integración con Argo Workflows lo convierten en una opción robusta y versátil para orquestar flujos de trabajo y construir sistemas reactivos y eficientes en entornos Kubernetes.

Subir