Overview of Argo Events architecture, describing EventSources, EventBus, and Sensors for building CloudEvents-based event-driven workflows and triggers on Kubernetes
Let’s explore Argo Events, an event-driven workflow automation framework for Kubernetes. Argo Events enables you to trigger actions — for example, Kubernetes Jobs, Argo Workflows, AWS Lambda, notifications, or custom HTTP requests — in response to events from many external systems. This guide explains the core components, responsibilities, and the end-to-end flow for building reliable event-driven workflows on Kubernetes.
Evaluate event conditions, run triggers (K8s objects, Workflows, webhooks)
Each component has a clear responsibility: EventSources handle ingestion and normalization, the EventBus provides decoupled transport, and Sensors orchestrate triggers once dependencies are satisfied.
EventSources are the system’s ingress points — they connect to external producers and convert their native payloads into a consistent internal format.Common EventSource types:
Normalizing events into the CloudEvents format (id, source, type, time, data, etc.)
Standardizing events to the CloudEvents spec simplifies downstream processing. CloudEvents provides a predictable envelope so Sensors and other consumers can reason about events without per-source parsing logic.
After an EventSource converts an incoming event to CloudEvents, it publishes the event to the EventBus. The EventBus decouples producers and consumers using a publish/subscribe model and provides durability and scalability for event delivery.Popular EventBus implementations:
High-throughput, partitioning, long-term retention and ordering guarantees
Argo Events uses these underlying messaging systems to route CloudEvents from EventSources to Sensors, allowing EventSources to simply publish without knowing which Sensors will consume the events.
NATS Streaming (STAN) is deprecated. For new deployments prefer NATS JetStream or Kafka, which provide better persistence and streaming semantics.
Sensors support payload transformations (patching trigger payloads with event data), retry/backoff policies, and conditional triggers so you can model complex event-driven workflows.
The EventSource captures the event and converts it into the CloudEvents format.
The EventSource publishes the CloudEvent to the EventBus.
The Sensor, subscribed to the EventBus, receives the CloudEvent and evaluates its dependencies.
Once the Sensor’s dependencies are satisfied, it executes the configured trigger(s).
This separation (capture → normalize → transport → evaluate → trigger) forms a reliable, decoupled architecture for building event-driven automation in Kubernetes.