Why Finalizers Work in OSS Argo CD but Require Extra Config on Akuity's Managed Platform
When managing ApplicationSet
resources on the Akuity Platform (AKP), you might notice that setting the resources-finalizer.argocd.argoproj.io
finalizer doesn't prevent deletion of generated Applications as it does in open source Argo CD (OSS).
This explains why this happens and how to fix it.
Problem Statement
You have a valid ApplicationSet like the following:
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: kube-prometheus-stack
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
syncPolicy:
applicationsSync: create-update
goTemplate: true
generators:
- list:
elements:
- name: foo
template:
metadata:
name: '-kube-prometheus-stack'
spec:
project: default
sources:
- chart: kube-prometheus-stack
repoURL: https://prometheus-community.github.io/helm-charts
targetRevision: 58.4.0
helm:
releaseName: kube-prometheus-stack
valuesObject: {}
destination:
namespace: monitoring
name: ''
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
In OSS Argo CD, the finalizer prevents the generated Application from being deleted if the ApplicationSet
is removed. But on AKP, this safeguard doesn't work by default.
Root Cause
On the Akuity Platform:
-
A default syncPolicy is enforced at the platform level.
-
The
Allow Override
flag is set tofalse
by default.
This means that even though you've defined a finalizer in your ApplicationSet
, AKP does not allow the generated Applications to inherit or respect this setting—unless explicitly permitted.
Solution
To make the resources-finalizer.argocd.argoproj.io
work as expected:
-
Go to the Akuity UI.
-
Navigate to your
ApplicationSet
settings. -
Enable the "Allow Override" option.
-
Save and redeploy the ApplicationSet.
This will allow the AppSet template's sync policy and metadata (including finalizers) to override the platform defaults.
This behavior is a safeguard in Akuity to enforce platform-level policies, but it can interfere with advanced use cases like custom finalizers. Enabling Allow Override on a per-ApplicationSet basis restores expected behavior from OSS Argo CD.
Note: It has been fixed in the most recent release of Akuity Platform. By default the global sync policy is empty which allows application overrides by default(1:1 w/ OSS).
Reference:
- https://docs.akuity.io/argo-cd/settings/features/declarative-management#allow-override