Helm3 全新版本帶來了什么

Helm用途

Helm把Kubernetes資源(比如deployments舒憾、services或 ingress等) 打包到一個(gè)chart中抵卫,而chart被保存到chart倉庫仰坦。
通過chart倉庫可用來存儲(chǔ)和分享chart。
Helm使發(fā)布可配置參數(shù),支持發(fā)布應(yīng)用配置的版本管理躯砰,簡(jiǎn)化了Kubernetes部署應(yīng)用的版本控制枝恋、打包创倔、發(fā)布、刪除焚碌、更新等操作畦攘。

可以簡(jiǎn)單理解為: 應(yīng)用商店

helm3 變化

helm3 與helm2的變動(dòng)很大,主要有幾處

1. 去除Tiller 和 helm serve

現(xiàn)在helm命令通過kubeconfig 直接操作k8s集群十电,類似于kubectl
Helm使用與kubectl上下文相同的訪問權(quán)限知押,也無需再使用helm init來初始化Helm
這點(diǎn)在helm部署和使用上方便了很多,也減少了服務(wù)發(fā)布可能遇到的因?yàn)閠iller引起的異常

[圖片上傳失敗...(image-788aae-1586178269860)]

而且移除了 helm serve 的功能鹃骂,不再本地提供chart倉庫能力?

2. 預(yù)定義倉庫被移除台盯,添加helm hub

helm search 現(xiàn)在區(qū)分 repo 和hub
repo 是自己手動(dòng)添加的源
比如官方的有穩(wěn)定版和在建設(shè)的,還有ibm的

helm repo add stable https://kubernetes-charts.storage.googleapis.com
helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/
helm repo add ibmstable https://raw.githubusercontent.com/IBM/charts/master/repo/stable
# 此處 repo add 的時(shí)候畏线,如果名稱已存在了也不提醒静盅,居然直接覆蓋了,是bug吧

hub 是 helm 的中心庫寝殴,各軟件商需要在 hub 把應(yīng)用更新到最新蒿叠,我們才能在上面查到最新的,同dockerhub

這個(gè)建設(shè)還不久蚣常,好處是范圍比較廣泛, hub 搜到的包需要進(jìn)入hub頁面查看下載地址

我們可以把 hub 和 google repo 配合起來食用市咽,效果更佳

helm search hub mysql

3. Values 支持 JSON Schema 校驗(yàn)器

當(dāng)我們運(yùn)行 helm install 、 helm upgrade 抵蚊、 helm lint 施绎、 helm template 命令時(shí)曼验,JSON Schema 的校驗(yàn)會(huì)自動(dòng)運(yùn)行,如果失敗就會(huì)立即報(bào)錯(cuò)粘姜。

這樣等于是先都校驗(yàn)了一遍鬓照,再創(chuàng)建。 kubectl 說你呢孤紧,能不能學(xué)學(xué)2蝰伞!号显!

我測(cè)試了一下

helm pull stable/mysql
tar -zxvf mysql-1.6.2.tgz 
cd mysql 
vim values.yaml 
# 把port: 3306 改成 port: 3306aaa
# 安裝測(cè)試臭猜,會(huì)校驗(yàn)port的格式,而且確實(shí)是在安裝之前押蚤,一旦有錯(cuò)任何資源都不會(huì)被創(chuàng)建
helm install mysqlll .
Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: ValidationError(Service.spec.ports[0].port): invalid type for io.k8s.api.core.v1.ServicePort.port: got "string", expected "integer"

4. 代碼復(fù)用 - Library Chart 支持

Helm 3 中引入了一種新的 Chart 類型蔑歌,名為 Library Chart 。它不會(huì)部署出一些具體的資源揽碘,只能被其他的 Chart 所引用次屠,提高代碼的可用復(fù)用性。當(dāng)一個(gè) Chart 想要使用該 Library Chart內(nèi)的一些模板時(shí)雳刺,可以在 Chart.yaml 的 dependencies 依賴項(xiàng)中指定劫灶。

5. requirements.yaml 被整合到了 Chart.yaml 中,但格式保持不變

還有一些其他的功能掖桦,比如 helm test 等本昏,不屬于主要功能,且屬于測(cè)試階段枪汪,我還沒有去嘗試涌穆。

helm2/3 命令差異

本節(jié)命令差異部分摘自 https://blog.csdn.net/liumiaocn/article/details/103380446
作者: liumiaocn

Helm 2和Helm 3在使用上還是有些區(qū)別的,除了在Helm 3中移除了Tiller雀久,一些常用的命令也發(fā)生了變化宿稀,在這篇文章中進(jìn)行簡(jiǎn)單的整理。

常用命令一覽

命令 Helm 2 Helm 3 命令說明區(qū)別 命令說明
create create a new chart with the given name
delete - given a release name, delete the release from Kubernetes
dependency manage a chart’s dependencies
fetch - download a chart from a repository and (optionally) unpack it in local directory
get download a named release
history fetch release history
home - displays the location of HELM_HOME
init - initialize Helm on both client and server
inspect - inspect a chart
install install a chart archive
lint examines a chart for possible issues
list list releases
package package a chart directory into a chart archive
plugin add, list, or remove Helm plugins
repo add, list, remove, update, and index chart repositories
reset - uninstalls Tiller from a cluster
rollback roll back a release to a previous revision
search search for a keyword in charts
serve - start a local http web server
status displays the status of the named release
template locally render templates
test test a release
upgrade upgrade a release
verify verify that a chart at the given path has been signed and is valid
version print the client/server version information
env - Helm client environment information
help - Help about any command
pull - download a chart from a repository and (optionally) unpack it in local directory
show - show information of a chart
uninstall - uninstall a release

Helm3: 不再存在的Helm2的命令

在前面的文章示例中岸啡,我們發(fā)現(xiàn)helm init已經(jīng)在Helm 3中不存在了原叮。類似的共有如下7條命令赫编,在Helm 3中或刪除或改名或則功能增強(qiáng)巡蘸,比如因?yàn)門iller的去除,所以導(dǎo)致了reset命令沒有存在的意義擂送,同時(shí)init存在僅试没模客戶端需要設(shè)定的功能,所以被去除了嘹吨。另外諸如fetch命令搬味,而在Helm 3中提供了pull命令予以替代。本來home命令用于顯示HELM_HOME環(huán)境變量,而在Helm 3中提供env命令可以顯示所有的環(huán)境變量信息碰纬,用增強(qiáng)的功能予以了替換萍聊。但是無論如何,總之已經(jīng)無法在Helm 3中直接使用如下7條命令悦析。

命令 Helm 2 Helm 3 命令說明
delete given a release name, delete the release from Kubernetes
fetch download a chart from a repository and (optionally) unpack it in local directory
home displays the location of HELM_HOME
init initialize Helm on both client and server
inspect inspect a chart
reset uninstalls Tiller from a cluster
serve start a local http web server

Helm3: 相較與Helm2新增的命令

相較于Helm 2寿桨,從helm --help中獲得的信息看到如下5條命令在Helm 3中為新增的命令。

命令 Helm 2 Helm 3 命令說明
env Helm client environment information
help Help about any command
pull download a chart from a repository and (optionally) unpack it in local directory
show show information of a chart
uninstall uninstall a release

稍作分析强戴,會(huì)發(fā)現(xiàn)如下事實(shí):

env是對(duì)被刪除的命令home的強(qiáng)化
pull是對(duì)被刪除的命令fetch的替換
show是對(duì)被刪除的命令inspect的替換
help命令本身在Helm 2時(shí)代就可以使用亭螟,只是helm --help里面沒有顯示,算是文檔自包含的強(qiáng)化
uninstall是功能特性的增強(qiáng)

Helm3: 命令說明發(fā)生變化

由于Tiller的移除骑歹,版本顯示命令helm version的表述從顯示client/server的版本信息變成了顯示client的版本信息预烙,類似的發(fā)生變化的共有5條命令,到底是文檔的變化還是功能性的反映道媚,在后續(xù)的文章中將繼續(xù)通過實(shí)例進(jìn)行進(jìn)一步的說明扁掸。

命令 Helm 2 Helm 3 命令說明區(qū)別 Helm2命令說明 Helm3命令說明
get download a named release download extended information of a named release
install install a chart archive install a chart
plugin add, list, or remove Helm plugins install, list, or uninstall Helm plugins
test test a release run tests for a release
version print the client/server version information print the client version information

Helm3: 其他變化

并不是說helm --help沒有變化的,使用上就沒有區(qū)別最域,以repo和install為例也糊,在使用上都發(fā)生了變化,但是在helm自身提供的幫助信息中卻未提供羡宙,這些也會(huì)在后續(xù)的示例的使用中進(jìn)一步進(jìn)行說明狸剃。

結(jié)尾

helm3 新加的命令基本都是對(duì)helm2命令的強(qiáng)化,不再做一個(gè)個(gè)測(cè)試了狗热。

附 helm2 的學(xué)習(xí)筆記钞馁。

https://github.com/cai11745/k8s-ocp-yaml/blob/master/kubernetes-docs/2018-05-02-install-helm.md

安裝 mysql

試下mysql,并使用持久化存儲(chǔ)匿刮。

獲取chart

helm repo add stable https://kubernetes-charts.storage.googleapis.com
helm search repo mysql
# 穩(wěn)定版庫里面找到了mysql5.7僧凰,正是所需要的,下載下來
helm pull stable/mysql
tar -zxvf mysql-1.6.2.tgz 

# 查看 valume 說明熟丸,persistence 默認(rèn)已經(jīng)是enable
# 沒有使用storageclass训措,直接安裝
helm install mysql123 .

# 查看pod 和pvc,都是Pending光羞,缺少pv
建一個(gè)hostpath的pv
vim /tmp/mysql-pv.yaml 

kind: PersistentVolume
apiVersion: v1
metadata:
  name: mysql-data
  labels:
    release: stable
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /tmp/mysql-data

kubectl create -f /tmp/mysql-pv.yaml 

kubectl get po                             
NAME                       READY   STATUS    RESTARTS   AGE
mysql123-b86d7c687-9795n   1/1     Running   0          35s

參考文檔

https://developer.ibm.com/technologies/containers/blogs/kubernetes-helm-3/
https://juejin.im/post/5dd35990f265da0be72aafb4
https://blog.csdn.net/liumiaocn/article/details/103380446
https://my.oschina.net/u/3330830/blog/3157558

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绩鸣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子纱兑,更是在濱河造成了極大的恐慌呀闻,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件潜慎,死亡現(xiàn)場(chǎng)離奇詭異捡多,居然都是意外死亡蓖康,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門垒手,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蒜焊,“玉大人,你說我怎么就攤上這事科贬∩轿校” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵唆迁,是天一觀的道長(zhǎng)鸭丛。 經(jīng)常有香客問我,道長(zhǎng)唐责,這世上最難降的妖魔是什么鳞溉? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮鼠哥,結(jié)果婚禮上熟菲,老公的妹妹穿的比我還像新娘。我一直安慰自己朴恳,他們只是感情好抄罕,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著于颖,像睡著了一般呆贿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上森渐,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天做入,我揣著相機(jī)與錄音,去河邊找鬼同衣。 笑死竟块,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的耐齐。 我是一名探鬼主播浪秘,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼埠况!你這毒婦竟也來了耸携?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤询枚,失蹤者是張志新(化名)和其女友劉穎违帆,沒想到半個(gè)月后浙巫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體金蜀,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刷后,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了渊抄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尝胆。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖护桦,靈堂內(nèi)的尸體忽然破棺而出含衔,到底是詐尸還是另有隱情,我是刑警寧澤二庵,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布贪染,位于F島的核電站,受9級(jí)特大地震影響催享,放射性物質(zhì)發(fā)生泄漏杭隙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一因妙、第九天 我趴在偏房一處隱蔽的房頂上張望痰憎。 院中可真熱鬧,春花似錦攀涵、人聲如沸铣耘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜗细。三九已至,卻和暖如春怒详,著一層夾襖步出監(jiān)牢的瞬間鳄乏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工棘利, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留橱野,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓善玫,卻偏偏與公主長(zhǎng)得像水援,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茅郎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 介紹 Helm 是 Deis 開發(fā)的一個(gè)用于 Kubernetes 應(yīng)用的包管理工具蜗元,主要用來管理 Charts。...
    小波同學(xué)閱讀 1,390評(píng)論 0 4
  • 參考文檔:Helm 官網(wǎng)Helm Docs What is Helm? Helm helps you manage...
    Mokaffee閱讀 921評(píng)論 0 1
  • 概覽 ? Helm 簡(jiǎn)介 ? Helm 安裝使用 ? Helm 的基本使用 ? Helm 模板詳解之內(nèi)置函數(shù)與 V...
    51reboot閱讀 2,469評(píng)論 0 2
  • helm簡(jiǎn)介 Helm是Deis (https://deis.com/) 開發(fā)的一個(gè)用于kubernetes的包管...
    sknfie閱讀 1,087評(píng)論 0 0
  • 作為一個(gè)米農(nóng)系冗,一夜暴富奕扣,每天的心理或多或少,都有掌敬,特別是用自己信用卡或者杠桿來的資金惯豆,特別希望自己煮的米池磁,明天就能...
    米高老師閱讀 178評(píng)論 0 0