====== 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/'' 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