DEV Community

Alex Spinov
Alex Spinov

Posted on

Argo Events Has a Free API — Event-Driven Kubernetes Automation

Argo Events: Trigger Anything From Anything on Kubernetes

Argo Events connects event sources (webhooks, S3, Kafka, cron, GitHub) to triggers (Argo Workflows, Kubernetes resources, HTTP calls, Slack). Event-driven automation without writing glue code.

How It Works

Three concepts:

  1. EventSource — listens for events (webhook, S3 upload, Kafka message)
  2. Sensor — watches EventSources, applies filters, triggers actions
  3. Trigger — what happens (create pod, start workflow, call API)

The Free API (CRDs)

GitHub Webhook -> Argo Workflow

apiVersion: argoproj.io/v1alpha1
kind: EventSource
metadata:
  name: github-events
spec:
  github:
    push:
      repositories:
      - owner: myorg
        names: [my-repo]
      webhook:
        endpoint: /github/push
        port: "12000"
      events:
      - push
      apiToken:
        name: github-token
        key: token
---
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
  name: ci-sensor
spec:
  dependencies:
  - name: push
    eventSourceName: github-events
    eventName: push
  triggers:
  - template:
      name: ci-workflow
      argoWorkflow:
        operation: submit
        source:
          resource:
            apiVersion: argoproj.io/v1alpha1
            kind: Workflow
            metadata:
              generateName: ci-
            spec:
              entrypoint: build
              templates:
              - name: build
                container:
                  image: golang:1.22
                  command: [go, test, ./...]
Enter fullscreen mode Exit fullscreen mode

Cron -> HTTP Call

apiVersion: argoproj.io/v1alpha1
kind: EventSource
metadata:
  name: cron-source
spec:
  calendar:
    daily-report:
      schedule: "0 9 * * *"
---
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
  name: report-sensor
spec:
  dependencies:
  - name: daily
    eventSourceName: cron-source
    eventName: daily-report
  triggers:
  - template:
      name: send-report
      http:
        url: https://api.example.com/generate-report
        method: POST
Enter fullscreen mode Exit fullscreen mode

Event Sources (20+)

Webhook, GitHub, GitLab, S3, SQS, SNS, Kafka, NATS, Redis, AMQP, MQTT, Calendar/Cron, Slack, Stripe, and more.

Real-World Use Case

A data pipeline team manually triggered ETL jobs via cron. Argo Events: S3 upload -> trigger Argo Workflow -> process data -> notify Slack. Fully event-driven, no polling, no cron drift.

Quick Start

kubectl create namespace argo-events
kubectl apply -n argo-events -f https://raw.githubusercontent.com/argoproj/argo-events/stable/manifests/install.yaml
Enter fullscreen mode Exit fullscreen mode

Resources


Need automated event-driven data? Check out my tools on Apify or email spinov001@gmail.com for custom solutions.

Top comments (0)