helmfile2argo/README.md
2026-05-05 22:51:49 +02:00

1.7 KiB

Helmfile to argocd automated replacement

This is an extremely naiive implementation and might be not what you really want, but it's better than nothing.

The actual intent of this is to create a basic structure for you to refine, when you currently have helmfile and want to move to argoCD.

How it works

  • It strips ALL templating from the yaml file. Naiively, with a regex.
  • It removes the multidoc separator that helmfile weirdly uses for the environment stuff. Naiively, with a regex.
  • It then parses the yaml in golang against some stripped-down specs (I would like to use the argocd source and the helmfile source, but they aren't really designed to be reused)
  • It outputs a project with the contents of the helmfile repositories section whitelisted
  • Then it outputs individual application objects.

Things it won't do

  • "Magic". For example, it won't replace hardcoded https://path.to/some/tarball-helm-chart.tgz with something that is argo-compatible. Point to a real helm repo, an oci repo or a git repo, argo can deal with those.
  • Multiple environments. There's not an opinionated "this is how you do it in argo" for that, so you need to work out what to do there. You can pass the environment you want to use in, and if you're using "environment" values, they'll be included in the application object for you.
  • The same as helmfile, sometimes. For example, it will only descend one level deep of helmfile references and values in the sub helmfiles might leak upwards.

Context

This was written on trains and in cafes in my personal time, don't expect too much from it, use it if it's useful to you.