DevOps / ArgoCD interview questions
What is an ArgoCD Project and how does it differ from a Kubernetes namespace?
An ArgoCD Project (AppProject CRD) is a logical grouping and access control boundary within ArgoCD itself. It is entirely separate from Kubernetes namespaces — a Project does not correspond to any Kubernetes object but rather enforces policies on which source repositories, destination clusters, and destination namespaces ArgoCD Applications within that Project are permitted to use.
Key things an AppProject controls:
- sourceRepos: whitelist of Git/Helm repositories Applications may source from. Use
*for any. - destinations: whitelist of cluster + namespace combinations the Applications may deploy to.
- clusterResourceWhitelist / namespaceResourceBlacklist: restrict which Kubernetes resource kinds can be created (e.g., prevent Applications in a dev Project from creating ClusterRoles).
- roles: Project-scoped RBAC roles that can be assigned to users/groups independently of the global ArgoCD RBAC.
apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-payments namespace: argocd spec: sourceRepos: - https://github.com/my-org/payments-* destinations: - namespace: payments-* server: https://kubernetes.default.svc clusterResourceWhitelist: - group: '' kind: Namespace
A Kubernetes namespace, by contrast, is a runtime isolation boundary within the cluster that separates resource names and applies ResourceQuotas/NetworkPolicies. An ArgoCD Project can deploy to multiple namespaces, and multiple Projects can target the same namespace — they operate at different abstraction layers.
More Related questions...