近些年隨著容器技術的流行,容器編排管理也隨之蓬勃發展,其中尤其以kubernetes(以下均簡稱為k8s)最為著名。作為devops開發人員,產品的容器化部署、發布和測試是我們關注的焦點。隨著業務的深入,配置的複雜性也隨之增長,因此我們採用helm來進行容器化應用的配置管理。
對於k8s來說,應用資源配置可以定義為k8s api物件,包括deployment,namespace,service, pv(persistent volumes)和pvc(persistentvolumeclaims)等等。通常乙個應用的部署會涉及很多資源的共同協作,使用者會定義這些api物件到一系列yaml檔案中,然後通過kubectl來逐一進行部署。
那麼問題來了,假如我沒接觸過k8s, 只想部署個應用了解下,不會寫yaml乙個個配這些資源物件怎麼破?需要去結合k8s文件學習yaml語法。過了幾天我終於學會了,乙個個配好了這些資源物件的yaml檔案,並逐一部署在這台機器上。後面想在這台機器上再重複部署幾套,另外還有十臺環境要配成和這台一樣,怎麼辦?拷貝過去再一一部署出來?這配置管理也太麻煩了,不好用,直接勸退!
先別急!幸好已經有helm,避免了我們去完成這些繁瑣配置和維護過程。它能夠把這些零零散散的應用資源檔案放在一起進行統一配置,極大方便了開發人員對k8s集群應用的管理。
helm中有一些自定義的概念和術語:
上面說了那麼多,現在來舉個實際的例子。首先在使用helm之前,得確保你已經先做了這幾步:
環境已經有了乙個k8s集群;
已安裝helm。
這裡就不再詳細介紹怎麼安裝了,直接參照k8s和helm官方文件。一切就緒之後,登上helm官方hub,當然也可以在命令列通過helm search直接搜尋你想要的 chart包。我在hub上搜尋到乙個confluence server的chart(s
那我們就用它來試試吧。
首先將該chart倉庫新增到helm中,直接helm install即可部署乙個名為confluence的 confluence server 到k8s集群中。
如果一切順利的話,可以使用helm list命令檢視部署的 release,通常我會結合kubectl來檢視應用是否部署成功。通過它可以發現confluence pod已經處於執行中狀態。
這是我們使用別人的應用模板來部署應用,如果開發人員想自己定義一套應用的charts需要怎麼做呢?
首先使用helm create 命令,在當前目錄下建立了乙個相應的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官方文件中檢視。
helm安裝 玩K8S不得不會的HELM
近些年隨著容器技術的流行,容器編排管理也隨之蓬勃發展,其中尤其以kubernetes 以下均簡稱為k8s 最為著名。作為devops開發人員,產品的容器化部署 發布和測試是我們關注的焦點。隨著業務的深入,配置的複雜性也隨之增長,因此我們採用helm來進行容器化應用的配置管理。圖1 helm3 wor...
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...