今天就跟大家聊聊有關如何了解Helm 3,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
經過了長時間的開發,Helm 3 終于在今天發布了第一個 alpha 版本。本文將簡單介紹 Helm 3 新特性。
Helm 2 是 C/S 架構,主要分為客戶端 helm
和服務端 Tiller
; 與之前版本相同,Helm 3 同樣在 Release 頁面提供了預編譯好的二進制文件。差別在于原先的二進制包下載下來你會看到 helm
和 tiller
。而 Helm 3 則只有 helm
的存在了。
Tiller
主要用于在 Kubernetes 集群中管理各種應用發布的版本,在 Helm 3 中移除了 Tiller
, 版本相關的數據直接存儲在了 Kubernetes 中。
現在我們直接在一個新創建的集群上來使用 Helm。測試集群的創建可以參考我之前的文章 使用 Kind 搭建你的本地 Kubernetes 集群。
與之前版本相同,我們需要先執行 helm init
來進行初始化。但現在的初始化就簡單了很多,不再需要給集群中部署 Tiller
了
(MoeLove) ? ~ export HELM_HOME=/tmp/helm3
(MoeLove) ? ~ helm3 init
Creating /tmp/helm3/repository
Creating /tmp/helm3/repository/cache
Creating /tmp/helm3/plugins
Creating /tmp/helm3/starters
Creating /tmp/helm3/cache/archive
Creating /tmp/helm3/repository/repositories.yaml
Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com
$HELM_HOME has been configured at /tmp/helm3.
Happy Helming!
原先,由于有 RBAC 的存在,我們在開始使用時,必須先創建一個 ServiceAccount 而現在 Helm 的權限與當前的 KUBECONFIG
中配置用戶的權限相同,非常容易進行控制。
這樣也大大增強了使用 Helm 的安全性。
這是 Helm Release 中提到的功能。 但此功能目前并不直接可用 相關 issue 也已經創建。
(MoeLove) ? ~ helm3 list
NAME NAMESPACE REVISION UPDATED STATUS CHART
redis1 default 1 2019-05-17 00:21:06.686127031 +0800 CST deployed redis-7.1.0
redis default 1 2019-05-17 00:19:28.234013017 +0800 CST deployed redis-7.1.0
(MoeLove) ? ~ helm3 -n moelove install redis1 stable/redis
Error: cannot re-use a name that is still in use
根源在于 namespace
參數的獲取實現上。
對應代碼為:
func getNamespace() string {
if ns, _, err := kubeConfig().ToRawKubeConfigLoader().Namespace(); err == nil {
return ns
}
return "default" }
直接使用 Kubeconfig 中的 Namespace 了,所以,我們可以做以下操作以使用此特性。
(MoeLove) ? ~ kubectl config current-context
kubernetes-admin@moelove
(MoeLove) ? ~ kubectl config set-context kubernetes-admin@moelove --namespace moelove
Context "kubernetes-admin@moelove" modified.
(MoeLove) ? ~ helm3 -n moelove install redis stable/redis
...# 省略輸出
(MoeLove) ? ~ helm3 list
NAME NAMESPACE REVISION UPDATED STATUS CHART
redis moelove 1 2019-05-17 00:26:44.572578745 +0800 CST deployed redis-7.1.0
可以看到,redis
這個 release 名稱可以在 moelove
這個 Namespace 中重復使用了。
在 Helm 2 中,如果沒有指定 release 的名稱,則會自動隨機生成一個名稱。但是在 Helm 3 中,則必須主動指定名稱,或者增加 --generate-name
的參數。比如:
(MoeLove) ? ~ helm3 install stable/redis
Error: must either provide a name or specify --generate-name
(MoeLove) ? ~ helm3 install stable/redis --generate-name
...# 省略輸出
(MoeLove) ? ~ helm3 list
NAME NAMESPACE REVISION UPDATED STATUS CHART
redis1 default 1 2019-05-17 00:21:06.686127031 +0800 CST deployed redis-7.1.0
redis-1558024567 default 1 2019-05-17 00:36:09.294632336 +0800 CST deployed redis-7.1.0
redis default 1 2019-05-17 00:19:28.234013017 +0800 CST deployed redis-7.1.0
簡而言之就是使用鏡像倉庫同時存儲 Docker 鏡像和 Helm 3 Chart 不過這個功能我暫時還沒驗證。之后有空再驗證。
helm serve
在 Helm 2 中,可以簡單的通過 helm serve
來啟動一個本地簡單的 HTTP 服務,用于托管本地 local repo 中的 Chart 信息。
不過這個功能在 Helm 3 中被移除了??赡苁鞘褂脠鼍坝邢?。
Helm 3 的改動還是比較大的,但是去除掉 Tiller
的選擇是非常正確的,這讓集群權限的管理更加簡單清晰。更多關于 Helm 3 的信息請關注 ReleaseNote
看完上述內容,你們對如何了解Helm 3有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。