As empresas que utilizam aplicações tradicionais de TI estão acelerando a migração para plataformas baseadas na cloud e, consequentemente, isto aumenta o uso de tecnologias como os containers e o Kubernetes (K8s) para o empacotamento e a implementação automática de aplicações de software.
Com o aumento do uso do Kubernetes na era da cloud computing, a integração com workflows systems (sistemas de fluxos de trabalho) está se tornando mais comum.
Os sistemas de fluxo de trabalho permitem aos desenvolvedores definir, executar e gerenciar fluxos de trabalho por meio do uso de aplicações baseadas em containers e sistemas de orquestração como o Kubernetes. Os sistemas de fluxo de trabalho usam algoritmos para definir a ordem na qual as tarefas são executadas em um fluxo de trabalho. Esses algoritmos geralmente são métodos de otimização que permitem mapear tarefas e recursos para melhorar a eficiência e o desempenho.[1]
Por exemplo, alguns motores de fluxo de trabalho de código aberto são Pegasus, Galaxy, BioDepot, Nextflow, Pachyderm, Luigi, SciPipe, Kubeflow, MLflow, Apache Airflow, Prefect e Argo. Muitos deles são baseados em containers e exigem a existência do cluster K8s em ambientes executados na cloud.
Sistema Argo Workflows
Argo é um projeto de desenvolvimento iniciado pela Applatix (posteriormente adquirida pela Intuit), uma empresa focada na criação de soluções baseadas na nuvem para automatizar e otimizar fluxos de trabalho. Os módulos de Argo incluem Argo Workflows, Argo Rollouts e Argo CD, todos esses orientados para a gestão e a implementação de aplicações no Kubernetes.
O Argo Workflows é um motor de fluxo de trabalho de código aberto utilizado para automatizar processos complexos de várias etapas no Kubernetes, através da execução de tarefas em fluxos de trabalho como um pod de Kubernetes. O Argo está projetado para ser fácil de usar, flexível e escalável, além de oferecer suporte a recursos como dependências, ramificações e tratamento de erros.[2] Argo é reconhecido como o motor de execução de fluxo de trabalho mais popular para K8s e encontra-se hospedado pela CNCF (Cloud Native Computing Foundation), o que permite implementar funções de fluxo de trabalho via CRD (Custom Resource Definition)[3], para que possa ser executado na EKS, GKE ou qualquer outra implementação de K8s.
Alguns casos de uso específicos para Argo são:[2]
- CI/CD Pipelines
Os módulos de Argo permitem aos usuários implementar CI/CD para pipelines de dados no Kubernetes. O Argo também possibilita que os usuários definam fluxos de trabalho constituídos por tarefas como criar imagens de containers e a implementação de aplicações em um cluster de K8s. Consulta essa documentação para obter mais detalhes.
- Extrair, Transformar e Carregar
O Argo Workflows permite extrair dados de diversas databases (a partir da versão v2.4.2 tem suporte para dois bancos de dados, Postgres e MySQL), iniciar um processo de transformação e fazer upload em um destino específico. Em outras palavras, o Argo pode iniciar uma conexão com um banco de dados, executar solicitações SQL para extrair e armazenar os dados em um arquivo. Uma vez que os dados foram extraídos, você pode usar, por exemplo, Apache Spark para processar os dados e Argo Workflows para fazer o upload para o destino e automatizar o processo.
- Automatização da infraestrutura
Os Devs podem utilizar o Argo Workflows para automatizar os processos de gestão da infraestrutura. Um caso de uso é a InsideBoard, uma empresa SaaS que visa automatizar processos, desde a infraestrutura até o produto. O Argo Workflows permite que eles automatizem a entrega de recursos computacionais dedicados a todos os seus clientes.
- Machine Learning
Os usuários podem usar o Argo para automatizar os processos de treinamento, implementação e atualização de modelos de Machine Learning. Por exemplo, a Arthur.ai utiliza o Argo Workflows para acelerar as operações e otimizar a precisão dos modelos de ML.
Guia de início rápido
O processo de implementação do Argo Workflows dependerá das necessidades, requisitos específicos e do entorno em que você quer usá-lo. Para instalar o Argo Workflows, consulte as instruções na Guia de início rápido.
Selecione a versão desejada e instale o Argo Workflows conforme exemplo abaixo.
kubectl create namespace argo
kubectl apply -n argo -f https://github.com/argoproj/argo-workflows/releases/download/v<<ARGO_WORKFLOWS_VERSION>>/install.yaml
Agora, o seguinte passo é configurar o servidor Argo, Port-forward e alguns recursos usados pelo Argo.
Crie fluxos de trabalho empregando o arquivo YAML declarativo e especificando as etapas e algumas dependências ou condições. À medida que executa seus fluxos de trabalho, você pode usar a Argo Workflows UI ou a API do Kubernetes para monitorar seu progresso e resolver os problemas que surgirem.
![](https://br.pynomial.com/wp-content/uploads/2023/01/ArgoUI.png)
Quem usa o Argo Workflows?
Muitas grandes organizações e programadores usam Argo Workflows, atualmente sendo mais de 170 empresas, para automatizar processos no Kubernetes. Alguns exemplos de organizações incluem Alibaba Cloud, Google, Cisco, NVIDIA, Red Hat e IBM.
Versões dos últimos meses
A comunidade Argo lança novas versões secundárias aproximadamente a cada três meses.[2] Algumas correções nas versões mais recentes foram
- v3.4.4 (2022-11-28): Fix, Kubectl atualizado para v1.24.8 para corrigir vulnerabilidades.
- v3.4.3 (2022-10-30): Fix, Mutex não é inicializado quando o controlador reinicia.
- v3.4.2 (2022-10-22): Fix, Compatibilidade com Kubernetes v1.24.
- v3.4.1 (2022-09-30): Fix, Melhora do desempenho da simultaneidade do semáforo
- v3.4.0 (2022-09-18): Fix, arquivo de fluxo de trabalho do SD.
Referências
[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.