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部文章。