作用

主要是基于k8s的一个事件驱动的工作流,目前可以收集20种以上不同的资源事件,并且可以根据事件触发10+种操作。官方介绍的主要功能如下:
1. 支持20+事件源和10+的事件触发动作
2. 可以自定义包含商业逻辑的自动任务流
3. 能处理复杂的、多种事件源,简化事件处理
4. 适配云事件

架构

 


主要由以下四部分组成:
1. event source
主要用于收集事件信息,目前支持多种事件源。例如:
AMQP
AWS SNS
AWS SQS
Azure Events Hub
Azure Queue Storage
Bitbucket
Bitbucket Server
Calendar
Emitter
File Based Events
GCP PubSub
Generic EventSource
GitHub
GitLab
HDFS
K8s Resources
Kafka
Minio
NATS
NetApp StorageGrid
MQTT
NSQ
Pulsar
Redis
Slack
Stripe
Webhooks
目前我们更关注k8s resource相关的event source设置。
2. sensor
主要从event bug消费event数据,定义事件的处理规格和触发行为。
3. eventBus
主要用于传输event消息,目前有三种消息组件:nats,jetstream和kafka
4. trigger
支持12中触发动作,如下:
AWS Lambda
Apache OpenWhisk
Argo Rollouts
Argo Workflows
Custom - Build Your Own
HTTP Requests - Serverless Workloads (OpenFaaS, Kubeless, KNative etc.)
Kafka Messages
NATS Messages
Slack Notifications
Azure Event Hubs Messages
Create any Kubernetes Objects
Log (for debugging event bus messages)
从图中可看出,event source controller主要用于收集events,controller部署了一个deployment资源专门用于监听各类事件,并且写入event bug中。event bus就是一个事件总线存储,用于存储event source controller收集到的事件信息。sensor controller监听sensor资源,并且从event bus中获取事件,若获取到sensor中匹配的事件,则创建sensor deployment用于触发事件后续操作。

部署

参考官方quick start:https://argoproj.github.io/argo-events/quick_start/