Helm2 to Helm3 升级记录
参考资料主要是官网提供的:
升级主要步骤
- 先将 helm2 和 helm3 在你机器上共存,注意给不同的名字
- 给 helm3 安装
2to3
帮助迁移的plugin:helm3 plugin install https://github.com/helm/helm-2to3
- 迁移 helm2 的一些配置文件到 helm3
helm3 2to3 move config
- 迁移 helm2 部署的 release,这需要一个个的迁移。
先用helm2 list
查看 helm2 安装的所有的release
再用helm3 2to3 convert xxx-release-name
一个一个release进行迁移。
迁移完成后,用helm3 list -A
检查 helm3迁移过来的release。
-A 是查看所有namespace下面的release,因为helm3 对于release做了namespace的区分,
如果只写helm3 list
,看到的是 default 这个namespace下的release。 - 最后一步是清除helm2的数据,这一步不是必须的,但是是强烈建议的。
helm3 2to3 cleanup
Helm3使用记录中遇到的问题
- helm3 不提供默认的 chart repo,需要手动添加
- repo "https://kubernetes-charts.storage.googleapis.com"; is no longer available; try "charts.helm.sh/stable"; instead
- 有一些release可能需要重新使用helm3安装,如:cert-manager, 因为用helm2安装的cert-manager 资源中配置的一些信息,在helm3里面不适用,如:
key "app.kubernetes.io/managed-by": must equal "helm": current value is "Tiller"
等。
2021年01月15日17:21:02
之前在qa环境做了helm2 to helm3的升级,stg 环境升级是 同事做的,prod 环境升级又是我做,时隔这么久再次升级遇到的问题:
- 迁移 helm2 的一些配置文件到 helm3
helm3 2to3 move config
的时候,due to the following error: open /xx/xx/.helm/repositories.yaml: no such file or directory
。 猜测是在qa环境做完升级之后,helm2的配置已经被删除了。
解决方案:helm2 init
, 这样可以添加repo 文件,但是遇到添加 Failed to fetch https://kubernetes-charts.storage.googleapis.com/index.yaml : 403 Forbidden.
https://kubernetes-charts.storage.googleapis.com/index.yaml 这个已经被弃用了。但是在helm2的init命令里依然使用的是这个。
解决方案:helm2 init --stable-repo-url=https://charts.helm.sh/stable --client-only
, 这里直接用:helm2 repo add stable https://charts.helm.sh/stable
都不行,因为这个操作需要存在repo文件,必须用init命令初始化repo文件。