“家家泉”完成近亿元B轮融资,沣途资本领投
06-17
前言Helm V3和V2的架构变化比较大,数据迁移也比较麻烦。为了解决数据迁移问题,官方提供了helm-2to3工具。
本文基于helm-2to3工具进行V2版本的数据迁移。 Helm V3与V2之间的变化请参考Helm v3的新特性。
注意:Helm V2升级到V3版本时,Kubernetes集群中的Deployment、Service、Pod等不会重新创建,因此迁移过程不会影响线上运行的服务。安装 Helm V3 命令下载 helm 最新 v3.2.3 版本 代码语言:javascript 复制 $ wget -O /tmp/helm-v3.2.3-linux-amd64.tar.gz 解压并将代码移至 /usr/local/bin /目录 Language: javascript copy # 解压 $ tar xf /tmp/helm-v3.2.3-linux-amd64.tar.gz # 移动 $ cd /tmp/linux-amd64$ mv helm /usr/local/bin/helm3 安装 2to3插件一键安装 代码语言:javascript copy $ helm3 plugin install 2to3 插件是否安装成功 代码语言:javascript copy $ helm3 plugin listNAME VERSIONDESCRIPTION2to3 0.5.1 迁移和清理 Helm v2 配置并就地发布到Helm v3 迁移 Helm V2 配置以下操作 主要迁移: Helm Plugin Chart Warehouse Chart starters 代码语言:javascript copy $ helm3 2to3 move config check repo 和插件 代码语言:javascript copy # check repo $ helm3 repo listNAME URLstable update repo $ helm3 repo更新请耐心等待,我们从您的图表存储库中获取最新信息...成功从“稳定”图表存储库获取更新# 检查插件$ helm3 插件列表名称版本说明2to3 0.5.1 迁移和清理 Helm v2 配置并就地发布到 Helm v3 迁移 Heml V2 版本查看 2to3 插件中 Convert 子命令选项代码语言:javascript 复制$ helm3 2to3 Convert --helpmigrate Helm v2 release in-place to Helm v3Usage: 2to3 conversion [flags] RELEASEFlags: --delete-v2-releases v2 release versions are displayed after迁移。
默认情况下,保留 v2 发行版 --dry-run 模拟命令 -h, --help 转换帮助 --kube-context 要使用的 kubeconfig 上下文的字符串名称 --kubeconfig 字符串 kubeconfig 文件的路径 -l , --label 字符串标签,用于选择 Tiller 资源(默认“OWNER=TILLER”) -s, --release-storage 字符串 v2 释放存储类型/对象。它可以是“秘密”或“配置映射”。
这仅与“tiller-out-cluster”标志(默认“secrets”)一起使用 --release-versions-max int 限制每个版本转换的最大版本数。使用 0 表示无限制 (默认 10) -t, --tiller-ns Tiller 的字符串命名空间(默认“kube-system”) --tiller-out-cluster 当 Tiller 未在集群中运行时,例如Tillerless--dry-run:模拟迁移但不做真正的迁移操作,建议每次迁移时带上该参数来测试效果。
如果没有问题,那么去掉这个参数,做一次真正的迁移 --tiller-ns:通常tiller部署在k8s集群中,而不是部署在kube-system命名空间中。只指定--tiller-out-cluster:如果你的Helm V2安装了集群外的tiller(tillerless),迁移helm v2数据时请带上这个参数,查看helm v2的发布代码语言: javascript copy $ helm lsNAME REVISION更新状态图应用程序版本NAMESPACEredis 1 Mon Sep 16 19:46:58 部署 redis-9.1.3 5.0.5 默认使用 --dry-run 预览效果代码语言:javascript copy $ helm3 2to3 转换 redis --dry-run 注意:这个处于 dry-run 模式时,不会执行以下操作。
不带 --dry-run 运行将执行以下操作:Release "redis" 将从 Helm 2 转换为 Helm 3。[Helm 3] Release "redis" ” 将被创建。
[头盔3] 将创建 ReleaseVersion "redis.v1"。没有报错,去掉 --dry-run 开始迁移代码语言:javascript 复制$ helm3 2to3 conversion redisRelease "redis" 将从 Helm 2 转换为 Helm 3。
[Helm 3]将创建版本“redis”。[Helm 3] 将创建版本“redis.v1”。
[Helm 3] 创建版本“redis.v1”。[Helm 3] 创建版本“redis”。
版本“redis”已转换成功从 Helm 2 到 Helm 3。注意:v2 版本仍然保留,应删除以避免与迁移的 v3 版本发生冲突。
检查迁移结果代码语言:javascript 复制# 查看 helm v2 版本$ helm lsNAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACEredis 1 Mon Sep 16 19:46:58 部署 redis-9.1.3 5.0.5 default#检查 helm v3 release$ helm3 list -ANAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSIONredis default 1 06-15 18:19:12.8 0 CST部署redis-9.1.3 1helm v3release 为了区分命名空间,需要带上-A参数来显示所有命名空间。更新 helm 图表并通过 lint 检查图表。
语法 helm v2 Chart 语句: 代码语言:javascript copy {{- if .Values.route.tls }} tls: {{ toYaml .Values.route.tls | indent 2 }} {{- end -}}在helm v2版本中,lint没有问题,但是使用helm v3版本lint报告:在此上下文中不允许映射值。上图需要调整。
下面给出了helm v3的正确图表。模板代码语言:javascript copy {{- if .Values.route.tls }} tls: {{ toYaml.值.route.tls | indent 2 }} {{- end }} 参考链接:v3更改需要将requirements.yaml文件配置合并到Chart.yaml配置中。
配置中,Chart.yaml配置中的apiVersion: v1需要修改为v2来清理Helm。 V2 Release 使用 --dry-run 参数,helm v2 清理排练,不会清理 Release 数据代码语言: javascript copy $ helm3 2to3 cleanup --dry-run/11/14 15:06:59 注意:这个处于 dry-run 模式时,将不会执行以下操作。
/11/14 15:06:59 不带 --dry-run 运行以执行下述操作:/11/14 15:06:59WARNING: "Helm v2配置》??发布数据》发布数据》将被删除。这将清理 Helm v2 管理的所有版本。
如果您没有对版本进行备份,则无法恢复它们。之后 Helm v2 可能无法使用。
[清理/确认] 您确定要清理 Helm v2 数据吗? [y/N]: y/11/14 15:07:01Helm v2 数据将被清理。/11/14 15:07:01 [Helm 2] 版本将被删除。
/11/14 15:07:01 [Helm 2] ReleaseVersion "postgres.v1" 将被删除。/11/14 15:07:01 [Helm 2] ReleaseVersion "redis.v1" 将被删除。
/11/14 15:07:01 [Helm 2] 主文件夹“/Users/rimasm/.helm”将被删除。如果执行上述命令后没有问题,本次 cleanup V2 发布数据代码语言: javascript copy $ helm3 2to3 cleanup 执行后,Tiller Pod 会被删除,kube-system 命名空间下的 configmaps 的历史版本信息也会被删除被清除。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-17
06-17
06-18
06-18
06-17
06-17
06-18
06-18
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用