百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 博客教程 > 正文

Helm V2 迁移到 V3 版本

connygpt 2024-09-09 03:10 11 浏览

Helm V3 版本已经发布了第三个 Beta 版本了,由于 V2 和 V3 版本之间的架构变化较大,所以如果我们现在正在使用 V2 版本的话,要迁移到 V3 版本了就有点小麻烦,其中最重要的当然就是数据迁移的问题,为了解决这个版本迁移问题,官方提供了一个名为 helm-2to3 的插件可以来简化我们的迁移工作。

安装 Helm V3

为了能够让 Helm V2 CLI 包还可以继续使用,所以我们这里就不直接覆盖了,让两个版本的 CLI 包可以共存,比较迁移还是有风险的,等到我们准备好移除 V2 版本的时候再删除也不迟。

在 Helm GitHub 仓库上下载最新的 V3 Beta 版本,地址:https://github.com/helm/helm/releases,要注意选择和你系统一致的二进制包,比如我们这里是 Mac 系统,就下载MacOS amd64这个包,下载完成后解压将对应的 Helm CLI 包重命名为helm3,并移动到 PATH 路径(比如/usr/local/bin)下面去,然后我们就可以准备使用 helm3 命令了:

$ helm3 version
version.BuildInfo{Version:"v3.0.0-beta.3", GitCommit:"5cb923eecbe80d1ad76399aee234717c11931d9a", GitTreeState:"clean", GoVersion:"go1.12.9"}
$ helm repo list
NAME 	URL
stable 	http://mirror.azure.cn/kubernetes/charts/
local 	http://127.0.0.1:8879/charts
$ helm3 repo list
Error: no repositories to show

我们可以看到使用 helm3 命令查看不到我们之前配置的 chart 仓库信息。

HELM-2TO3 插件

helm-2to3 插件就可以让我们将 Helm V2 版本的配置和 release 迁移到 Helm V3 版本去。

安装的 Kubernetes 对象不会被修改或者删除,所以不用担心。接下来我们就来安装这个插件。

安装

直接使用下面的命令安装即可:

$ helm3 plugin install https://github.com/helm/helm-2to3
Downloading and installing helm-2to3 v0.1.1 ...
https://github.com/helm/helm-2to3/releases/download/v0.1.1/helm-2to3_0.1.1_darwin_amd64.tar.gz
Installed plugin: 2to3

然后可以使用 helm3 命令查看插件是否安装成功:

$ helm3 plugin list
NAME	VERSION	DESCRIPTION
2to3	0.1.1 	migrate Helm v2 configuration and releases in-place to Helm v3
$ helm3 2to3
Migrate Helm v2 configuration and releases in-place to Helm v3
Usage:
 2to3 [command]
Available Commands:
 convert migrate Helm v2 release in-place to Helm v3
 help Help about any command
 move migrate Helm v2 configuration in-place to Helm v3
Flags:
 -h, --help help for 2to3
Use "2to3 [command] --help" for more information about a command.

到这里就证明我们的 helm-2to3 插件已经安装成功了。

插件特性

现在插件支持的功能主要有两个部分:

  • 迁移 Helm V2 配置
  • 迁移 Helm V2 release

接下来我们就来分别操作下。

迁移 Helm V2 配置

首先我们需要迁移 Helm V2 版本的相关配置和数据目录:

$ helm3 2to3 move config
[Helm 2] Home directory: /Users/ych/.helm
[Helm 3] Config directory: /Users/ych/Library/Preferences/helm
[Helm 3] Data directory: /Users/ych/Library/helm
[Helm 3] Create config folder "/Users/ych/Library/Preferences/helm" .
[Helm 3] Config folder "/Users/ych/Library/Preferences/helm" created.
[Helm 2] repositories file "/Users/ych/.helm/repository/repositories.yaml" will copy to [Helm 3] config folder "/Users/ych/Library/Preferences/helm/repositories.yaml" .
[Helm 2] repositories file "/Users/ych/.helm/repository/repositories.yaml" copied successfully to [Helm 3] config folder "/Users/ych/Library/Preferences/helm/repositories.yaml" .
[Helm 3] Create data folder "/Users/ych/Library/helm" .
[Helm 3] data folder "/Users/ych/Library/helm" created.
[Helm 2] plugins "/Users/ych/.helm/plugins" will copy to [Helm 3] data folder "/Users/ych/Library/helm/plugins" .
[Helm 2] plugins "/Users/ych/.helm/plugins" copied successfully to [Helm 3] data folder "/Users/ych/Library/helm/plugins" .
[Helm 2] starters "/Users/ych/.helm/starters" will copy to [Helm 3] data folder "/Users/ych/Library/helm/starters" .
[Helm 2] starters "/Users/ych/.helm/starters" copied successfully to [Helm 3] data folder "/Users/ych/Library/helm/starters" .

上面的操作会迁移:

  • Chart starters
  • Chart 仓库
  • 插件

不过需要注意的是,请检查下所有的 Helm V2 下面的插件是否能够在 Helm V3 下面正常工作,把不起作用的插件删除即可。

现在我们再查看下 Chart 仓库信息:

$ helm3 repo list
NAME 	URL
stable 	http://mirror.azure.cn/kubernetes/charts/
local 	http://127.0.0.1:8879/charts
$ helm3 plugin list
NAME	VERSION	DESCRIPTION
2to3	0.1.1 	migrate Helm v2 configuration and releases in-place to Helm v3
push	0.7.1 	Push chart package to ChartMuseum

我们可以看到已经可以看到 Chart 仓库信息了,在 Helm V3 下面也可以使用之前 V2 版本提供的 Chart 仓库和插件了。

上面的 move config 命令会创建 Helm V3 配置和数据目录(如果它们不存在),并将覆盖repositories.yaml文件(如果存在)。

此外,该插件还支持将非默认的 Helm V2 主目录以及 Helm V3 配置和数据目录,使用如下配置使用即可:

$ export HELM_V2_HOME=$HOME/.helm2
$ export HELM_V3_CONFIG=$HOME/.helm3
$ export HELM_V3_DATA=$PWD/.helm3
$ helm3 2to3 move config

迁移 Helm V2 Release

现在我们可以开始迁移 releases 了。可以使用如下命令查看下命令的可用选项:

$ helm3 2to3 convert -h
migrate Helm v2 release in-place to Helm v3
Usage:
 2to3 convert [flags] RELEASE
Flags:
 --delete-v2-releases v2 releases are deleted after migration. By default, the v2 releases are retained
 --dry-run simulate a convert
 -h, --help help for convert
 -l, --label string label to select tiller resources by (default "OWNER=TILLER")
 -s, --release-storage string v2 release storage type/object. It can be 'secrets' or 'configmaps'. This is only used with the 'tiller-out-cluster' flag (default "secrets")
 -t, --tiller-ns string namespace of Tiller (default "kube-system")
 --tiller-out-cluster when Tiller is not running in the cluster e.g. Tillerless

可以看到最后的 --tiller-out-cluster 参数,甚至支持 Tillerless Helm v2。

现在我们来查看下 Helm V2 下面的 release,然后选择一个来测试下迁移:

$ helm list
NAME 	REVISION	UPDATED 	STATUS 	CHART 	APP VERSION	NAMESPACE
minio	 1 	Wed Sep 11 11:47:51 2019	DEPLOYED	minio-2.5.13	RELEASE.2019-08-07T01-59-21Z	argo
redis 	1 	Wed Sep 11 14:52:57 2019	DEPLOYED	redis-9.1.7 	5.0.5 	redis

上面我们也看到该迁移命令支持--dry-run选项,当然最安全的方式是先使用下该参数测试下效果:

$ helm3 2to3 convert --dry-run minio
NOTE: This is in dry-run mode, the following actions will not be executed.
Run without --dry-run to take the actions described below:
Release "minio" will be converted from Helm 2 to Helm 3.
[Helm 3] Release "minio" will be created.
[Helm 3] ReleaseVersion "minio.v1" will be created.

我们可以查看上面的dry-run模式下面的一些描述信息,没有什么问题的话就可以真正的来执行迁移操作了:

$ helm3 2to3 convert minio
Release "minio" will be converted from Helm 2 to Helm 3.
[Helm 3] Release "minio" will be created.
[Helm 3] ReleaseVersion "minio.v1" will be created.
[Helm 3] ReleaseVersion "minio.v1" created.
[Helm 3] Release "minio" created.
Release "minio" was converted successfully from Helm 2 to Helm 3. Note: the v2 releases still remain and should be removed to avoid conflicts with the migrated v3 releases.

迁移完成后,然后检查下是否成功了:

$ helm list
NAME 	REVISION	UPDATED 	STATUS 	CHART 	APP VERSION	NAMESPACE
minio	 1 	Wed Sep 11 11:47:51 2019	DEPLOYED	minio-2.5.13	RELEASE.2019-08-07T01-59-21Z	argo
redis 	1 	Wed Sep 11 14:52:57 2019	DEPLOYED	redis-9.1.7 	5.0.5 	redis
$ helm3 list
NAME 	NAMESPACE	REVISION	UPDATED 	STATUS 	CHART

我们可以看到执行helm3 list命令并没有任何 release 信息,这是因为我们迁移的 minio 这个 release 是被安装在argo这个命名空间下面的,所以需要指定命名空间才可以看到:

$ helm3 list -n argo
NAME 	NAMESPACE	REVISION	UPDATED 	STATUS 	CHART
minio	argo 	1 	2019-09-11 03:47:51.239461137 +0000 UTC	deployed	minio-2.5.13

注意:由于我们没有指定--delete-v2-releases选项,所以 Helm V2 minio 这个 release 信息还是存在的,我们可以在以后使用 kubectl 进行删除。

当你准备好迁移你所有的 releases 的时候,你可以循环helm list里面的所有 release 来自动的将每个 Helm V2 release 迁移到 Helm V3 版本去。

如果你正在使用 Tillerless Helm V2,只需要指定--tiller-out-cluster选项来迁移 release 即可:

$ helm3 2to3 convert minio --tiller-out-cluster

清理 Helm V2 数据

最后当然就是清理之前版本的旧数据了,虽然这并不是必须的,但是还是建议你清理下,可以避免一些冲突。清理 Helm V2 的数据比较简单:

  • 删除主文件夹~/.helm
  • 如果你没有使用--delete-v2-releases选项,那么旧使用 kubectl 工具来删除 Tiller releases 数据
  • 卸载掉烦人的 Tiller

Happy Helm v3 sailing~

原文链接:https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/

相关推荐

3分钟让你的项目支持AI问答模块,完全开源!

hello,大家好,我是徐小夕。之前和大家分享了很多可视化,零代码和前端工程化的最佳实践,今天继续分享一下最近开源的Next-Admin的最新更新。最近对这个项目做了一些优化,并集成了大家比较关注...

干货|程序员的副业挂,12个平台分享

1、D2adminD2Admin是一个完全开源免费的企业中后台产品前端集成方案,使用最新的前端技术栈,小于60kb的本地首屏js加载,已经做好大部分项目前期准备工作,并且带有大量示例代码,助...

Github标星超200K,这10个可视化面板你知道几个

在Github上有很多开源免费的后台控制面板可以选择,但是哪些才是最好、最受欢迎的可视化控制面板呢?今天就和大家推荐Github上10个好看又流行的可视化面板:1.AdminLTEAdminLTE是...

开箱即用的炫酷中后台前端开源框架第二篇

#头条创作挑战赛#1、SoybeanAdmin(1)介绍:SoybeanAdmin是一个基于Vue3、Vite3、TypeScript、NaiveUI、Pinia和UnoCSS的清新优...

搭建React+AntDeign的开发环境和框架

搭建React+AntDeign的开发环境和框架随着前端技术的不断发展,React和AntDesign已经成为越来越多Web应用程序的首选开发框架。React是一个用于构建用户界面的JavaScrip...

基于.NET 5实现的开源通用权限管理平台

??大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!??今天小编推荐一款基于.NE...

StreamPark - 大数据流计算引擎

使用Docker完成StreamPark的部署??1.基于h2和docker-compose进行StreamPark部署wgethttps://raw.githubusercontent.com/a...

教你使用UmiJS框架开发React

1、什么是Umi.js?umi,中文可发音为乌米,是一个可插拔的企业级react应用框架。你可以将它简单地理解为一个专注性能的类next.js前端框架,并通过约定、自动生成和解析代码等方式来辅助...

简单在线流程图工具在用例设计中的运用

敏捷模式下,测试团队的用例逐渐简化以适应快速的发版节奏,大家很早就开始运用思维导图工具比如xmind来编写测试方法、测试点。如今不少已经不少利用开源的思维导图组件(如百度脑图...)来构建测试测试...

【开源分享】神奇的大数据实时平台框架,让Flink&Spark开发更简单

这是一个神奇的框架,让Flink|Spark开发更简单,一站式大数据实时平台!他就是StreamX!什么是StreamX大数据技术如今发展的如火如荼,已经呈现百花齐放欣欣向荣的景象,实时处理流域...

聊聊规则引擎的调研及实现全过程

摘要本期主要以规则引擎业务实现为例,陈述在陌生业务前如何进行业务深入、调研、技术选型、设计及实现全过程分析,如果你对规则引擎不感冒、也可以从中了解一些抽象实现过程。诉求从硬件采集到的数据提供的形式多种...

【开源推荐】Diboot 2.0.5 发布,自动化开发助理

一、前言Diboot2.0.5版本已于近日发布,在此次发布中,我们新增了file-starter组件,完善了iam-starter组件,对core核心进行了相关优化,让devtools也支持对IAM...

微软推出Copilot Actions,使用人工智能自动执行重复性任务

IT之家11月19日消息,微软在今天举办的Ignite大会上宣布了一系列新功能,旨在进一步提升Microsoft365Copilot的智能化水平。其中最引人注目的是Copilot...

Electron 使用Selenium和WebDriver

本节我们来学习如何在Electron下使用Selenium和WebDriver。SeleniumSelenium是ThoughtWorks提供的一个强大的基于浏览器的开源自动化测试工具...

Quick 'n Easy Web Builder 11.1.0设计和构建功能齐全的网页的工具

一个实用而有效的应用程序,能够让您轻松构建、创建和设计个人的HTML网站。Quick'nEasyWebBuilder是一款全面且轻巧的软件,为用户提供了一种简单的方式来创建、编辑...