Introduction
Argo est une collection d’outils open source pour Kubernetes permettant d’exécuter des workflows, de gérer des clusters et d’effectuer facilement des GitOps. Memphis est une alternative open source de nouvelle génération aux courtiers de messages traditionnels. Parmi les outils Argo, on trouve Argo Workflows. Moteur de workflow natif Kubernetes prenant en charge les DAG et les workflows basés sur les étapes.
Certaines fonctionnalités de flux de travail Argo
- Définissez des flux de travail où chaque étape du flux de travail est un conteneur.
- Modélisez des flux de travail à plusieurs étapes sous la forme d’une séquence de tâches ou capturez les dépendances entre les tâches à l’aide d’un graphique (DAG).
- Exécutez facilement des tâches gourmandes en ressources de calcul pour l’apprentissage automatique ou le traitement de données en une fraction du temps grâce aux workflows Argo sur Kubernetes.
- Exécutez des pipelines CI/CD en mode natif sur Kubernetes sans configurer de produits de développement logiciel complexes.
Les workflows définis par Argo peuvent être déclenchés par des événements entrants provenant d’un composant appelé « Event Source ». Plusieurs sources d’événements peuvent être utilisées simultanément.
Utilisation de Memphis comme source d’événements Argo Workflows
Memphis fournit plusieurs fonctionnalités qui améliorent l’expérience avec Argo, telles que :
- Interface graphique complète avec observabilité en temps réel
- Gestion et transformation de schéma
- Webhooks REST
- File d’attente de lettres mortes avec retransmission automatique des messages
- Enrichissements de flux sans serveur
- SDK : Node.JS, Go, Python, TypeScript, NestJS
L’un des principaux avantages de l’utilisation de Memphis est la possibilité de dépanner des processus asynchrones complexes à l’aide du traçage des messages, de l’observabilité au niveau des données, des politiques d’autoréparation et des notifications en temps réel, ce qui peut être d’une grande aide, en particulier pour l’audit et la journalisation lorsque des événements et les déclencheurs sont déclenchés à partir de plusieurs endroits vers votre Argo et peuvent potentiellement créer des ressources et des flux de travail très coûteux.
Memphis peut être intégré aux workflows Argo en tant que source d’événement Argo. Une source d’événement définit les configurations requises pour consommer des événements provenant de sources externes telles que Memphis, NATS, AWS SNS, AWS SQS, GCP PubSub, Webhooks, etc.
Couler
- Créer un fichier YAML de source d’événement
- Créer le secret memphis-creds dans l’espace de noms Argo-evens
- Créer une ressource de source d’événement
- Créer un fichier YAML de ressource de capteur
- Créer une ressource de capteur
- Enveloppez le sujet avec un flux
Étape 1 : Créer un fichier YAML de source d’événement
Créer un fichier nommé memphis_eventsource.yaml
apiVersion: argoproj.io/v1alpha1
kind: EventSource
metadata:
name: memphis
spec:
nats:
example:
# url of the nats service
url: nats://<MEMPHIS_BROKER_URL>:6666
# jsonBody specifies that all event body payload coming from this
# source will be JSON
jsonBody: true
# subject name = memphis station
subject: argo_workflows
auth:
token:
name: memphis-creds
key: CONNECTION_TOKEN
# optional backoff time for connection retries.
# if not provided, default connection backoff time will be used.
connectionBackoff:
# duration in nanoseconds, or strings like "4s", "1m". following value is 10 seconds
duration: 10s
# how many backoffs
steps: 5
# factor to increase on each step.
# setting factor > 1 makes backoff exponential.
factor: 2
jitter: 0.2
Étape 2 : Créer le secret « Memphis-Creds » dans l’espace de noms « Argo-Events »
kubectl create secret generic memphis-creds \
--from-literal=CONNECTION_TOKEN=<APPLICATION_USER>::<CONNECTION_TOKEN> \ -n argo-events
Étape 3 : Créer une ressource de source d’événement
kubectl apply -f memphis_eventsource.yaml
Étape 4 : Créer un fichier YAML de ressource de capteur
Créer un fichier nommé memphis_sensor.yaml
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
name: memphis
spec:
template:
serviceAccountName: operate-workflow-sa
dependencies:
- name: test-dep
eventSourceName: memphis
eventName: example
triggers:
- template:
name: memphis-workflow-trigger
k8s:
operation: create
source:
resource:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: memphis-workflow-
spec:
entrypoint: whalesay
arguments:
parameters:
- name: message
value: hello world
templates:
- name: whalesay
inputs:
parameters:
- name: message
container:
image: docker/whalesay:latest
command: [cowsay]
args: ["{{inputs.parameters.message}}"]
parameters:
- src:
dependencyName: test-dep
dest: spec.arguments.parameters.0.value
Étape 5 : Créer une ressource de capteur
kubectl apply -f memphis_sensor.yaml
Étape 6 : Enveloppez le sujet NATS avec un flux
Comme Memphis travaille avec des flux, envelopper le sujet permettra à Memphis de contrôler le sujet.
Pour terminer cette étape, NATS cli est nécessaire.
Pour créer des utilisateurs de type application Memphis, lisez ici.
nats stream add -s <MEMPHIS_BROKER_URL>:6666 --user=<MEMPHIS_APPLICATION_USER>::<MEMPHIS_CONNECTION_TOKEN>
? Stream Name argo_event_source
? Subjects argo_workflows
? Storage file
? Replication 3
? Retention Policy Limits
? Discard Policy Old
? Stream Messages Limit -1
? Per Subject Messages Limit -1
? Total Stream Size -1
? Message TTL -1
? Max Message Size -1
? Duplicate tracking time window 2m0s
? Allow message Roll-ups No
? Allow message deletion Yes
? Allow purging subjects or the entire stream Yes
Stream argo_event_source was created
Passe une bonne journée!