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
GitOps with ArgoCD
📖 Scenario: You are working as a DevOps engineer for a small company. Your team wants to use GitOps to manage Kubernetes applications. You will use ArgoCD to automatically deploy an application from a Git repository to a Kubernetes cluster.
🎯 Goal: Learn how to set up a basic ArgoCD Application resource that points to a Git repository and deploys an app to Kubernetes automatically.
📋 What You'll Learn
Create a Kubernetes namespace for ArgoCD
Create an ArgoCD Application resource with correct Git repo URL and path
Set the target cluster and namespace for deployment
Verify the application sync status with ArgoCD
💡 Why This Matters
🌍 Real World
GitOps with ArgoCD is used in real companies to automate Kubernetes app deployments from Git repositories, making deployments reliable and repeatable.
💼 Career
Knowing how to use ArgoCD for GitOps is a valuable skill for DevOps engineers and site reliability engineers working with Kubernetes.
Progress0 / 4 steps
1
Create the ArgoCD namespace
Create a Kubernetes namespace called argocd using the command kubectl create namespace argocd.
Kubernetes
Hint
Use kubectl create namespace argocd to create the namespace.
2
Define the ArgoCD Application manifest
Create a YAML manifest file called app.yaml that defines an ArgoCD Application resource with these exact values: apiVersion: argoproj.io/v1alpha1, kind: Application, metadata.name: guestbook, spec.source.repoURL: https://github.com/argoproj/argocd-example-apps.git, spec.source.path: guestbook, spec.destination.server: https://kubernetes.default.svc, and spec.destination.namespace: default.
Kubernetes
Hint
Make sure to include metadata.name as guestbook and set the spec.source.repoURL and spec.source.path exactly as given.
3
Apply the ArgoCD Application manifest
Use the command kubectl apply -f app.yaml -n argocd to create the ArgoCD Application resource in the argocd namespace.
Kubernetes
Hint
Use kubectl apply -f app.yaml -n argocd to create the Application resource.
4
Check the ArgoCD Application sync status
Run the command kubectl get applications -n argocd guestbook -o jsonpath='{.status.sync.status}' to display the sync status of the guestbook application.
Kubernetes
Hint
The output should be Synced when the application is deployed successfully.
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
Step 1: Understand GitOps concept
GitOps uses Git as the single source of truth for application configurations.
Step 2: Role of ArgoCD in GitOps
ArgoCD automatically syncs Kubernetes cluster state to match the Git repo, ensuring deployments are consistent and automated.
Final Answer:
To automatically sync Kubernetes cluster state with Git repository configurations -> Option D
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?
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
Step 1: Understand syncPolicy automated
The syncPolicy: automated: {} means ArgoCD will auto-sync changes from Git to cluster.
Step 2: Effect on deployment
ArgoCD will deploy the app initially and keep it updated automatically when Git changes.
Final Answer:
ArgoCD will automatically deploy and keep the app in sync with the Git repo -> Option C
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
Step 1: Understand OutOfSync status
OutOfSync means cluster state differs from Git repo state.
Step 2: Check syncPolicy effect
If syncPolicy is not automated, ArgoCD won't auto-apply changes; manual sync is required.
Final Answer:
The app's syncPolicy is not set to automated, so manual sync is needed -> Option A
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
Step 1: Understand manual approval need
To require manual approval before deployment, auto sync must be disabled.
Step 2: Configure syncPolicy accordingly
Omitting syncPolicy disables auto sync, so ArgoCD tracks Git but waits for manual sync.
Final Answer:
Omit syncPolicy and use manual sync to approve changes -> Option B
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