# 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 -` <details> <summary>Show Answer</summary> **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) </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> # 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> # 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## Question 25 Which of the following is NOT a valid ArgoCD sync strategy? - [ ] A) Apply - [ ] B) Hook - [ ] C) Force - [ ] D) Replace <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> # 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## Question 33 Which Kubernetes resource is used to define an ArgoCD application? - [ ] A) Deployment - [ ] B) ConfigMap - [ ] C) Application - [ ] D) Service <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> # 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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). </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details> ## 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 <details> <summary>Show Answer</summary> **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. </details>