TIL: Argo CD AppProjects have a namespace resource whitelist
An AppProject doesn’t just control where an Application can deploy (destinations) — it also controls what kinds of namespaced resources the apps in that project may manage, via spec.namespaceResourceWhitelist:
spec:
namespaceResourceWhitelist:
- group: apps
kind: Deployment
- group: ""
kind: ConfigMap
If an Application tries to sync a namespaced resource whose group + kind isn’t on that list, the sync is rejected — even if the destination namespace itself is allowed. Cluster-scoped resources go through the separate clusterResourceWhitelist, so a ClusterRole won’t be saved by listing it here.