28 questions foundPromotion moves a tested, immutable artifact/revision from one environment's config to the next, typically via a pull request that updates the target env's image tag or manifest revision. This keeps promotions reviewed, auditable, and reversible, avoiding rebuilding artifacts per environment.
Real-world example A release validated in staging is promoted by a PR bumping the same image tag in the prod overlay.
Common follow-ups: Why promote the same artifact, not rebuild? | How is promotion made reviewable?
App of Apps Applications GitOps Principles
Anti-patterns include: manual kubectl changes bypassing Git, plaintext secrets in Git, mixing app code and config confusingly, giving CI direct cluster credentials (push), not pinning revisions in prod, and huge blast-radius roots. Each undermines the source-of-truth, security, or reproducibility goals of GitOps.
Real-world example A team eliminates ad-hoc kubectl edits by enabling selfHeal so all changes must go through Git.
Common follow-ups: Why avoid manual kubectl edits? | What's wrong with CI holding cluster creds?
RBAC Sync & Health GitOps Principles
Flux CD is the other major CNCF GitOps tool. Both reconcile Git to Kubernetes; ArgoCD emphasizes a rich UI and Application CRD model, while Flux is controller/CRD-centric and composable. Jenkins X and others also offer GitOps workflows, but ArgoCD and Flux are the leading Kubernetes-native choices.
Real-world example A team evaluates ArgoCD's UI-driven model against Flux's controller-based approach before standardizing on one.
Common follow-ups: How does Flux differ from ArgoCD? | Are they CNCF projects?
Applications Multi-cluster GitOps Principles
Developers use familiar Git workflows (branch, PR, review) to deploy, with no need for cluster credentials or bespoke deploy scripts. They get fast feedback, easy rollback via revert, and visibility of desired vs live state, lowering the barrier to safe, self-service deployments.
Real-world example A developer ships to production by merging a PR, never touching kubectl or holding cluster access.
Common follow-ups: Why don't developers need cluster creds? | How does PR review fit deployment?
Applications RBAC GitOps Principles
Gate merges in CI with schema validation (kubeconform), policy engines (OPA/Gatekeeper, Kyverno, Conftest), and dry-runs. Admission controllers on the cluster enforce policy at apply time too. This shifts errors left so only compliant, valid manifests are merged and reconciled.
Real-world example A CI step runs Conftest policies so a manifest missing resource limits fails the PR before it can be synced.
Common follow-ups: What is policy as code? | Where do admission controllers fit?
RBAC Sync & Health GitOps Principles
Git webhooks notify ArgoCD immediately when a repo changes, triggering reconciliation without waiting for the poll interval. This shortens deploy latency from minutes to seconds and reduces unnecessary polling load, while polling remains a fallback if a webhook is missed.
# Configure a webhook to POST to /api/webhook on push
Real-world example A push to main triggers an ArgoCD webhook, syncing the change within seconds instead of the next 3-minute poll.
Common follow-ups: What happens if a webhook is missed? | How much latency do webhooks save?
Sync & Health Applications GitOps Principles
Idempotency means applying the same declared state repeatedly yields the same result. GitOps relies on it: the agent can reconcile continuously and safely re-apply desired state without side effects, so the cluster converges to Git regardless of its current state.
Real-world example Reconciling the same manifest ten times leaves the cluster identical to reconciling it once.
Common follow-ups: Why is idempotency needed for reconciliation? | How does it enable self-healing?
Sync & Health Applications GitOps Principles
Keep source code in app repos and deployment manifests/config in separate config repos (or a dedicated GitOps repo). This decouples build from deploy, lets ArgoCD watch only config, avoids triggering deploys on every code commit, and cleanly separates developer and operational concerns and access.
Real-world example CI builds an image and opens a PR to the config repo bumping the tag; ArgoCD watches only that config repo.
Common follow-ups: Why not watch the app code repo? | How does the image tag get updated?
App of Apps Applications GitOps Principles