helm安裝 玩K8S不得不會的HELM

2021-10-11 08:58:38 字數 2475 閱讀 5985

近些年隨著容器技術的流行,容器編排管理也隨之蓬勃發展,其中尤其以kubernetes(以下均簡稱為k8s)最為著名。作為devops開發人員,產品的容器化部署、發布和測試是我們關注的焦點。隨著業務的深入,配置的複雜性也隨之增長,因此我們採用helm來進行容器化應用的配置管理。

圖1 helm3 workflow

對於k8s來說,應用資源配置可以定義為k8s api物件,包括deployment,namespace,service, pv(persistent volumes)和pvc(persistentvolumeclaims)等等。通常乙個應用的部署會涉及很多資源的共同協作,使用者會定義這些api物件到一系列yaml檔案中,然後通過kubectl來逐一進行部署。

那麼問題來了,假如我沒接觸過k8s, 只想部署個應用了解下,不會寫yaml乙個個配這些資源物件怎麼破?需要去結合k8s文件學習yaml語法。過了幾天我終於學會了,乙個個配好了這些資源物件的yaml檔案,並逐一部署在這台機器上。後面想在這台機器上再重複部署幾套,另外還有十臺環境要配成和這台一樣,怎麼辦?拷貝過去再一一部署出來?這配置管理也太麻煩了,不好用,直接勸退!

先別急!幸好已經有helm,避免了我們去完成這些繁瑣配置和維護過程。它能夠把這些零零散散的應用資源檔案放在一起進行統一配置,極大方便了開發人員對k8s集群應用的管理。

圖2 helm advantages

helm中有一些自定義的概念和術語:

圖3 helm components

上面說了那麼多,現在來舉個實際的例子。首先在使用helm之前,得確保你已經先做了這幾步:

環境已經有了乙個k8s集群;

已安裝helm。

這裡就不再詳細介紹怎麼安裝了,直接參照k8s和helm官方文件。一切就緒之後,登上helm官方hub,當然也可以在命令列通過helm search直接搜尋你想要的 chart包。我在hub上搜尋到乙個confluence server的chart(s那我們就用它來試試吧。

首先將該chart倉庫新增到helm中,直接helm install即可部署乙個名為confluence的 confluence server 到k8s集群中。

圖4 安裝charts

如果一切順利的話,可以使用helm list命令檢視部署的 release,通常我會結合kubectl來檢視應用是否部署成功。通過它可以發現confluence pod已經處於執行中狀態。

圖5 helm list

這是我們使用別人的應用模板來部署應用,如果開發人員想自己定義一套應用的charts需要怎麼做呢?

首先使用helm create 命令,在當前目錄下建立了乙個相應的charts目錄結構,接下來開發人員就可以自由發揮,根據期望的應用程式來制定相應的規則。

圖6 charts 目錄結構

除了安裝部署應用之外,還可以通過helm package打包charts發布到倉庫裡,通過helm upgrade命令對部署的release進行更新 、公升級或回退等等。

模板渲染是helm的核心內容,主要依賴其模板語言和內建物件。使用模板語言編寫k8s manifest檔案,將這些模板檔案存放於charts相對應的template/目錄下,經過渲染之後提交到k8s集群中進行部署。那為什麼要進行渲染呢?

manifest檔案中有些欄位是需要不斷變動的,比如release.name, chart.name,還有一些應用的配置資訊等等。這些欄位都可以提取出來,定義其預設值在values.yaml中,在helm install的過程中該變數就會被對應的預設值動態替換掉,從而實現模板檔案與配置引數的解耦。此外還能在 helm install的命令中通過設定新的值去覆蓋對應的預設值。對於某些複雜的產品應用配置,還會繼續對values.yaml中的值進行二次渲染,以滿足更廣泛的部署或測試需求。

除了模板語言,helm的內建物件的作用是將物件從模板引擎傳遞到模板中,這裡只羅列下常用的幾大頂級物件:

通過模板語言和內建物件的配合使用,從而能夠配置出複雜的專案應用模板。

作為k8s的包管理工具,helm提供了應用配置、部署、打包發布以及版本管理等功能,helm charts的使用簡化了k8s的應用管理,對開發運維人員來說是非常便利的。這裡只是對其做了簡單的介紹,至於更多更有趣的內容,可以去helm官方文件中檢視。

k8s問題整理 安裝helm踩坑

提示找不到請求的資源 error error installing the server could not find the requested resource原因是k8s高版本加入了service account的概念,這裡可以通過下面的方式配置service account,再init即可成...

在k8s集群中使用helm安裝harbor

使用helm安裝harbor需要準備如下 1 安裝helm 2 安裝provisioner 3 安裝traefik 使用helm安裝harbor git clone 開啟看一下分支 cd harbor helm git checkout 1.1.0 進入1.1.0分支 ls cert contrib...

K8S部署helm 風清揚的Linux工作室

參考 需要映象 gcr.io kubernetes helm tiller v2.7.0重新命名乙個tag docker?pull?xsllqs kubernetes helm v2.7.0 docker?tag?xsllqs kubernetes helm v2.7.0?gcr.io kubern...