Bird
Raised Fist0
Kubernetesdevops~5 mins

GitOps with ArgoCD in Kubernetes - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is GitOps in simple terms?
GitOps is a way to manage and deploy applications using Git as the single source of truth. Changes to your app are made by updating Git, and automation tools apply those changes to your system.
Click to reveal answer
beginner
What role does ArgoCD play in GitOps?
ArgoCD is a tool that watches your Git repository and automatically applies the changes to your Kubernetes cluster, keeping your live system in sync with what is defined in Git.
Click to reveal answer
intermediate
How does ArgoCD detect changes in your Git repository?
ArgoCD regularly polls the Git repository or listens for webhooks to detect changes, then compares the live state with the desired state defined in Git and syncs them if needed.
Click to reveal answer
intermediate
What is an Application in ArgoCD?
An Application in ArgoCD is a resource that defines which Git repository and path to use, and which Kubernetes cluster and namespace to deploy to. It represents one deployable unit.
Click to reveal answer
beginner
Why is GitOps with ArgoCD considered safer than manual deployments?
Because all changes go through Git, you have a clear history and audit trail. ArgoCD automatically ensures the cluster matches Git, reducing human errors and making rollbacks easy.
Click to reveal answer
What does ArgoCD use as the source of truth for deployments?
AGit repository
BLocal files on the cluster
CManual commands
DDocker Hub
Which Kubernetes resource does ArgoCD primarily manage?
AApplications
BConfigMaps
CServices
DPods
How does ArgoCD keep the cluster state in sync with Git?
ABy manual user commands only
BBy running cron jobs on the cluster
CBy polling Git and applying changes automatically
DBy using Kubernetes Operators
What happens if the live cluster state differs from Git in ArgoCD?
AArgoCD deletes the application
BArgoCD alerts but does not fix
CArgoCD ignores the difference
DArgoCD syncs the cluster to match Git
Which of these is NOT a benefit of GitOps with ArgoCD?
AClear audit trail of changes
BManual editing of live cluster without Git
CAutomatic rollback to previous versions
DReduced human error in deployments
Explain how ArgoCD uses Git to manage Kubernetes deployments.
Think about how changes in Git lead to updates in the cluster.
You got /4 concepts.
    Describe the safety advantages of using GitOps with ArgoCD compared to manual deployment.
    Consider what happens when you want to track or undo changes.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using ArgoCD in a Kubernetes environment with GitOps?
      easy
      A. To replace Kubernetes with a new container orchestration system
      B. To manually deploy applications without using Git
      C. To store container images in a private registry
      D. To automatically sync Kubernetes cluster state with Git repository configurations

      Solution

      1. Step 1: Understand GitOps concept

        GitOps uses Git as the single source of truth for application configurations.
      2. Step 2: Role of ArgoCD in GitOps

        ArgoCD automatically syncs Kubernetes cluster state to match the Git repo, ensuring deployments are consistent and automated.
      3. Final Answer:

        To automatically sync Kubernetes cluster state with Git repository configurations -> Option D
      4. Quick Check:

        GitOps = Auto-sync cluster with Git [OK]
      Hint: Remember: ArgoCD syncs cluster state from Git automatically [OK]
      Common Mistakes:
      • Thinking ArgoCD replaces Kubernetes
      • Believing ArgoCD deploys apps manually
      • Confusing ArgoCD with container registries
      2. Which of the following is the correct ArgoCD CLI command to create an application named myapp syncing from Git repo https://github.com/example/repo.git with path k8s and target cluster https://kubernetes.default.svc?
      easy
      A. argocd app create myapp --repo https://github.com/example/repo.git --path k8s --dest-server https://kubernetes.default.svc --dest-namespace default
      B. argocd create app myapp --repository https://github.com/example/repo.git --directory k8s --cluster https://kubernetes.default.svc
      C. kubectl create app myapp --repo https://github.com/example/repo.git --path k8s
      D. argocd app new myapp --repo-url https://github.com/example/repo.git --folder k8s --server https://kubernetes.default.svc

      Solution

      1. Step 1: Identify correct ArgoCD CLI syntax

        The correct command uses argocd app create with flags --repo, --path, --dest-server, and --dest-namespace.
      2. Step 2: Compare options

        argocd app create myapp --repo https://github.com/example/repo.git --path k8s --dest-server https://kubernetes.default.svc --dest-namespace default matches the official syntax exactly. Others use incorrect commands or flags.
      3. Final Answer:

        argocd app create myapp --repo https://github.com/example/repo.git --path k8s --dest-server https://kubernetes.default.svc --dest-namespace default -> Option A
      4. Quick Check:

        Correct CLI syntax = argocd app create myapp --repo https://github.com/example/repo.git --path k8s --dest-server https://kubernetes.default.svc --dest-namespace default [OK]
      Hint: Remember: 'argocd app create' plus repo, path, dest-server flags [OK]
      Common Mistakes:
      • Using kubectl instead of argocd CLI
      • Wrong flag names like --repository or --folder
      • Incorrect command order or missing --dest-namespace
      3. Given the following ArgoCD Application YAML snippet, what will happen when ArgoCD syncs this app?
      apiVersion: argoproj.io/v1alpha1
      kind: Application
      metadata:
        name: sample-app
      spec:
        source:
          repoURL: https://github.com/example/app-configs.git
          path: production
        destination:
          server: https://kubernetes.default.svc
          namespace: default
        syncPolicy:
          automated: {}
      
      medium
      A. ArgoCD will reject the app because syncPolicy is empty
      B. ArgoCD will only show the app status but not deploy it automatically
      C. ArgoCD will automatically deploy and keep the app in sync with the Git repo
      D. ArgoCD will deploy the app once but not update it on Git changes

      Solution

      1. Step 1: Understand syncPolicy automated

        The syncPolicy: automated: {} means ArgoCD will auto-sync changes from Git to cluster.
      2. Step 2: Effect on deployment

        ArgoCD will deploy the app initially and keep it updated automatically when Git changes.
      3. Final Answer:

        ArgoCD will automatically deploy and keep the app in sync with the Git repo -> Option C
      4. Quick Check:

        syncPolicy automated = auto deploy and sync [OK]
      Hint: syncPolicy automated means auto deploy and keep in sync [OK]
      Common Mistakes:
      • Thinking empty braces mean no automation
      • Assuming manual sync is required
      • Confusing syncPolicy with app rejection
      4. You created an ArgoCD app but it shows OutOfSync status even after you committed changes to Git. Which of the following is the most likely cause?
      medium
      A. The app's syncPolicy is not set to automated, so manual sync is needed
      B. The Git repository URL is incorrect and unreachable
      C. The Kubernetes cluster is down and cannot apply changes
      D. The app name in ArgoCD does not match the Git repo name

      Solution

      1. Step 1: Understand OutOfSync status

        OutOfSync means cluster state differs from Git repo state.
      2. Step 2: Check syncPolicy effect

        If syncPolicy is not automated, ArgoCD won't auto-apply changes; manual sync is required.
      3. Final Answer:

        The app's syncPolicy is not set to automated, so manual sync is needed -> Option A
      4. Quick Check:

        OutOfSync + no automated sync = manual sync needed [OK]
      Hint: OutOfSync often means no automated sync set [OK]
      Common Mistakes:
      • Assuming cluster is down without checking
      • Blaming Git URL without error evidence
      • Thinking app name mismatch causes OutOfSync
      5. You want to ensure that ArgoCD only deploys changes to your Kubernetes cluster after manual approval, but still track changes in Git automatically. Which configuration should you use in your ArgoCD Application YAML?
      hard
      A. Set syncPolicy: automated: {} to enable auto deploy
      B. Omit syncPolicy and use manual sync to approve changes
      C. Set syncPolicy: automated: null to disable auto deploy
      D. Set syncPolicy: automated: { prune: true, selfHeal: true } for auto deploy with cleanup

      Solution

      1. Step 1: Understand manual approval need

        To require manual approval before deployment, auto sync must be disabled.
      2. Step 2: Configure syncPolicy accordingly

        Omitting syncPolicy disables auto sync, so ArgoCD tracks Git but waits for manual sync.
      3. Final Answer:

        Omit syncPolicy and use manual sync to approve changes -> Option B
      4. Quick Check:

        No syncPolicy = manual approval required [OK]
      Hint: No syncPolicy means manual sync only [OK]
      Common Mistakes:
      • Using automated sync disables manual approval
      • Setting automated with prune/selfHeal still auto deploys
      • Setting automated: null is invalid syntax