Try   HackMD

GitOps and ArgoCD Fundamentals Quiz

Section 1

Question 1

What is the core principle of GitOps?

  • A) Git repository is the single source of truth for declarative infrastructure
  • B) Everything must be manually approved before deployment
  • C) Developers must have direct access to production environments
  • D) All infrastructure changes require separate CI/CD pipelines
Show Answer

Correct Answer: A) Git repository is the single source of truth for declarative infrastructure

GitOps uses Git repositories as the single source of truth for declarative infrastructure and applications. The desired state of the system is versioned in Git, and automated processes ensure the actual state matches the desired state.

Question 2

Which of the following best describes ArgoCD?

  • A) A Continuous Integration tool that builds container images
  • B) A Continuous Delivery tool that manages secret encryption
  • C) A GitOps continuous delivery tool for Kubernetes
  • D) A version control system built specifically for Kubernetes manifests
Show Answer

Correct Answer: C) A GitOps continuous delivery tool for Kubernetes

ArgoCD is a declarative, GitOps continuous delivery tool for Kubernetes. It automates the deployment of applications by keeping the deployed state in sync with the state defined in a Git repository.

Question 3

What is a key benefit of GitOps compared to traditional CI/CD pipelines?

  • A) Faster build times for container images
  • B) Enhanced security through immutable infrastructure
  • C) Elimination of the need for code reviews
  • D) Direct SSH access to production servers
Show Answer

Correct Answer: B) Enhanced security through immutable infrastructure

GitOps enhances security by promoting immutable infrastructure. Changes go through version control (providing audit trail and approval processes), and no direct access to the cluster is needed for deployments, reducing the attack surface.

Question 4

Which component of ArgoCD is responsible for monitoring Git repositories and detecting changes?

  • A) ArgoCD Deployment Controller
  • B) ArgoCD API Server
  • C) ArgoCD Application Controller
  • D) ArgoCD Repository Server
Show Answer

Correct Answer: C) ArgoCD Application Controller

The Application Controller is the component that continuously monitors running applications and compares their current, live state against the desired state defined in the Git repository. It detects and reconciles any differences.

Question 5

What does the term "declarative configuration" mean in the context of GitOps?

  • A) Writing step-by-step instructions for how to deploy an application
  • B) Specifying the desired end state of a system rather than the steps to get there
  • C) Using a specific programming language for infrastructure automation
  • D) Creating separate configurations for each environment
Show Answer

Correct Answer: B) Specifying the desired end state of a system rather than the steps to get there

Declarative configuration focuses on describing what the desired outcome should be, rather than how to achieve it. The system then works to reconcile the actual state with this declared desired state.

Question 6

Which command is used to install ArgoCD in a Kubernetes cluster?

  • A) helm install argocd argo/argo-cd
  • B) kubectl create -f argocd-install.yaml
  • C) kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
  • D) kustomize build argocd | kubectl apply -f -
Show Answer

Correct Answer: C) kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

The standard way to install ArgoCD is by applying the install manifest directly from the ArgoCD GitHub repository, though other methods like Helm are also available. The correct Helm command is: helm install my-argo-cd oci://ghcr.io/argoproj/argo-helm/argo-cd --version 7.8.14 (see https://artifacthub.io/packages/helm/argo-cd-oci/argo-cd)

Question 7

What is the fundamental Kubernetes Custom Resource Definition (CRD) used to define applications in ArgoCD?

  • A) ArgoDeployment
  • B) Application
  • C) GitOpsConfig
  • D) ArgoCDProject
Show Answer

Correct Answer: B) Application

The Application CRD is the core resource in ArgoCD that defines a logical application and links it to a source repository, destination cluster, and path within the repository.

Question 8

Which of the following best describes the reconciliation process in ArgoCD?

  • A) Manual verification of Git changes before deployment
  • B) Continuous comparison of desired state with actual cluster state
  • C) Building container images based on code changes
  • D) Periodic backup of cluster resources to Git
Show Answer

Correct Answer: B) Continuous comparison of desired state with actual cluster state

ArgoCD's reconciliation constantly compares the desired state (defined in Git) with the actual state in the Kubernetes cluster. When differences are detected, ArgoCD takes action to make the actual state match the desired state.

Question 9

What is the purpose of the sync policy in an ArgoCD application?

  • A) To define which Git branches should be monitored
  • B) To specify when and how automatic synchronization should occur
  • C) To set up authentication for private Git repositories
  • D) To configure the network timeout for Kubernetes API calls
Show Answer

Correct Answer: B) To specify when and how automatic synchronization should occur

The sync policy defines whether synchronization happens automatically or manually, and can include additional options like pruning resources and performing self-healing operations.

Question 10

Which of the following source types is NOT natively supported by ArgoCD?

  • A) Git repositories
  • B) Helm charts
  • C) Kustomize applications
  • D) Docker registries
Show Answer

Correct Answer: D) Docker registries

ArgoCD natively supports Git repositories, Helm charts, and Kustomize applications as source types, but not Docker registries directly. It deploys applications based on manifest sources, not container images.

Section 2

Question 11

What is the recommended approach for structuring Git repositories in a GitOps workflow?

  • A) One monolithic repository for all applications and environments
  • B) Separate repositories for each application and environment
  • C) Application repositories for source code and config repositories for deployment manifests
  • D) Using branches instead of repositories for different environments
Show Answer

Correct Answer: C) Application repositories for source code and config repositories for deployment manifests

A common GitOps pattern is to separate application code from deployment configuration. This allows for independent lifecycle management while maintaining a clear separation of concerns.

Question 12

Which of the following is a key characteristic of "Pull-based" deployment in GitOps?

  • A) CI/CD pipelines push changes to the environment
  • B) Operators inside the cluster pull desired configuration from Git
  • C) Developers manually apply changes to clusters
  • D) Infrastructure changes require approval in a ticketing system
Show Answer

Correct Answer: B) Operators inside the cluster pull desired configuration from Git

In pull-based GitOps, operators (like ArgoCD) running inside the cluster continuously monitor Git repositories and pull in changes, applying them to the cluster when differences are detected.

Question 13

How does ArgoCD handle RBAC (Role-Based Access Control)?

  • A) It has no built-in RBAC and relies on Kubernetes RBAC only
  • B) It has its own RBAC system independent of Kubernetes
  • C) It extends Kubernetes RBAC with custom resources like Projects
  • D) It requires an external identity provider for all access control
Show Answer

Correct Answer: C) It extends Kubernetes RBAC with custom resources like Projects

ArgoCD builds on Kubernetes RBAC but extends it with concepts like Projects, which provide logical grouping of applications with specific access controls and constraints.

Question 14

What is the "App of Apps" pattern in ArgoCD?

  • A) A microservices architecture where each app communicates directly with all other apps
  • B) Using one ArgoCD Application to manage other ArgoCD Applications
  • C) A design pattern for developing frontend applications
  • D) Deploying the same application to multiple namespaces
Show Answer

Correct Answer: B) Using one ArgoCD Application to manage other ArgoCD Applications

The "App of Apps" pattern involves creating an ArgoCD Application that points to a Git repository containing the definitions of other ArgoCD Applications. This allows for managing multiple applications as a group.

Question 15

Which of the following tools is commonly used with ArgoCD for progressive delivery (canary deployments)?

  • A) Jenkins
  • B) Argo Workflows
  • C) Argo Rollouts
  • D) Flux CD
Show Answer

Correct Answer: C) Argo Rollouts

Argo Rollouts is specifically designed to work with ArgoCD for advanced deployment strategies like canary, blue-green, and A/B testing, providing fine-grained control over the progressive delivery process.

Question 16

What is the purpose of the "self-heal" option in ArgoCD sync policies?

  • A) To automatically roll back failed deployments
  • B) To detect and fix vulnerabilities in deployed applications
  • C) To automatically correct drift between the desired and actual state
  • D) To repair corrupted Git repositories
Show Answer

Correct Answer: C) To automatically correct drift between the desired and actual state

The self-heal option enables ArgoCD to automatically restore resources to their desired state if they are modified outside of the GitOps workflow, preventing configuration drift.

Question 17

What is a Project in ArgoCD?

  • A) A grouping of teams working on related applications
  • B) A logical grouping of applications with specific restrictions and permissions
  • C) A separate Git repository for each application
  • D) A collection of Kubernetes clusters managed together
Show Answer

Correct Answer: B) A logical grouping of applications with specific restrictions and permissions

An ArgoCD Project provides a way to group applications and define rules about what repositories they can pull from, what cluster resources they can deploy, and which clusters they can deploy to.

Question 18

Which of the following best describes the "desired state" in a GitOps workflow?

  • A) The state of the production environment before any changes are applied
  • B) The state defined in the Git repository that should be reflected in the cluster
  • C) The state of the application after passing all automated tests
  • D) The state defined by the operations team during deployment planning
Show Answer

Correct Answer: B) The state defined in the Git repository that should be reflected in the cluster

In GitOps, the Git repository acts as the single source of truth, containing the desired state that should be reflected in the target environment. The GitOps operator works to ensure the actual state matches this desired state.

Question 19

When using ArgoCD with Helm charts, how are values typically managed?

  • A) Using separate values files committed to the Git repository
  • B) By modifying the Helm charts directly before each deployment
  • C) Through the ArgoCD UI by manually overriding values
  • D) By storing values in external secret management systems only
Show Answer

Correct Answer: A) Using separate values files committed to the Git repository

In a GitOps workflow with ArgoCD, Helm chart values are typically defined in values files committed to the Git repository. ArgoCD can be configured to use these values files when deploying the chart.

Question 20

What is the primary benefit of using "waves" in ArgoCD deployments?

  • A) Reducing the overall deployment time by parallelizing all resources
  • B) Controlling the sequence of resource creation across multiple applications
  • C) Creating isolated network segments for enhanced security
  • D) Automating the rollback process when deployments fail
Show Answer

Correct Answer: B) Controlling the sequence of resource creation across multiple applications

Waves in ArgoCD allow for fine-grained control over the order in which resources are created or updated, ensuring dependencies are properly addressed and reducing the risk of failed deployments.

Section 3

Question 21

Which component in ArgoCD is responsible for storing application state and serving the API?

  • A) Dex Server
  • B) Redis
  • C) Application Controller
  • D) API Server
Show Answer

Correct Answer: D) API Server

The ArgoCD API Server is a gRPC/REST server that exposes the API consumed by the web UI, CLI, and other clients. It's responsible for application management and status reporting, and also serves as the repository server.

Question 22

What is the main difference between Kustomize and Helm when used with ArgoCD?

  • A) Kustomize is for templating, while Helm is for patching
  • B) Kustomize uses a patching approach, while Helm uses templating
  • C) Kustomize is only for simple applications, while Helm is for complex ones
  • D) Kustomize requires a registry, while Helm uses local charts
Show Answer

Correct Answer: B) Kustomize uses a patching approach, while Helm uses templating

Kustomize and Helm represent different approaches to managing Kubernetes manifests. Kustomize uses a patching system to modify existing YAML, while Helm uses a templating engine to generate YAML from templates and values.

Question 23

What is the purpose of the "prune" option in ArgoCD synchronization?

  • A) To clean up unused Git branches
  • B) To remove resources that no longer exist in the Git repository
  • C) To delete failed deployments
  • D) To clear the ArgoCD cache
Show Answer

Correct Answer: B) To remove resources that no longer exist in the Git repository

The prune option allows ArgoCD to delete resources from the cluster that are no longer defined in the Git repository, ensuring complete synchronization of the actual state with the desired state.

Question 24

How does ArgoCD typically handle secrets in a GitOps workflow?

  • A) By storing them in plain text in the Git repository
  • B) By integrating with external tools like Sealed Secrets, Vault, or SOPS
  • C) By excluding secrets from the GitOps process entirely
  • D) By using a separate Git repository with restricted access for secrets
Show Answer

Correct Answer: B) By integrating with external tools like Sealed Secrets, Vault, or SOPS

ArgoCD doesn't have built-in secret encryption but integrates with tools like Bitnami Sealed Secrets, HashiCorp Vault, or SOPS to securely manage secrets in a GitOps workflow.

Question 25

Which of the following is NOT a valid ArgoCD sync strategy?

  • A) Apply
  • B) Hook
  • C) Force
  • D) Replace
Show Answer

Correct Answer: C) Force

ArgoCD supports three sync strategies: Apply (default, using kubectl apply), Hook (using kubectl apply with pruning pre/post sync hooks), and Replace (using kubectl replace). "Force" is not a valid sync strategy.

Question 26

What is the function of the "app-of-apps" pattern in complex ArgoCD deployments?

  • A) To create a hierarchy of applications for easier management
  • B) To enable auto-scaling of applications based on load
  • C) To automatically generate ArgoCD dashboards
  • D) To merge multiple Git repositories into one
Show Answer

Correct Answer: A) To create a hierarchy of applications for easier management

The app-of-apps pattern creates a hierarchical structure where a parent ArgoCD Application manages multiple child Applications, simplifying the management of complex deployments and enabling orchestration of multiple applications.

Question 27

Which of the following is a benefit of multi-cluster management with ArgoCD?

  • A) Elimination of the need for Kubernetes
  • B) Centralized governance and configuration consistency across clusters
  • C) Automatic creation of new clusters as needed
  • D) Direct access to all clusters from developer workstations
Show Answer

Correct Answer: B) Centralized governance and configuration consistency across clusters

ArgoCD's multi-cluster capability allows organizations to manage applications across multiple Kubernetes clusters from a single ArgoCD instance, ensuring consistent configuration and governance across environments.

Question 28

What is the purpose of health checks in ArgoCD?

  • A) To verify the health of the Git repository
  • B) To determine if applications are functioning correctly after deployment
  • C) To check the health of the ArgoCD server itself
  • D) To validate Kubernetes manifests before application
Show Answer

Correct Answer: B) To determine if applications are functioning correctly after deployment

ArgoCD health checks evaluate the status of deployed resources to determine if an application is healthy after synchronization. Different resource types have different health criteria that ArgoCD checks.

Question 29

Which of the following is NOT a typical method for accessing the ArgoCD UI?

  • A) Port-forwarding with kubectl
  • B) Ingress controller
  • C) NodePort service
  • D) Direct access through the Kubernetes API server
Show Answer

Correct Answer: D) Direct access through the Kubernetes API server

While ArgoCD can be accessed via port-forwarding, Ingress, or NodePort services, it's not directly accessible through the Kubernetes API server as it's a separate application with its own API and UI.

Question 30

What is the purpose of the "refresh" operation in ArgoCD?

  • A) To restart the ArgoCD server
  • B) To update the Git repositories cached by ArgoCD
  • C) To force redeployment of an application
  • D) To clear the web UI cache in the browser
Show Answer

Correct Answer: B) To update the Git repositories cached by ArgoCD

The refresh operation updates ArgoCD's internal cache with the latest state from the Git repository and the live cluster state, ensuring ArgoCD has up-to-date information when making sync decisions.

Section 4

Question 31

What is the purpose of Config Management Plugins (CMP) in ArgoCD?

  • A) To generate Kubernetes manifests from proprietary configuration formats
  • B) To manage configuration files in the Git repository
  • C) To encrypt sensitive configuration data
  • D) To validate configurations against company policies
Show Answer

Correct Answer: A) To generate Kubernetes manifests from proprietary configuration formats

Config Management Plugins extend ArgoCD's capability to work with custom or proprietary configuration management tools and formats beyond the built-in support for Helm, Kustomize, and plain YAML.

Question 32

What is a key difference between Blue-Green and Canary deployment strategies?

  • A) Blue-Green switches all traffic at once, while Canary gradually shifts traffic
  • B) Blue-Green is for production only, while Canary is for testing
  • C) Blue-Green requires manual approval, while Canary is fully automated
  • D) Blue-Green uses two environments, while Canary uses three
Show Answer

Correct Answer: A) Blue-Green switches all traffic at once, while Canary gradually shifts traffic

In Blue-Green deployments, two identical environments exist with only one receiving traffic. Traffic is switched entirely from one to the other after validation. In Canary deployments, traffic is gradually shifted to the new version.

Question 33

Which Kubernetes resource is used to define an ArgoCD application?

  • A) Deployment
  • B) ConfigMap
  • C) Application
  • D) Service
Show Answer

Correct Answer: C) Application

The Application is a custom resource definition (CRD) specific to ArgoCD that defines the source repository, target cluster, and configuration options for an application managed by ArgoCD.

Question 34

What is the role of the Repository Server in ArgoCD's architecture?

  • A) To store backups of all Git repositories
  • B) To maintain a local cache of repository contents
  • C) To push changes back to the Git repository
  • D) To host Git repositories when external ones are unavailable
Show Answer

Correct Answer: B) To maintain a local cache of repository contents

The Repository Server maintains a local cache of Git repository contents, generates and returns the Kubernetes manifests for applications based on the repository content, configuration management tools, and application settings.

Question 35

Which of the following would you use to implement custom resource health checks in ArgoCD?

  • A) Lua scripts
  • B) Resource Hooks
  • C) JSONNET templates
  • D) Custom health check CRDs
Show Answer

Correct Answer: A) Lua scripts

ArgoCD uses Lua scripts for custom health checks. You can define custom health checks for specific resources by adding Lua scripts that determine when a resource is considered healthy.

Question 36

What is the purpose of "diffing customization" in ArgoCD?

  • A) To highlight visual differences in the UI
  • B) To customize how ArgoCD compares resources during synchronization
  • C) To create custom difference reports for audit purposes
  • D) To generate different manifests for each environment
Show Answer

Correct Answer: B) To customize how ArgoCD compares resources during synchronization

Diffing customization allows you to configure how ArgoCD compares the desired state with the actual state, such as ignoring certain fields or normalizing differences that aren't significant.

Question 37

Which of the following metrics would be useful for monitoring ArgoCD's performance?

  • A) Number of applications and their sync statuses
  • B) Container image build times
  • C) Git commit frequency
  • D) Kubernetes node CPU usage
Show Answer

Correct Answer: A) Number of applications and their sync statuses

Monitoring the number of applications and their sync statuses provides insight into ArgoCD's operational state and can help identify issues with the GitOps workflow.

Question 38

What is the main advantage of using Helm charts with ArgoCD?

  • A) They allow for deployment to non-Kubernetes platforms
  • B) They provide templating and packaging for complex applications
  • C) They automatically encrypt sensitive data
  • D) They eliminate the need for Git repositories
Show Answer

Correct Answer: B) They provide templating and packaging for complex applications

Helm charts offer templating capabilities and package management for Kubernetes applications, making it easier to deploy and configure complex applications with different values across environments.

Question 39

What is the purpose of the "Application Sets" feature in ArgoCD?

  • A) To group applications for visual organization in the UI
  • B) To automate the creation of ArgoCD Applications at scale
  • C) To create predefined application templates
  • D) To set resource limits for applications
Show Answer

Correct Answer: B) To automate the creation of ArgoCD Applications at scale

ApplicationSets allow for automated, templated creation of ArgoCD Applications across multiple clusters, repositories, or environments, simplifying management at scale.

Question 40

Which component is required for high availability (HA) mode in ArgoCD?

  • A) External database
  • B) Multiple Redis instances
  • C) Load balancer
  • D) All of the above
Show Answer

Correct Answer: D) All of the above

ArgoCD HA mode requires multiple components: multiple instances of ArgoCD components (API server, application controller, repo server), a load balancer to distribute traffic, and typically external database/Redis for state management.

Section 5

Question 41

What is the function of "syncWaves" in ArgoCD?

  • A) To implement blue-green deployments
  • B) To control the order of resource creation within an application
  • C) To sync multiple Git repositories simultaneously
  • D) To manage network traffic during deployment
Show Answer

Correct Answer: B) To control the order of resource creation within an application

SyncWaves allow for controlling the order in which resources are applied within an application by assigning wave numbers to resources. Resources with lower wave numbers are applied first.

Question 42

What is the purpose of Argo CD's "ApplicationSet" controller?

  • A) To manage sets of applications across multiple clusters
  • B) To group applications in the UI
  • C) To define resource limits for applications
  • D) To create application backups
Show Answer

Correct Answer: A) To manage sets of applications across multiple clusters

The ApplicationSet controller allows for templated creation of many ArgoCD Applications across multiple clusters or from multiple Git repositories, simplifying fleet management.

Question 43

Which of the following is NOT a valid generator for ApplicationSets?

  • A) List generator
  • B) Cluster generator
  • C) Git generator
  • D) Deployment generator
Show Answer

Correct Answer: D) Deployment generator

ApplicationSets support List, Cluster, Git, and Matrix generators, but there's no built-in "Deployment generator". These generators define how ApplicationSet templates are expanded into multiple Applications.

Question 44

What is the recommended method for implementing GitOps-based secret management?

  • A) Storing encrypted secrets in the Git repository using tools like Sealed Secrets
  • B) Manually creating secrets in each environment
  • C) Storing secrets in plain text in a private repository
  • D) Excluding secrets from the GitOps workflow entirely
Show Answer

Correct Answer: A) Storing encrypted secrets in the Git repository using tools like Sealed Secrets

For GitOps-based secret management, it's recommended to encrypt secrets before storing them in Git using tools like Bitnami Sealed Secrets, SOPS, or Vault, allowing for secure secret management within the GitOps workflow.

Question 45

What is a "hook" in the context of ArgoCD?

  • A) A notification sent when sync status changes
  • B) A resource that temporarily exists during sync operations
  • C) A callback URL for external systems
  • D) A mechanism to intercept and modify Git operations
Show Answer

Correct Answer: B) A resource that temporarily exists during sync operations

Hooks in ArgoCD are Kubernetes resources that are executed during specific phases of a sync operation (PreSync, Sync, PostSync) but are not part of the final application state. They're used for jobs like database migrations.

Question 46

What is the main difference between ArgoCD and Flux CD?

  • A) ArgoCD has a web UI, while Flux CD is CLI-only
  • B) ArgoCD only works with Kubernetes, while Flux CD works with any platform
  • C) ArgoCD is closed-source, while Flux CD is open-source
  • D) ArgoCD is pull-based, while Flux CD is push-based
Show Answer

Correct Answer: A) ArgoCD has a web UI, while Flux CD is CLI-only

One of the key differences between these GitOps tools is that ArgoCD provides a rich web UI for visualization and management, while Flux CD traditionally has been more CLI-focused (though this is changing in newer versions).

Question 47

What is the purpose of "resource tracking" in ArgoCD?

  • A) To monitor resource usage for billing purposes
  • B) To track which resources are managed by which application
  • C) To log resource changes for compliance
  • D) To limit resource consumption by applications
Show Answer

Correct Answer: B) To track which resources are managed by which application

Resource tracking in ArgoCD determines which Kubernetes resources are managed by which ArgoCD application, preventing conflicts where multiple applications might try to manage the same resources.

Question 48

Which of the following is a common approach for disaster recovery in a GitOps workflow?

  • A) Manual restoration from backup files
  • B) Rebuilding the entire infrastructure from the Git repository
  • C) Using snapshots of the production environment
  • D) Maintaining duplicate environments at all times
Show Answer

Correct Answer: B) Rebuilding the entire infrastructure from the Git repository

A key benefit of GitOps is that the Git repository contains the complete desired state of the system. In case of disaster, you can rebuild the entire infrastructure by applying the manifests from the repository to a new cluster.

Question 49

What is the purpose of the "ignoreDifferences" field in an ArgoCD Application?

  • A) To ignore specific applications during syncing
  • B) To exclude certain resources from being managed
  • C) To specify fields that should be ignored when comparing resources
  • D) To hide differences in the UI for better readability
Show Answer

Correct Answer: C) To specify fields that should be ignored when comparing resources

The ignoreDifferences field allows you to specify fields in resources that ArgoCD should ignore when determining if a resource is in sync, useful for fields that are modified by controllers or contain runtime data.

Question 50

Which approach is recommended for structuring application deployments across multiple environments in GitOps?

  • A) Using a single branch with different folders for each environment
  • B) Using a different branch for each environment
  • C) Using a single branch with environment-specific overlays using Kustomize
  • D) Using completely separate repositories for each environment
Show Answer

Correct Answer: C) Using a single branch with environment-specific overlays using Kustomize

A common best practice in GitOps is to use a single branch with environment-specific overlays using tools like Kustomize. This approach maintains a single source of truth while allowing for environment-specific configurations.