Hi! I'm your Kestra AI assistant. Ask me anything about workflows.
EXAMPLE QUESTIONS
How to write expression for previous tasks outputs?
How to trigger a flow after another one?
What is a task runner?
Add gates, retries, and chains to Argo CD.
Trigger argocd app sync from CI completions, image pushes, or any HTTP signal. Add manual approval gates between staging and prod, retry transient sync failures, poll until Synced and Healthy, and chain Terraform, Ansible, and Argo CD in one execution history.
Argo CD reconciles desired state from Git. Kestra wraps that controller with the orchestration layer above it: when a sync fires, what runs before, who approves the promotion to prod, and where the cross-tool audit trail lives. The Argo CD server, the Application objects, and the cluster reconciliation stay where they are.
Triggers beyond Git polling: webhooks, image push, CI events
Argo CD reconciles when its controller polls Git, which adds reconcile lag on every change. Kestra fires argocd app sync the moment upstream signals arrive: a GitHub Actions completion, a Docker image push to the registry, a Terraform apply finishing, or any HTTP webhook. The flow waits for upstream confirmation, then triggers the sync directly with the matching revision.
Pause-and-resume between staging and prod
The native Pause task suspends the flow after the staging sync confirms Synced and Healthy via apps.Status. A named reviewer reads the staging diff in the Kestra UI and explicitly resumes. Only then does the prod sync fire. The reviewer identity and timestamp are recorded in the execution history alongside the Argo CD revision.
Provision, configure, deploy in one chain
terraform apply provisions the cluster and writes outputs (kubeconfig, ingress IP). ansible-playbook configures the underlying nodes. argocd app sync deploys the app stack. All three share one execution history. If Ansible fails, only the Ansible step retries. The Terraform apply does not re-run.
Poll until Synced and Healthy, alert on either fail
apps.Status returns syncStatus and healthStatus. Pair it with a retry block to wait until both report green, with a hard timeout. On Degraded or sync timeout, the errors branch sends a Slack alert with the app name, the failing revision, and a direct link to the Argo CD UI.
Block the sync when the image is unsigned or unscanned
Trivy scans the candidate image for critical CVEs. Cosign verifies the signature against the keyless attestation from the build. A manifest validator checks the Kustomize or Helm output. Each runs as a flow step before apps.Sync. If any check fails, the sync never fires and on-call gets a structured alert with the scan output.
One flow, many Argo apps, environment-shaped inputs
Pass the Argo CD app name and Git revision as flow inputs. The same flow promotes the same revision through staging, qa, and prod Argo apps in sequence, with a Pause gate before every environment beyond staging. No duplicate YAML per environment, the inputs determine which app gets synced.
How GitOps teams use Argo CD and Kestra
Patterns platform teams run in production today. Each one shows the flow end to end, with the real plugin classes in play.
Event-driven
Sync Argo CD the moment the CI build is green
A GitHub Actions webhook fires when the build artifact is signed and pushed. The flow validates the payload, triggers argocd app sync at the new revision, polls apps.Status until Synced and Healthy, then posts to Slack with the revision and the application URL. No more reconcile lag while the Argo CD git poller catches up to the new commit.
Sync fires on the upstream event
The sync runs the moment CI finishes, not when Argo CD's controller next polls Git. Cuts minutes from the deploy lag.
Revision pinned at trigger time
The flow passes the exact commit SHA from the webhook payload to apps.Sync, so the sync hits the verified build.
Health gates the success message
Slack only posts :white_check_mark: once apps.Status reports both Synced and Healthy.
Failure goes to on-call with the link
On Degraded or timeout, the errors branch pages on-call with the application name and a direct link to the Argo CD UI.
ci webhook
GitHub Actions
validate payload
signed digest
argocd sync
at revision
poll status
until Healthy
notify
Slack with revision
Multi-tool
Provision with Terraform, configure with Ansible, deploy with Argo CD
terraform apply provisions the EKS cluster and writes the cluster endpoint to a task artifact. ansible-playbook configures the underlying nodes using that endpoint, with per-step retries. argocd app sync deploys the app stack. Slack confirms when all three steps succeed. If Ansible fails, only Ansible retries. The Terraform apply does not re-run.
One execution ID across three tools
Terraform outputs flow forward to Ansible. Ansible's host facts flow forward to the Argo CD step. One UI to debug.
Per-step retries, no full re-run
If ansible-playbook hits a transient SSH error, Kestra retries only that step. Terraform apply does not re-run.
Gate between provision and configure
A Pause task between Terraform and Ansible lets a reviewer inspect the new infra before configuration starts.
Argo CD does what it does best
Kestra coordinates the chain. Argo CD still owns the cluster reconciliation, the manifests, and the rollback target.
scheduled
release window
terraform apply
EKS cluster
approve
before configure
ansible playbook
node config
argocd sync
app deploy
status check
Synced + Healthy
notify
Slack summary
Promotion
Promote the same revision through staging, qa, and prod
The flow takes a revision SHA as input. apps.Sync deploys it to the staging Argo app. apps.Status waits for Synced and Healthy. An HTTP probe runs smoke tests against the staging endpoint. A Pause task gates the promotion. Once a reviewer resumes, the same revision deploys to the prod Argo app, followed by another status poll and probe.
Same revision, every environment
The flow pins the same Git SHA across staging and prod. No drift between what was tested and what ships.
Named reviewer per promotion
The Pause task records who approved the prod sync and when. The Argo CD revision links back from the audit log.
Smoke test before promotion
An HTTP probe runs against staging before the gate opens. A 5xx from staging stops the promotion automatically.
Per-environment Argo app
application is a flow input, so staging-app, qa-app, and prod-app are three Argo Application objects driven from one flow definition.
revision input
git SHA
sync staging
staging app
staging status
Synced + Healthy
smoke probe
/health
approval gate
named reviewer
sync prod
prod app
prod status
Synced + Healthy
notify
Slack release
Supply chain
Pre-sync supply chain verification with Trivy and Cosign
The flow runs on every image push to the registry. Trivy scans the new image for critical CVEs. Cosign verifies the keyless signature against the build provenance. If both pass, apps.Sync fires at the matching revision. If either fails, the sync never runs and on-call gets the scan output as a structured Slack message.
Sync blocked when checks fail
An If task evaluates Trivy and Cosign exit codes. If either is non-zero, the sync step never runs.
Scan output flows forward
Trivy's JSON output is captured as a task artifact and attached to the Slack alert, so on-call sees exactly which CVE blocked the deploy.
Same digest in registry and Argo CD
The image digest from the webhook is the same one passed to Argo CD's revision. No room for a swapped artifact between scan and sync.
registry webhook
image push
trivy scan
CRITICAL CVE check
cosign verify
signature check
gate on results
block on fail
argocd sync
at verified digest
status poll
until Healthy
notify
result to Slack
Terraform provisions the VM, Ansible configures the application, ArgoCD handles the deployment. All orchestrated through Kestra.
Censhare
Blueprints for Argo CD orchestration.
One blueprint per use case above. Copy the YAML, point it at your Argo CD server, ship it.
Event-driven sync on CI completion
Terraform, Ansible, Argo CD chain
Staged promotion with approval gate
Sync Argo CD the moment CI passes, then poll until Healthy
A GitHub Actions webhook triggers the flow with the new revision. Kestra calls apps.Sync, polls apps.Status until both syncStatus and healthStatus report green, then posts to Slack with the revision and application URL.
Provision the cluster, configure the nodes, deploy the app
terraform apply provisions an EKS cluster. A Pause task gates before configuration. ansible-playbook configures the nodes. argocd app sync deploys the app. apps.Status waits for Healthy. Slack confirms or alerts. Per-step retries keep the chain moving on transient errors.
Sync staging, smoke test, gate, then sync prod with the same revision
The flow takes a revision SHA as input. Syncs the staging Argo app, polls until Healthy, runs a smoke test against the staging endpoint, pauses for a named reviewer, then syncs the prod Argo app at the same revision. Slack notifies at each stage.
Webhook, S3, Kafka, image push, schedule, any HTTP signal
Webhook + custom Action steps
Webhook + custom workflow templates
Git-only by design
Approval gate (Pause/resume) between syncs
Native Pause + resume, named reviewer logged
GitHub Environments approval (Action-specific)
Suspend node, no first-class reviewer log
Not native
Sync status polling until Synced + Healthy
apps.Status + retry block in one task
Custom polling script in Bash
Workflow loop with delay step
Native, no external polling needed
Chain Terraform + Ansible + Argo CD
Native plugin tasks, outputs flow forward
Each tool as a separate Action, manual handoff
Workflow templates per tool, no native chaining
Argo CD-centric, no Terraform or Ansible
Pre-sync image scan / signature verify as flow step
Trivy + Cosign as upstream tasks, sync blocked on fail
Action steps, manual conditional skip
Workflow steps, custom conditional
Argo CD does not run scans
Multi-environment promotion in one flow
Single flow, app and revision as inputs
One Action per environment, repeated YAML
Workflow per environment
ApplicationSet generates apps, no flow logic
Cross-stack execution history
One execution ID across Terraform, Ansible, Argo CD
Action run log, Argo CD events separately
Workflow events, Argo CD events separately
Argo CD events only
Self-hosted, air-gapped, OSS edition
Self-hosted by default, OSS edition free
Self-hosted GHE Actions or hosted
Self-hosted Kubernetes
Self-hosted Kubernetes
Beyond Argo CD: orchestrate the rest of the stack
1300+ plugins, cross-stack
Action marketplace, CI-centric
Kubernetes-centric workflow engine
Argo CD app delivery only
Argo CD & Kestra: common questions
Find answers to your questions right here, and don't hesitate to Contact Us if you couldn't find what you're looking for.
No. Argo CD owns the Kubernetes reconciliation: the Application objects, the cluster state, the rollback target, and the GitOps source of truth. Kestra calls the Argo CD API through the io.kestra.plugin.argocd plugin to run apps.Sync and apps.Status as flow tasks. Argo CD stays where it is. Kestra orchestrates the workflow around it: when to sync, what to check first, who approves promotion to prod, and what runs after.
Kestra fires argocd app sync from any event source: a webhook (GitHub Actions completion, registry image push), a cron schedule, an S3 file landing, a Kafka message, a Terraform apply finishing, or a manual trigger from the Kestra UI. The trigger payload passes through as flow inputs, so the sync hits the exact application and revision the upstream event specified. This replaces the reconcile lag from Argo CD's git polling interval with an immediate, event-driven sync.
Kestra's Pause task suspends the flow after the staging sync confirms Synced and Healthy via apps.Status. The result is surfaced in the Kestra UI alongside the Argo CD revision and the smoke-test output. A named reviewer reads it and explicitly resumes. Only then does the prod apps.Sync fire with the same revision. The reviewer identity and timestamp are recorded automatically in the execution history.
Yes. terraform apply runs as the first task and publishes outputs (cluster endpoint, ingress IP, kubeconfig path). Those outputs flow forward into an Ansible step that configures the underlying nodes, then into the apps.Sync task that deploys the app. If Ansible fails, Kestra retries the Ansible step only. The Terraform apply does not re-run. The whole chain shares one execution ID. See Terraform orchestration with Kestra for the full pattern.
Use an Argo CD API token, not a username and password. Create a token in Argo CD scoped to a service account with the minimum required privileges (typically applications, sync and applications, get). Store the token and the Argo CD server URL in Kestra's secrets backend and reference them via pluginDefaults on io.kestra.plugin.argocd at the namespace or flow level. Every Argo CD task picks them up without repeating credentials.
No. The io.kestra.plugin.argocd plugin ships in the open-source edition with apps.Sync and apps.Status tasks. Kestra Enterprise adds Apps (typed self-service forms so non-engineers can trigger a deploy through a form), namespace-scoped RBAC, audit logs, worker isolation, and SSO. Platform teams running Argo CD across many app teams typically want these on top.
Argo Workflows is a workflow engine for Kubernetes (the other half of the Argo project). Kestra is a general-purpose orchestrator. The two solve different problems: Argo Workflows is great for Kubernetes-native batch jobs (ML training, data processing) where every step is a Pod. Kestra orchestrates across tools (Terraform, Ansible, Argo CD, dbt, Airbyte, ServiceNow), schedules with native event triggers, and gives you one execution history across the whole stack. Use both if you have Pod-native batch work alongside cross-tool orchestration.
Yes. Kestra ships self-hosted on Docker or Kubernetes (often itself deployed by Argo CD), runs fully air-gapped, and supports remote workers close to each cluster. The open-source edition includes unlimited workflows and event-driven triggers, with no external dependency on Kestra's infrastructure. See Kestra for infrastructure automation for the broader picture across Argo CD, Terraform, Ansible, and Kubernetes.
Trigger argocd app sync on CI completions or image pushes, gate promotion to prod with a named reviewer, chain Terraform and Ansible upstream, and verify supply chain checks before every deploy. Open source, self-hosted, event-driven.