Argo Events

Argo Events란?

쿠버네티스에서 이벤트 기반 트리거를 관리하는 프레임워크다. 외부 이벤트(Webhook, S3 업로드, Kafka 메시지, 크론 등)를 감지하고, 그에 반응해 Argo Workflows나 다른 쿠버네티스 리소스를 실행시킨다.

이벤트 소스 → EventSource → Sensor → Trigger → Argo Workflow 실행

핵심 리소스

EventSource

어디서 이벤트를 받을지 정의한다. 이벤트를 수신해서 내부 메시지 버스로 전달한다.

apiVersion: argoproj.io/v1alpha1
kind: EventSource
metadata:
  name: webhook-source
spec:
  webhook:
    my-endpoint:
      port: "12000"
      endpoint: /trigger
      method: POST

지원하는 이벤트 소스:

  • Webhook: HTTP 요청
  • S3: 파일 업로드/삭제
  • Kafka / NATS / SQS / SNS: 메시지 큐
  • GitHub / GitLab: Push, PR 이벤트
  • Calendar: cron 스케줄
  • Redis: 키 변경 이벤트

EventBus

EventSource와 Sensor 사이의 메시지 브로커 역할. 기본적으로 NATS를 사용한다.

apiVersion: argoproj.io/v1alpha1
kind: EventBus
metadata:
  name: default
spec:
  nats:
    native:
      replicas: 3

Sensor

EventBus에서 이벤트를 구독하고, 조건이 충족되면 Trigger를 실행한다.

apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
  name: my-sensor
spec:
  dependencies:
    - name: webhook-dep
      eventSourceName: webhook-source
      eventName: my-endpoint
  triggers:
    - template:
        name: trigger-workflow
        argoWorkflow:
          operation: submit
          source:
            resource:
              apiVersion: argoproj.io/v1alpha1
              kind: Workflow
              metadata:
                generateName: triggered-workflow-
              spec:
                workflowTemplateRef:
                  name: my-workflow-template

전체 흐름 예시

S3에 파일이 업로드되면 Argo Workflow 실행:

S3 버킷에 파일 업로드
  ↓
EventSource (S3 이벤트 감지)
  ↓
EventBus로 이벤트 전달
  ↓
Sensor가 이벤트 수신
  ↓
Argo Workflow 트리거 (파일 처리 잡 실행)

이벤트 필터링

모든 이벤트가 아니라 특정 조건의 이벤트만 처리하도록 필터를 걸 수 있다.

dependencies:
  - name: s3-dep
    eventSourceName: s3-source
    eventName: upload
    filters:
      data:
        - path: s3.object.key
          type: string
          value:
            - "uploads/.*\\.csv"   # CSV 파일 업로드만 처리

Argo Workflows와의 차이

Argo WorkflowsArgo Events
역할워크플로우 실행 엔진이벤트 감지 및 트리거
언제 쓰나배치 잡, 데이터 파이프라인외부 이벤트에 반응해 워크플로우 실행
단독 사용가능 (수동 실행 또는 Cron)Argo Workflows와 함께 쓰는 경우가 많음

보통 Argo Events + Argo Workflows 조합으로 이벤트 드리븐 파이프라인을 구성한다.


주의사항

  • EventBus(NATS)가 정상 동작해야 EventSource → Sensor 간 이벤트가 전달됨. EventBus 파드 상태를 먼저 확인할 것.
  • EventSource와 Sensor는 같은 네임스페이스에 있어야 이벤트 버스를 공유할 수 있음
  • Webhook EventSource는 외부에서 접근 가능하도록 Ingress 설정이 필요함