Application CRD in the cluster. That CRD needs to know where the application’s manifests live (the git repo and path), where to deploy them (the cluster endpoint), and any runtime configuration (image tags, connection strings, environment variables) that differs per deployment. These runtime values — like an ECR repository URL — are infrastructure outputs that only exist after cloud resources are provisioned. The sync "argocd" block handles exactly this: it emits an ArgoCD Application CRD, accepts a values map for per-deployment config, and sequences the CRD creation after any pending infrastructure outputs it references.
What you’ll learn
- The
sync "argocd"block syntax — repo, path, target, namespace, values - How pending infrastructure outputs (like an ECR URL) wire into ArgoCD app config
- How
sync "argocd"differs fromdeploy "helm"— GitOps pull vs Helm push
Why this matters
deploy "helm" pushes a Helm release directly to the cluster. sync "argocd" tells ArgoCD where to find the manifests and what runtime values to inject — ArgoCD then pulls and reconciles continuously. Use deploy for imperative releases; use sync for GitOps-managed continuous reconciliation.The source code
How it works
sync emits an ArgoCD Application CRD
sync "argocd" compiles to a Pulumi kubernetes.apiextensions.CustomResource call that creates an argoproj.io/v1alpha1/Application object in the cluster. The repo, path, target, and namespace attributes map directly to ArgoCD Application spec fields.values are passed as Helm parameters to ArgoCD
The
values map compiles to ArgoCD’s spec.source.helm.parameters array — key/value pairs that ArgoCD injects into the Helm chart when it renders manifests. Each entry becomes a { name, value } parameter in the Application spec.What ubx generates
Common mistakes
Run it
What you learned
sync "argocd" emits an ArgoCD Application CRD with repo, path, target, and Helm parametersPending infrastructure outputs wire into ArgoCD
values with the same bare reference syntax as deploy "helm"ArgoCD must be installed in the cluster before the Application CRD can be created
Next steps
sync Flux kustomization
GitOps with Flux instead of ArgoCD
sync block reference
Full sync block syntax for both ArgoCD and Flux
Full runnable example: github.com/ubiquex/ubx-examples/26-sync-argocd-application

