Helm 3预览:探索我们的未来 – 第4部

  • 2019 年 12 月 4 日
  • 筆記

作者:Matt Fisher

这是Helm 3预览:探索我们的未来博客文章7部中的第4部,讨论关于发布管理。(查看我们之前关于Chart储存库的第3部。)

应用程序的状态在Helm 3由一对对象在集群中跟踪:

  • 发布(release)对象:表示应用程序的实例
  • 发布版本秘密(release version secret):表示应用程序在特定时间点的期望状态(例如新版本的发布)

helm install创建一个发布对象和一个发布版本秘密。helm upgrade需要现有的一个发布对象(它可以修改该对象),并创建一个包含新值和呈现清单的新版本秘密。

发布对象包含关于发布的信息,其中发布是指定Chart和值的特定安装。此对象描述关于发布的顶级元数据。发布对象在应用程序生命周期中持续存在,并且是所有发布版本秘密的所有者,以及由Helm Chart直接创建的所有对象的所有者。

发布版本秘密将发布与一系列修订(安装、升级、回滚、删除)联系在一起。

在Helm 2,修订(revision)只是渐进式的。helm install创建了v1,后续升级创建了v2,依此类推。发布和发布版本秘密被分解到一个称为修订的对象中。修订存储在与Tiller相同的命名空间中,这意味着每个版本名都是在“全局”命名空间;因此,名称只能使用一个实例。

对于Helm 3来说,一个发布有一个或多个与之相关的发布版本秘密。发布对象总是描述部署到Kubernetes的当前版本。每个发布版本秘密只描述该发布的一个版本。例如,一个升级操作将创建一个新发布版本秘密,然后修改发布对象以指向这个新发布版本秘密。回滚操作可以使用旧发布版本秘密,将发布回滚到以前的状态。

Tiller消失之后,Helm 3将关于发布的数据存储在与发布目的地相同的命名空间中。此更改允许在另一个命名空间中安装具有相同发布名称的Chart,并在集群升级/重起之间在etcd中保存数据。你可以在命名空间“foo”和命名空间“bar”中安装Wordpress,两个版本都可以称为“wordpress”。

我们的下一篇博客文章讨论对Chart依赖项的更改。不要错过Helm 3预览:探索我们的未来博客系列共7部文章。