Helm:
helm就至關於Linux的包管理工具yum,但它管理的程序包是一些打包好的清單文件。
其核心術語:
Chart:一個helm程序包,它裏面可理解爲,包含了一下定義Pod的清單文件,這些清單包含Service,Deployment,DaemonSet,ReplicaSet,StatefulSet,HPA等配置信息,固然這些東西不必定都有,會根據應用不一樣,其清單內容也會有所區別,Template是模板文件,由於配置清單要能適用於各類場景,已經可以根據用戶使用場景,作一些自定義配置,好比:Nginx配置清單中要配置HTTPS,那就須要配置證書,但證書不可能提早打包到Chart中,這就須要一些機制,能經過傳遞變量的方式來適應這些自定義需求,而template就是這樣的目的而存在的,值列表就是爲Template提供傳遞變量的文件。
Repository:就是Helm的Chart倉庫,它支持HTTPS/HTTP。
Release:特定的Chart部署於目標K8s集羣上的一個實例。
chart到release的過程:
Chart---》Config ---》 Release
下圖爲Helm總體應用框架圖:
helm是做爲Helm Repository的客戶端工具,helm默認工做時,會從本地家目錄中去獲取chart,只有本地沒有chart時,它纔會到遠端的Helm Repository上去獲取Chart,固然你也能夠本身在本地作一個Chart,當須要應用chart到K8s上時,就須要helm去聯繫K8s Cluster上部署的Tiller Server,當helm將應用Chart的請求給Tiller Server時,Tiller Server接受完helm發來的charts(能夠是多個chart) 和 chart對應的Config 後,它會自動聯繫API Server,去請求應用chart中的配置清單文件,最終這些清單文件會被實例化爲Pod或其它定義的資源,而這些經過chart建立的資源,統稱爲release,一個chart可被實例化屢次,其中的某些參數是會根據Config規則自動更改,例如Pod的名字等。html
部署Helm: #下載helm 二進制文件 wget -c https://get.helm.sh/helm-v2.14.2-linux-amd64.tar.gz #下載完成後,解壓後,裏面會有helm二進制可執行文件,只須要將helm 放到 PATH 路徑下。 #參考示例: https://github.com/helm/helm/blob/master/docs/rbac.md #建立一個能在集羣級別管理Pod資源的tiller apiVersion: v1 kind: ServiceAccount metadata: name: tiller namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: tiller roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: tiller namespace: kube-system #在進行tiller server安裝時,默認是從google鏡像倉庫中下載的,但國內不少下載不下來,這裏可先從阿里雲的谷歌鏡像倉庫下載下來,
#導入本身的harbor中,或直接使用阿里的谷歌鏡像倉庫也可 #下面是我提早下載了tiller的鏡像,推到個人harbor了 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.2 #這是從谷歌鏡像倉庫下載. helm init --tiller-image harbor.zcf.com/k8s/tiller:v2.14.2 --service-account tiller --history-max 200 #若後期須要升級tiller鏡像,可直接使用下面命令 $ export TILLER_TAG=v2.0.0-beta.1 # Or whatever version you want $ kubectl --namespace=kube-system set image deployments/tiller-deploy tiller=gcr.io/kubernetes-helm/tiller:$TILLER_TAG #初始化完成後,查看版本 # helm version Client: &version.Version{SemVer:"v2.14.2", GitCommit:"a8b13cc5ab6a7dbef0a58f5061bcc7c0c61598e7", GitTreeState:"clean"} Server: &version.Version{SemVer:"v2.14.2", GitCommit:"a8b13cc5ab6a7dbef0a58f5061bcc7c0c61598e7", GitTreeState:"clean"} #作helm倉庫更新 # helm repo update #測試安裝memcached # helm install stable/memcached #查看安裝的Chart
# helm list
NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
plucking-buffalo 1 Tue Jul 30 15:55:04 2019 DEPLOYED memcached-2.9.0 1.5.12 default linux
#刪除Chart # helm delete --purge plucking-buffalo
#官方可用的helm倉庫地址
https://hub.kubeapps.comgit
#這是一個很深刻介紹helm的文章:github