The process to create an ArgoCD application from an existing helm chart release without downtime is well documented e.g. here:
Just create an application, you can start with auto-sync turned off to see if it picks up on resources etc. The only thing Argo CD should want to do is add an annotation to resources.
That said, even after ArgoCD takes over the existing deployments / services / etc, helm ls still lists the existing release even though it is not directly managed by helm anymore.
What is the recommended way to completely clean up helm for the migrated application, as if it had never been managed by it previously? More specifically:
- the helm releases (that are now managed by ArgoCD applications), so that they do not show up on
helm lsanymore - kubernetes object labels and annotations originally added by helm
A more philosophical question to ask is whether the clean up is even necessary. Are these leftover annotations harmless? The main reason I want to clean them up is to avoid / reduce confusion, so that other teammates do not mistakenly think the kubernetes resources are managed by helm.
E.g this is what they look like after ArgoCD "adopts" them:
% kubectl describe svc <my service>
[...]
Labels: app.kubernetes.io/managed-by=Helm
argocd.argoproj.io/instance=<my application name>
k8s-addon=ingress-nginx.addons.k8s.io
Annotations: meta.helm.sh/release-name: <my application name>
meta.helm.sh/release-namespace: default
[...]