課程目标
- 了解helm概念
- 了解helm v2與helm v3的差別
- 安裝和使用helm v3
1. helm概念
我們在kubernetes叢集中建立應用的時候,一般會使用清單檔案manifest來規範我們的應用。典型的容器化應用程式會包含很多清單。Deployment、Service和ConfigMap的清單。我們可能還會建立一些Secret、Ingress和其他對象。每一個都需要一份清單。
從1.4版本開始,為了讓軟體的部署更加的規範化,Helm項目應運而生。Helm類似于yum或者apt這樣的包管理器,而Chart類似于包。有了Helm,我們就可以打包所有這些清單檔案,并使它們作為一個單獨的tar包使用。我們可以将tar包放在一個存儲庫中,搜尋該存儲庫,發現一個應用程式,然後使用一個指令部署并啟動整個應用程式。
伺服器運作在Kubernetes叢集中,而用戶端是本地的,也可以使本地筆記本電腦。我們可以使用用戶端來連接配接到多個應用程式存儲庫。
2. helm v2與helm v3
2.1. Helm v2和Tiller
helm工具使用一系列YAML檔案将Kubernetes應用程式打包成一個chart或包。這種方式允許使用者之間簡單的共享,使用模闆方案進行優化,以及來源跟蹤等。
zgxbwiuexxtg-BasicFlow-HelmandTiller.png
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CNjFzMyUDM2IGZxYzN4kjNyMWMjNWZlVWYkJmYhRjNx8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2.2. 基礎的Helm和Tiller的流程
Helm的v2版本是由兩個元件構成的
- 伺服器端叫Tiller,運作在kubernetes叢集之中
- 用戶端叫Helm,在我們本地的機器上運作
Helm v2會在叢集中部署一個Tiller的pod,但是這樣會引發很多安全和叢集權限的問題。而Helm v3就不用部署這個pod了。
使用Helm用戶端,我們就可以浏覽包存儲庫(包含已釋出的Chart),并在Kubernetes叢集上部署這些Chart。kubernetes将下載下傳Chart并将請求傳遞給Tiller來建立應用。這個應用是由運作在Kubernetes叢集中的各種資源組成。
2.3. Helm v3
最近Helm徹底的翻修了一遍,流程和指令都有很大的改變。如果我們正在使用Helm的v2版本,那麼可能需要花些時間去更新和內建這些改變。
最顯著的變化之一就是Tiller的移除。這是一個一直存在的安全問題,因為pod需要提升權限才能部署Chart。在新版本中,這個功能被單獨放在了指令行中,不再需要初始化才能使用。
在v2中,對chart和deployment的更新需要使用雙向政策合并來完成。這需要将先前的manifest和預期的menifest進行比較,而不是在helm指令之外進行編輯。目前的檢查是使用另外的方法,檢查目前對象的狀态。
還有其他的改變,比如軟體安裝不再自動生成名稱。我們必須手動指定名稱,要不就傳遞
--generated name
參數
3. 部署helm v3
由于helm的v2版本存在一些安全問題,是以全部轉向v3是大勢所趨,這裡就不再說v2的内容了,我們直接部署v3。
- 官方文檔在這裡
- 下載下傳位址在這裡
3.1. 安裝helm
我們這裡以linux64版本舉例,我們首先要保證kubectl指令能夠正确連接配接到我們的kubernetes叢集
- 下載下傳
$ wget https://get.helm.sh/helm-v3.2.4-linux-amd64.tar.gz
- 解壓
$ tar xf https://get.helm.sh/helm-v3.2.4-linux-amd64.tar.gz
- 挪到環境變量所在的位置
mv linux-amd64/helm /usr/local/bin/helm chmod +x /usr/local/bin/helm
- 驗證是否可用
helm help The Kubernetes package manager Common actions for Helm: - helm search: search for charts - helm pull: download a chart to your local directory to view - helm install: upload the chart to Kubernetes - helm list: list releases of charts ...
- 為helm添加一個倉庫
$ helm repo add stable https://kubernetes-charts.storage.googleapis.com/
- 檢視倉庫裡面的包
helm search repo stable NAME CHART VERSION APP VERSION DESCRIPTION stable/acs-engine-autoscaler 2.2.2 2.1.1 DEPRECATED Scales worker nodes within agent pools stable/aerospike 0.2.8 v4.5.0.5 A Helm chart for Aerospike in Kubernetes stable/airflow 4.1.0 1.10.4 Airflow is a platform to programmatically autho... stable/ambassador 4.1.0 0.81.0 A Helm chart for Datawire Ambassador # ... and many more
3.2. 管理應用
- 部署應用
$ helm repo update # Make sure we get the latest list of charts $ helm install stable/mysql --generate-name Released smiling-penguin
- 列出應用
$ helm ls NAME VERSION UPDATED STATUS CHART smiling-penguin 1 Wed Sep 28 12:59:46 2016 DEPLOYED mysql-0.1.0
- 解除安裝應用
$ helm uninstall smiling-penguin Removed smiling-penguin
為了友善大家學習,請大家加我的微信,我會把大家加到微信群(微信群的二維碼會經常變)和qq群821119334,問題答案雲原生技術課堂,有問題可以一起讨論
- 個人微信
640.jpeg
- 騰訊課堂 640-20200506145837072.jpeg
- 微信公衆号 640-20200506145842007.jpeg
- 專題講座
2020 CKA考試視訊 真題講解 https://www.bilibili.com/video/BV167411K7hp
2020 CKA考試指南 https://www.bilibili.com/video/BV1sa4y1479B/
2020年 5月CKA考試真題 https://mp.weixin.qq.com/s/W9V4cpYeBhodol6AYtbxIA