ArkEvent

ArkEvent defines an event source that triggers one or more ArkFlow pipelines. Three source types are supported: HTTP webhook, cron schedule, and the output of another flow. A single event can fan out to multiple flows in parallel.


Webhook trigger

Listens for inbound HTTP POST requests. The operator creates a unique bearer-token secret per trigger and writes the full URL to .status.webhookURL.

apiVersion: arkonis.dev/v1alpha1
kind: ArkEvent
metadata:
  name: pipeline-trigger
  namespace: ai-team
spec:
  source:
    type: webhook
  targets:
    - pipeline: my-flow

Fire synchronously (waits for the flow to complete and returns the output):

TOKEN=$(kubectl get secret pipeline-trigger-webhook-token -n ai-team \
  -o jsonpath='{.data.token}' | base64 -d)

curl -X POST \
  "http://ark-operator.ai-team.svc.cluster.local:8092/triggers/ai-team/pipeline-trigger/fire?mode=sync&timeout=120s" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"topic": "quantum computing"}'

Fire asynchronously (returns immediately with a flow run ID):

curl -X POST \
  "http://ark-operator.ai-team.svc.cluster.local:8092/triggers/ai-team/pipeline-trigger/fire" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{}'

Cron trigger

Fires the target flow on a standard 5-field cron schedule (UTC).

apiVersion: arkonis.dev/v1alpha1
kind: ArkEvent
metadata:
  name: daily-report
  namespace: ai-team
spec:
  source:
    type: cron
    cron: "0 8 * * *" # every day at 08:00 UTC
  targets:
    - pipeline: report-flow

Flow-output trigger

Fires when another flow completes. Useful for chaining independent pipelines without embedding them in a single ArkFlow DAG.

apiVersion: arkonis.dev/v1alpha1
kind: ArkEvent
metadata:
  name: post-research-trigger
  namespace: ai-team
spec:
  source:
    type: flow-output
    flow: research-flow
  targets:
    - pipeline: summarize-flow
    - pipeline: publish-flow # fan-out: both fire in parallel

spec reference

Field Type Required Description
spec.source.type string yes webhook, cron, or flow-output
spec.source.cron string cron only Standard 5-field cron expression (UTC)
spec.source.flow string flow-output only Name of the upstream ArkFlow in the same namespace
spec.targets[].pipeline string yes Name of the ArkFlow to trigger

Status

status:
  webhookURL: "http://ark-operator.ai-team.svc.cluster.local:8092/triggers/ai-team/pipeline-trigger/fire"
  conditions:
    - type: Ready
      status: "True"
      reason: WebhookReady
      message: waiting for webhook POST

Apache 2.0 ยท ARKONIS