作者?|?Rafal?
創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)法庫,10年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
導(dǎo)讀:Helm 是 Kubernetes 的一個軟件包管理器。兩個月前,它發(fā)布了第三個主要版本,Helm 3。在這一新版本中,有許多重大變化。本文作者將介紹自己認(rèn)為最關(guān)鍵的 5 個方面。
Helm 最終移除了其服務(wù)器端組件,Tiller?,F(xiàn)在,它完全沒有代理。Tiller 之前是一個運行在 Kubernetes 上的小型應(yīng)用程序,它用于監(jiān)聽 Helm 命令并處理設(shè)置 Kubernetes 資源的實際工作。
這是 Helm3 中最重大的更改。為什么 Tiller 的移除備受關(guān)注呢?首先,Helm 應(yīng)該是一種在 Kubernetes 配置上的模板機(jī)制。那么,為什么需要在服務(wù)器上運行某些代理呢?
Tiller 本身也存在一些問題,因為它需要集群管理員的 ClusterRole 才能創(chuàng)建。因此,假設(shè)你要在 Google Cloud Platform 中啟動的 Kubernetes 集群上運行 Helm 應(yīng)用程序。首先,你需要啟動一個新的 GKE 集群,然后使用 helm init 初始化 Helm,然后…發(fā)現(xiàn)它失敗了。
這種情況之所以會發(fā)生是因為,在默認(rèn)狀態(tài)下,你沒有給你的 kubectl 上下文分配管理員權(quán)限?,F(xiàn)在你了解到了這一點,開始搜索為分配管理員權(quán)限的 magic 命令。這一系列操作下來,也許你已經(jīng)開始懷疑 Helm 是否真的是一個不錯的選擇。
此外,由于 Tiller 使用的訪問權(quán)限與你在 kubectl 上下文中配置的訪問權(quán)限不同。因此,你也許可以使用 Helm 創(chuàng)建應(yīng)用程序,但你可能無法使用 kubectl 創(chuàng)建該程序。這一情況如果沒排查出來,看起來感覺像是安全漏洞。
幸運的是,現(xiàn)在 Tiller 已經(jīng)被完全移除,Helm 現(xiàn)在是一個客戶端工具。這一更改會導(dǎo)致以下結(jié)果:
Helm 3 一直保持不變的是:它應(yīng)該只是一個在 Kubernetes API 上執(zhí)行操作的工具。如此,如果你可以使用純粹的 kubectl 命令執(zhí)行某項操作,那么也可以使用 helm 執(zhí)行該操作。
Helm 命令可以從遠(yuǎn)程倉庫安裝 Chart。在 Helm 3 之前,它通常使用預(yù)定義的中心倉庫,但你也能夠添加其他倉庫。但是從現(xiàn)在開始,Helm 將其倉庫模型從集中式遷移到分布式。這意味著兩個重要的改變:
為了能夠更好地理解這一改變,我給你們一個示例。在 Helm 3 之前,如果你想要安裝一個 Hazelcast 集群,你需要執(zhí)行以下命令:
$ helm2 install --name my-release stable/hazelcast
現(xiàn)在,這個命令不起作用了。你需要先添加遠(yuǎn)程倉庫才能進(jìn)行安裝。這是因為這里不再存在一個預(yù)定義中心倉庫。要安裝 Hazelcast 集群,你首先需要添加其倉庫然后安裝 chart:
$ helm3 repo add hazelcast https://hazelcast.github.io/charts/
$ helm3 repo update
$ helm3 install my-release hazelcast/hazelcast
好消息是現(xiàn)在 Helm 命令可以直接在 Helm Hub 中尋找 Chart。例如,如果你想知道在哪個倉庫中可以找到 Hazelcast,你只需執(zhí)行以下命令即可:
$ helm3 search hub hazelcast
以上命令列出在 Helm Hub 中所有分布式倉庫中名稱中包含 “hazelcast” 的 Chart。
現(xiàn)在,我來問你一個問題。移除掉中心倉庫是進(jìn)步還是退步?這有兩種觀點。第一種是 chart 維護(hù)者的觀點。例如,我們維護(hù) Hazelcast Helm Chart,而 Chart 中的每個更改都需要我們將其傳播到中心倉庫中。這項額外的工作使得中心倉庫中的許多 Helm Chart 沒有得到很好地維護(hù)。這一情況與我們在 Ubuntu/Debian 包倉庫中所經(jīng)歷的很相似。你可以使用默認(rèn)倉庫,但它常常只有舊的軟件包版本。
第二種觀點來自 Chart 的使用者。對于他們來說,雖然現(xiàn)在安裝一個 chart 比之前稍微困難了一些,但另一方面,他們能夠從主要的倉庫中安裝到最新的 chart。
從 Helm 3 開始,chart 維護(hù)者可以為輸入值定義 JSON Schema。這一功能的完善十分重要,因為迄今為止你可以在 values.yaml 中放入任何你所需的內(nèi)容,但是安裝的最終結(jié)果可能不正確或出現(xiàn)一些難以理解的錯誤消息。
例如,你在 port 參數(shù)中輸入字符串而不是數(shù)字。那么你會收到以下錯誤:
$ helm2 install --name my-release --set service.port=string-name hazelcast/hazelcast
Error: release my-release failed: Service in version "v1" cannot be handled as a Service:
v1.Service.Spec: v1.ServiceSpec.Ports: []v1.ServicePort: v1.ServicePort.Port: readUint32:
unexpected character: ?, error found in #10 byte of ...|","port":"wrong-name|..., bigger
context ...|fault"},"spec":{"ports":[{"name":"hzport","port":"wrong-name","protocol":
"TCP","targetPort":"hazelca|...
你不得不承認(rèn)這個問題難以分析和理解。
此外,Helm 3 默認(rèn)添加了針對 Kubernetes 對象的 OpenAPI 驗證,這意味著發(fā)送到 Kubernetes API 的請求將會被檢查是否正確。這對于 Chart 維護(hù)者來說,是一項重大利好。
Helm 測試是一個小小的優(yōu)化。盡管微小,但它也許實際上鼓勵了維護(hù)者來寫 Helm 測試以及用戶在安裝完每個 chart 之后執(zhí)行 helm test 命令。在 Helm 3 之前,進(jìn)行測試多少都顯得有些奇怪:
當(dāng)然舊的測試版本也并非不能使用,只需要使用 Pod 并始終記得執(zhí)行 helm test –cleanup。但也不得不承認(rèn),這一改進(jìn)有助于提升測試體驗。
最后一點是,Helm 命令語法有所改變。從積極的一面來看,我認(rèn)為所有的改變都是為了讓體驗更好;從消極的方面看,這一語法不與之前的版本兼容。因此,現(xiàn)在編寫有關(guān)如何使用 Helm 安裝東西的步驟時,需要明確指出所使用的命令是用于 Helm 2 還是用于 Helm 3。
舉個例子,從 helm install 開始說起?,F(xiàn)在版本名稱已經(jīng)成為必填參數(shù),盡管在 Helm 2 中你可以忽略它,名稱也能夠自動生成。如果在 Helm3 中要達(dá)成相同的效果,你需要添加參數(shù) --generate-name。所以,使用 Helm 2 進(jìn)行標(biāo)準(zhǔn)的安裝應(yīng)該如下:
$ helm2 install --name my-release --set service.port=string-
$ helm2 install --name my-release hazelcast/hazelcast
在 Helm 3 中,需要執(zhí)行以下命令:
$ helm3 install my-release hazelcast/hazelcast
還有另一個比較好的改變是,刪除 Helm 版本后,無需添加— purge。簡單地輸入命令 helm uninstall <release-name> 即可刪除所有相關(guān)的資源。
還有一些其他改變,如一些命令被重命名(不過使用舊的名稱作為別名),有一些命令則被刪除(如 helm init)。如果你還想了解更多關(guān)于 Helm 命令語法更改的信息,請參考官方文檔:https://helm.sh/docs/faq/#cli-command-renames
Helm 3 的發(fā)布,使得這一工具邁向一個新的階段。作為用戶,我十分喜歡 Helm 現(xiàn)在只是一個單純的客戶端工具。作為 Chart 維護(hù)者,Helm Hub 以及分布式倉庫的方法深得我心。我希望能在未來看到更多更有意思的改變。
如果你想了解 Helm 3 中的所有變化,請查看官方文檔:https://helm.sh/docs/faq/#changes-since-helm-2
本文轉(zhuǎn)載自:RancherLabs,點擊查看原文。
“阿里巴巴云原生關(guān)注微服務(wù)、Serverless、容器、Service Mesh 等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢、云原生大規(guī)模的落地實踐,做最懂云原生開發(fā)者的技術(shù)圈?!?/p>
名稱欄目:你不得不了解Helm3中的5個關(guān)鍵新特性
鏈接地址:http://jinyejixie.com/article40/ggeheo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、定制開發(fā)、網(wǎng)站收錄、移動網(wǎng)站建設(shè)、電子商務(wù)、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)