自去年年初開始放風Helm v3將要開始開發,到去年年末KubeConn 上海被一堆人追問到底啥時候發版本。今年五月份,Helm v3 終於發佈了第一個alpha版本,讓咱們來一窺新版本的Helm 到底帶來了什麼。git
Helm 3最大的期待莫過於移除掉Tiller。很難想象一個開源項目,移除其中的一個核心組件會受到如此巨大的歡迎,其實絕不吝嗇的說,Helm v3 alpha 1最大的功能就是去除了tiller。github
因爲歷史緣由,tiller 在集羣應用版本管理和查詢上扮演了重要的角色。可是隨着RBAC等權限控制體系的組件完善,多租戶和安全的需求日益興起,tiller變得愈來愈不安全,社區在權限控制領域遇到了極大的阻礙。docker
移除tiller的好處主要有一下幾點:後端
helm delete
---> helm uninstall
: 曾經徹底刪除一個release須要helm delete xxx --purge
, 如今只須要uninstall
就能夠,purge
會做爲一個默認的行爲helm inspect
---> helm show
: 這裏能夠查看Chart的具體信息helm fetch
---> helm pull
: 與docker pull
看齊,爲下一步兼容registry 作鋪墊,像拉取鏡像同樣拉取Chart部署Helm v2 只使用tiller 的namespace 做爲release信息的存儲,這樣全集羣的release名字都不能重複。Helm v3只會在release安裝的所在namespace記錄對應的信息,這樣不一樣的namepsace就能夠出現相同名字的release。api
一樣的緣由,若是已經使用Helm v2建立了release,那麼就沒法使用helm v3來進行升級操做,由於沒法將原來的單一namespace信息遷移到所屬namespace 下。這一塊的遷移功能,社區正在緊鑼密鼓的開發中安全
dependencies: - name: mariadb version: 5.x.x repository: https://kubernetes-charts.storage.googleapis.com/ condition: mariadb.enabled tags: - database
dependencies: - name: mariadb version: 5.x.x repository: https://kubernetes-charts.storage.googleapis.com/ condition: mariadb.enabled tags: - database
老版本Helm 能夠直接安裝chart 並不須要指定名稱,Helm v3須要指定名稱網絡
咱們來試用一下Helm v3, 下載地址在這裏https://github.com/helm/helm/releases/tag/v3.0.0-alpha.1。 爲了防止與已經安裝的Helm v2衝突,咱們須要設置一下
$HELM_HOME set an alternative location for Helm files. By default, these are stored in ~/.helm
,好比放到/tmp目錄下。安裝完畢後,helmv3 init
初始化一下就可使用。架構
咱們使用wordpress爲例子wordpress
[root@iZ8vbbnhdit552y4lytxpiZ ~]# ./helmv3 install stabel/wordpress [root@iZ8vbbnhdit552y4lytxpiZ ~]# ./helmv3 ls NAME NAMESPACE REVISION UPDATED STATUS CHART test-v3 default 1 2019-05-27 16:50:46.100265945 +0800 CST deployed wordpress-0.6.13
能夠看到,目前已經存在的Chart能夠徹底無縫遷移到helmv3 ,徹底兼容。只是不須要tiller 來協助安裝。之前Helm v2存儲的release 都在tiller 所在的namespace。工具
[root@iZ8vbbnhdit552y4lytxpiZ ~]# kubectl get cm -n kube-system -l OWNER=TILLER NAME DATA AGE wordpress-default.v1 1 26h wordpress-default.v2 1 26h wordpress-default.v3 1 26h
這就是Helm v2存儲release 信息的地方,能夠看到都在kube-system
命名空間下。
[root@iZ8vbbnhdit552y4lytxpiZ ~]# kubectl get secret | grep word test-v3-wordpress Opaque 2 26h wordpress-default-mariadb Opaque 2 26h wordpress-default-wordpress Opaque 2 26h
在看Helm v3,全部的信息都存儲在release對應的namespace 下,並且以secret存儲。這是v2和v3很不相同的地方。
已經使用v2安裝的release,不能經過v3來升級,查看
在如何遠程託管Chart這件事上,經歷了不少次的發展。最初是保存在本地,而後是打成壓縮包,上傳到oss 等遠程存儲,而後社區出現了Chartmuseum 這樣的開源工具,提供公共的Chart託管。可是關於權限認證等方便並無很好的解決方案。同時在後端存儲方面,也沒有能像Docker Registry 那樣很好的節省空間避免重複存儲的功能。
所以全部的目光都轉向了Docker Registry,畢竟目前各大廠商都已經提供了鏡像託管功能,可否複用這個能力來託管Chart是一個很好的方向。由此微軟推出了 OCI Registry As Storage。根據鏡像 OCI 標準規範,複用Registry 來存儲Chart。這個目前已經集成到Helm v3試驗版本里面。
咱們來試用一下這個功能.
首先本地啓動一個registry
docker run -dp 5000:5000 --restart=always --name registry registry:2
而後下載一個chart包helm fetch stable/wordpress
[root@iZ8vbbnhdit552y4lytxpiZ ~]# ./helmv3 chart save wordpress localhost:5000/wordpress:latest Name: wordpress Version: 0.6.13 Meta: sha256:83c48dd3c01a2952066ead67023ea14963a88db4287650baad5ea1ddd8ff9590 Content: sha256:248c8c68f4f614003c8b1a9d78787e5f07e979e9b996981df993cf380f498c97 latest: saved [root@iZ8vbbnhdit552y4lytxpiZ ~]# ./helmv3 chart list REF NAME VERSION DIGEST SIZE CREATED localhost:5000/wordpress:latest wordpress 0.6.13 248c8c6 12.0 KiB 11 seconds [root@iZ8vbbnhdit552y4lytxpiZ ~]# ./helmv3 chart push localhost:5000/wordpress:latest The push refers to repository [localhost:5000/wordpress] Name: wordpress Version: 0.6.13 Meta: sha256:83c48dd3c01a2952066ead67023ea14963a88db4287650baad5ea1ddd8ff9590 Content: sha256:248c8c68f4f614003c8b1a9d78787e5f07e979e9b996981df993cf380f498c97 latest: pushed to remote (2 layers, 12.6 KiB total)
這樣就完成了將Chart 推送到Registry的功能。這個功能目前處於實驗性質,社區仍是但願將來你們可以都轉到這種存儲方式上來。
阿里雲容器服務是 Kubernetes 認證服務提供商(KCSP),國內惟一進入 Gartner 競爭格局的公有云容器平臺。容器服務 Kubernetes 版(ACK)是安全穩定的企業級容器平臺,支持高性能網絡和存儲,提供面向應用的異構資源統一管理,爲企業上雲提供最佳雲原生支持。
原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。