Sync failures occur when ArgoCD cannot apply manifests to the cluster. Common causes include CRD not found, invalid YAML, missing permissions, and cluster connectivity issues.
An ArgoCD sync operation fails when the system cannot apply the desired Kubernetes resources to the target cluster. This can happen due to manifest validation errors, missing custom resource definitions, insufficient RBAC permissions, or cluster connectivity problems. Unlike out-of-sync status, a sync failure prevents any changes from being applied.
View detailed sync logs in ArgoCD UI by clicking Application > Sync > View logs. Look for the exact error message that caused the failure. The logs will show which resource failed and why.
Ensure all manifest YAML is valid:
kubectl apply -f manifest.yaml --dry-run=clientLook for indentation errors, missing colons, or invalid field names.
If sync fails with "no matches for kind", the CRD is not installed:
kubectl get crd
kubectl apply -f crd-manifest.yamlInstall the CRD before deploying resources using it.
Verify ArgoCD has permission to create the resource type:
kubectl auth can-i create deployments --as=system:serviceaccount:argocd:argocd-application-controller
kubectl auth can-i create customresources --as=system:serviceaccount:argocd:argocd-application-controllerIf using remote cluster, verify connectivity:
kubectl get cluster
argocd cluster getEnsure the cluster URL and credentials are correct.
If sync fails with "already exists", check if another application owns the resource:
kubectl get <resource> -o yaml | grep -A 2 "ownerReferences"Either remove the conflicting resource or use ArgoCD to manage both.
If webhooks are rejecting resources, check webhook logs:
kubectl logs -l app=validation-webhook -n webhook-namespaceAdjust resource specifications to meet webhook validation rules.
Extract individual resources from your Application and apply them manually:
kubectl apply -f single-resource.yamlThis helps identify which specific resource is causing the failure.
For production, implement pre-sync hooks to validate manifests and ensure prerequisites are met. Use ArgoCD projects to restrict which resources can be deployed. Monitor sync failures in your observability stack and set up alerts. Consider using Kustomize or Helm to template manifests and catch errors during template rendering before sync. Implement admission webhooks that give meaningful error messages to help troubleshoot failures faster.
Failed to connect to server: connection refused (HTTP/2)
How to fix "HTTP/2 connection refused" error in Kubernetes
missing request for cpu in container
How to fix "missing request for cpu in container" in Kubernetes HPA
error: invalid configuration
How to fix "error: invalid configuration" in Kubernetes
etcdserver: cluster ID mismatch
How to fix "etcdserver: cluster ID mismatch" in Kubernetes
running with swap on is not supported
How to fix "running with swap on is not supported" in kubeadm