User Tools

Site Tools


kubernetes:helm2argo

Migrating Helm deployments to ArgoCD (GitOps-style)

This page is a work-in-progress. Stuff might change, and probably will.

There are reasons to do this. Generally it's more pleasant to manage this stuff by Argo, especially if you have another related resources which are NOT managed by Helm. For example, we have cert-manager installed by hand, but the ClusterIssuer and certs themselves are just deployed by hand.

Having all this stuff under Argo is handier, and also lags less for large environments. Helm itself is not fast in this matter.

The approach to go is a wrapper chart, and then creating an appropriate application for Argo. App-of-apps is probably the correct way to deploy the applications semi-coherently. We are leaning towards managing everything via git here, so everything is in a nice cool place.

Step 1: wrapper chart

Create a folder in your git repo, I usually pick helm/<application-name> path. Make this structure:

application-name/
|-> templates/
|-> Chart.yaml
|-> values.yaml

Chart.yaml is your chart definition. Here is a somewhat reasonable template you can use. We are adding the chart that we are targetting as a dependency to this one. Replace each APPNAMEHERE with the app you are actually deploying.

apiVersion: v2
name: APPNAMEHERE-wrapper
description: A wrapper chart for APPNAMEHERE deployment
type: application
version: 1.0.0
appVersion: "v2.1.37" # put in the app-version from the app you are using in here

dependencies:
  - name: APPNAMEHERE
    version: "4.2.0" # put in the chart version from the one you have currently deployed
    repository: "charts.asscompany.com"

Now for the values.yaml file. Dump all your values from the current chart you have.

$ helm get values -n ass APPNAMEHERE >> values.yaml

Edit that file. Remove the first line as I have no idea why Helm does it this way.

Step 2: ArgoCD application

TODO

Step 3: initial sync-up

TODO

Step 4: make Helm forsake the release

TODO

Step 5: label cleanup

TODO

Step 6: make your wrapper chart suck less

TODO

kubernetes/helm2argo.txt · Last modified: by mattroot