Skip to main content
In this lesson you’ll register an Argo Events EventSource that listens for MinIO bucket notifications. Argo Events receives events in a CloudEvents-style JSON envelope; a simplified example looks like:
This is the schema MinIO sends for bucket notifications. Your EventSource must be able to reach the MinIO API endpoint and have valid credentials (access key + secret key) available in the argo-events namespace.

Prerequisites & connectivity

Ensure the following before creating the EventSource:
If your cluster’s DNS or service discovery differs, adjust the endpoint to the correct FQDN or ClusterIP:port. Confirm the MinIO API is accessible from the argo-events namespace.

Port-forward locally and set up the MinIO client (optional)

If you prefer to configure the bucket from your workstation using the MinIO client (mc), port-forward the MinIO service and configure an alias:
To check MinIO service presence in-cluster:
Example console output (truncated):

Create the Kubernetes Secret for MinIO credentials

Create a secret in the argo-events namespace so the EventSource can authenticate to MinIO. The simplest method is using kubectl:
You should see:
Alternatively, if you want to apply YAML, use base64-encoded values:
Do not commit plain-text credentials to repositories. Use sealed secrets, HashiCorp Vault, or another secret management solution for production. Ensure RBAC limits who can read the minio-creds secret.

EventSource manifest: MinIO listener

Below is a working EventSource YAML that registers a MinIO event source named minio with a configuration called example. It watches the argo-events-bucket bucket for object creation and deletion events, points at an in-cluster MinIO endpoint, and pulls credentials from the minio-creds secret.
Save this manifest as eventsource-minio.yaml (or a suitable name) and apply it:
When the EventSource connects successfully, Argo Events will receive MinIO notifications for the configured events (e.g., PUT and DELETE) on the watched bucket and forward them to configured Sensors or other consumers.

Test behavior and troubleshooting

  • Upload or remove an object in argo-events-bucket. The MinIO server will emit a notification; Argo Events should receive it and generate a CloudEvent payload like the JSON example above.
  • Check EventSource logs to verify connection and event receipt:
  • If you see authentication errors, re-check the secret keys and the MinIO endpoint and port.
Here is the MinIO console showing the newly created (empty) bucket:
A screenshot of the MinIO Object Store web console showing the "argo-events-bucket" bucket (empty) with sidebar navigation and upload/refresh controls. A small floating preview window at the top shows a GitHub Gist.

Next steps

  • Create an Argo Events Sensor that subscribes to the minio EventSource and triggers an Argo Workflow, HTTP call, or other consumer when notifications arrive.
  • Validate end-to-end by uploading/deleting objects and observing Sensor-triggered actions.
  • Consider configuring retry/backoff and dead-lettering for production workflows.
Ensure the endpoint (service name, namespace, and port) is correct for your cluster (for example: minio.argo.svc.cluster.local:9000). Also make sure the credentials in the minio-creds secret match the MinIO server credentials.

Watch Video