#这明星不是梦一号文教你一次性完成执掌3迁移

  

2019年,Kubernetes软件包管理器——舵发布了最新版3本舵,并且该版本已经stable.Helm 3中的一些关键特性我们在之前的文章中已经介绍过,其中一些功能吸引了许多开发人员。那么,现在你大概想知道升级/迁移到新版本的舵是否麻烦。尽管舵可能十分复杂,但是请不要担心,升级过程极为简单.Helm官方博客提供了有关迁移过程的指南,十分详细,欢迎查阅:
,
https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/
,
这篇官方指南十分直观地告诉你将版本分别迁移到舵3所需准备的一切。但是如果你想要一次性完成迁移应该怎么办呢?你如何确保在删除舵柄之前没有任何组件在使用它
,
 #明星不是梦一号文教你一次性完成执掌3迁移”> <br/>, </p>
  <h2>下载执掌3二进制文件</h2>
  <p>, </p>
  <p>我们测试执掌2以及最新版本,因此在执掌2完全卸载之前,我们应该准备好两个版本的二进制文件。下载最稳定版新本的二进制文件并将其添加到你的路径中。将现有的v2二进制文件重命名为helm2以及将最新版本重命名为helm3。我将两个版本都保存在<代码>/usr/地方/bin/<代码>中,以便我能够随时切换它们:<br/>, </p>
  <pre> <代码> ?helm2版本
  客户:,version.Version {SemVer:“v2.16.0 GitCommit:“e13bc94621d4ef666270cfbe734aaabf342a49bb GitTreeState:“清洁”}
  服务器:,version.Version {SemVer:“v2.14.3 GitCommit:“0 e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085 GitTreeState:“清洁”}
  吗?helm3版本
  GitCommit version.BuildInfo{版本:“v3.0.1”:“7 c22ef9ce89e0ebeb7125ba2ebf7d421f3e82ffa GitTreeState:“干净”,GoVersion:“go1.13.4”} </代码> </pre>
  <p>, </p>
  <h2>准备CI脚本和图</h2>
  <p>, </p>
  <p>在你运行升级流程之前,你需要确认你的CI脚本以及自定义图是否与舵3兼容。我之前写过一篇文章(https://itnext。io/breaking-changes-in-helm-3-and-how-to-fix-them-39fea23e06ff),文章中涵盖了一些需要注意的事情,其中的大部分都能够轻松解决。尽管OpenAPI验证机制很有趣,但它很有可能让你措手不及:<br/>, </p>
  <pre> <代码> ?舵安装普罗米修斯。
  错误:无法构建kubernetes对象发布清单:验证”“错误:错误验证数据:ValidationError (Deployment.spec.template.spec.containers \ [0 \] .volumeMounts \[0 \]):未知领域“defaultMode”io.k8s.api.core.v1.VolumeMount </代码> </pre>
  <p>, <br/>一旦你解决了所有这些麻烦的问题,那么就可以开始迁移到舵3啦! <br/>, </p>
  <h2>迁移执掌配置</h2>
  <p>, </p>
  <p>我在文章开头提到的舵博客文章中有这一步骤的详细描述,它将会更新所有你的本地配置以便执掌3可以使用它:</p>
  </p> <p> https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/migrate-helm-v2-configuration
  <p>, </p>
  <p>如果你在诸如Jenkins TeamCity或TravisCI之类的CI系统中的构建代理运行,那么可以这一步骤。如果你在本地机器或有持久文件系统的中央服务器中运行,那么一定要在整个配置中进行迁移,尤其是当你拥有自己的舵回购或使用自定义插件时,无论哪种方式,请确保你已经通读了这一部分,以确定是否与你有关。<br/>, </p>
  <h2>迁移版本(保留舵柄)</h2>
  <p>, </p>
  <p>现在,我们有几种方式可以实现迁移。你可以迁移特定版本到舵3来进行一些测试,具体操作在执掌官方博客中可以找到。你也可以选择迁移许多版本并将它们从分蘖中全部删除。就我个人而言,我发现一次性迁移所有版本到既定环境中更为简单,但需要将发布数据保留在舵柄中,直到确定在我们的环境中没有一处使用舵2为止。如此,就不会产生盲点,所有东西都使用相同版本的舵:<br/>, </p>
  <pre> <代码> #执掌列表2版本
  #省略——tls国旗如果你不使用tls
  版本=$(舵列表——tls aq)
  
  #循环释放,为每一个测试转换
  在IFS=阅读- r释放;做
  helm3版本2美元转换——即将发布
  & lt; & lt; & lt;   

,
你感到满意之后,可以删除<代码>——管制> 插件发挥其作用。
,

  

请注意:正如我所提到的,这里有<代码>——delete-v2-releases> ,

  

移除舵柄之前……

  

,

  

这一步是我最不想略过的一步,以防万一我们需要回滚到舵2。此时,只要你的CI系统和团队成员都在使用舵3,就没有理由保留舵柄。但如果你想完全确保没有任何组件还将会使用旧版本,那我建议你还是将舵柄保留几个小时并观察执掌ls的输出结果以查看

#这明星不是梦一号文教你一次性完成执掌3迁移