Sistemas de Flujo de Trabajo: Argo Workflows

Las empresas que utilizan aplicaciones de TI tradicionales están acelerando su transición a plataformas basadas en la nube, lo que resulta en un aumento en el uso de tecnologías como contenedores y Kubernetes (K8s) para empaquetar e implementar aplicaciones de software de manera automática.

A medida que el uso de Kubernetes continúa creciendo en la era de la cloud computing, la integración con workflows systems (sistemas de flujo de trabajo) se está volviendo cada vez más común.

Los sistemas de flujo de trabajo permiten a los desarrolladores definir, ejecutar y gestionar flujos de trabajo mediante el uso de aplicaciones de contenedores y sistemas de orquestación como Kubernetes. Los sistemas de flujo de trabajo utilizan algoritmos que determinan el orden en el que se realizan las tareas. Muchas veces, estos algoritmos son técnicas de optimización para mapear tareas y recursos de manera eficiente y efectiva, mejorando el desempeño.[1]

Por ejemplo, algunos motores de flujo de trabajo de código abierto son Pegasus, Galaxy, BioDepot, Nextflow, Pachyderm, Luigi, SciPipe, Kubeflow, MLflow, Apache Airflow, Prefect, y Argo. Muchos de ellos están basados en contenedores y requieren la presencia de un cluster de K8s en entornos de cloud.

Sistema de Argo Workflows

Argo es un proyecto en desarrollo iniciado por Applatix (más tarde fue adquirido por Intuit), una empresa dedicada a construir soluciones basadas en la nube para automatizar y optimizar los flujos de trabajo. Argo está constituído por los módulos Argo Workflows, Argo Rollouts, y Argo CD, todos ellos enfocados en la gestión e implementación de aplicaciones en Kubernetes.

Este es un motor de flujo de trabajo en contenedores, de código abierto, que permite automatizar procesos complejos de múltiples pasos en Kubernetes. Funciona como un pod de Kubernetes, ejecutando tareas en flujos de trabajo.

Argo Workflows es fácil de usar, flexible y escalable, además de ser compatible con características como dependencias, pipelines y gestión de errores.[2] Como el motor de ejecución de flujo de trabajo más popular para K8s, Argo está alojado en CNCF (Cloud Native Computing Foundation) e implementa funciones mediante CRD (Custom Resource Definition, definición de recursos personalizados)[3], razón por la cual se puede ejecutar tanto en EKS, GKE o cualquier otra implementación de K8s.

Algunos casos de uso específicos de Argo son:[2]

  • CI/CD Pipelines

Los módulos de Argo permiten a los usuarios implementar CI/CD (Continuous Integration/Continuous Deployment, Integración/implementación continua) para la segmentación de datos (data pipeline) en Kubernetes. Además, permite definir flujos de trabajo que incluyen tareas como la construcción de imágenes de contenedores y la implementación de aplicaciones a un cluster de K8s.

  • Extracción, Transformación y Carga 

Argo Workflows permite la extracción de datos de múltiples bases de datos (compatible con Postgres y MySQL en la versión v2.4.2), transformarlos y cargarlos a un destino. En otras palabras, Argo puede conectarse a una base de datos, ejecutar solicitudes SQL para extraer los datos y guardarlos en un archivo. Una vez extraídos los datos, puedes utilizar Apache Spark para su procesamiento y Argo Workflows para automatizar el proceso.

  • Automatización de la infraestructura

Los desarrolladores pueden utilizar Argo Workflows para automatizar los procesos de gestión de infraestructura. Un ejemplo de ello es InsideBoard, una empresa SaaS (Software as a Service, software como servicio) que busca automatizar procesos desde la infraestructura hasta el producto. Argo Workflows les permite automatizar la entrega de recursos dedicados de cloud para todos sus clientes.

  • Aprendizaje automático

Los usuarios pueden automatizar los procesos de entrenamiento, implementación y actualización de modelos de ML (Machine Learning, aprendizaje automático). Por ejemplo, Arthur.ai utiliza flujos de trabajo para acelerar sus operaciones y mejorar la precisión de sus modelos de ML.

Guía de inicio rápido

La implementación de Argo dependerá de tus necesidades, requisitos y del entorno en el que desees utilizarlo. Para instalar Argo Workflows, sigue las instrucciones proporcionadas en su Guía de inicio rápido.

Selecciona la versión deseada e instala Argo Workflows siguiendo el ejemplo proporcionado a continuación.

kubectl create namespace argo
kubectl apply -n argo -f https://github.com/argoproj/argo-workflows/releases/download/v<<ARGO_WORKFLOWS_VERSION>>/install.yaml

Ahora, tienes que configurar el servidor de Argo, Port-forward y algunos recursos usados por Argo.

Crea flujos de trabajo mediante el archivo YAML declarativo, especificando los pasos y algunas dependencias o condiciones. A medida que ejecutas tus flujos de trabajo, puedes utilizar la UI de Argo Workflows o la API de Kubernetes para monitorear su progreso y solucionar cualquier problema que se presente.

Argo Workflows UI (una interfaz de usuario basada en la web para el motor de Argo Workflows). Fuente: Argo Project

¿Quién usa Argo Workflows?

Actualmente, grandes organizaciones y programadores de todo el mundo utilizan Argo Workflows para automatizar procesos en Kubernetes. Más de 170 empresas han adoptado esta herramienta, entre ellas Alibaba Cloud, Google, Cisco, NVIDIA, Red Hat e IBM.

Versiones recientes

La comunidad de Argo lanza nuevas versiones menores a cada tres meses, aproximadamente.[2] Algunas correcciones de las últimas versiones fueron:

  • v3.4.4 (2022-11-28): Actualización de kubectl a v1.24.8 para reparar vulnerabilidades.
  • v3.4.3 (2022-10-30): Reparo, Mutex no se inicializa cuando el controlador reinicia.
  • v3.4.2 (2022-10-22): Compatibilidad con Kubernetes v1.24.
  • v3.4.1 (2022-09-30): Mejorar el rendimiento de la concurrencia de semáforos
  • v3.4.0 (2022-09-18): Reparo, archivo de flujo de trabajo SDK.

Referencias

[1] Shan, C., Wang, G., Xia, Y., Zhan, Y., & Zhang, J. (2022). KubeAdaptor: A Docking Framework for Workflow Containerization on Kubernetes. arXiv preprint arXiv:2207.01222.

[2] Argo, Argo workflows – github, 2021. URL: https://github.com/ argoproj/argo

[3] Shan, C., Wang, G., Xia, Y., Zhan, Y., & Zhang, J. (2021, December). Containerized Workflow Builder for Kubernetes. In 2021 IEEE 23rd Int Conf on High Performance Computing & Communications; 7th Int Conf on Data Science & Systems (pp. 685-692). IEEE.

Scroll to Top