Migration from Helm 2 to Helm 3

My k8s-based JupyterHub is still running version 0.11.1 of the Helm chart (the last version compatible with Helm 2). I’d like to switch to Helm 3 and version 1.2.0 of the chart.

Does anyone have any tips or advice on migrating to Helm 3, please?

I’ve installed Helm 3, but when I try to upgrade using

helm upgrade 
  --install jhub jupyterhub/jupyterhub 
  --namespace jhub 
  --version=1.2.0 
  --values config.yaml 
  --cleanup-on-fail

I see the following error:

Error: UPGRADE FAILED: cannot patch "user-scheduler" with kind PodDisruptionBudget: PodDisruptionBudget.policy "user-scheduler" is invalid: spec: Invalid value: policy.PodDisruptionBudgetSpec{MinAvailable:(*intstr.IntOrString)(0xc00c95db00), Selector:(*v1.LabelSelector)(0xc00c95db20), MaxUnavailable:(*intstr.IntOrString)(0xc00c95db60)}: minAvailable and maxUnavailable cannot be both set

What steps do I need to take before I can switch to Helm 3?

Thanks!

Helm has some docs on upgrading v2 to v3. It’s worked pretty smoothly in my experience. Once you import the helm 2 release into helm 3 with helm 2to3 convert, a regular helm upgrade ought to work.

As always with upgrades, backing things up first is safest!

2 Likes

Fantastic, that seems to have worked - thanks @minrk!