咱們能夠將Helm看做Kubernetes下的Maven/NPM. Python下的pip,Linux上的yum, Helm是Deis(https://deis.com/)
開發的一個用於kubernetes的包管理器,每一個包稱爲一個Chart,一個Chart是一個目錄(通常狀況下會將目錄進行打包壓縮,造成name version.tgz格式的單一文件,方便傳輸和存儲)
對於應用發佈者而言,能夠經過Helm打包應用, 管理應用依賴關係,管理應用版本併發布應用到軟件倉庫。
對於使用者而言,使用Helm後不用須要瞭解Kubernetes的Yaml語法並編寫應用部署文件,能夠經過Helm下載並在kubernetes上安裝須要的應用,
除此之外,Helm還提供了kubernetes上的軟件部署,刪除,升級, 回滾應用的強大功能node
- helm v2 版本
包含兩個組件,分別是 helm 客戶端 和 Tiller 服務器,
helm 是一個命令行工具,用於本地開發及管理chart,chart倉庫管理等
Tiller 負責接收 Helm 的請求,與 k8s 的 apiserver 交互
helm v3 版本
移除了Tiller helm直接和K8s交互
SA經過 kuberconfig 配置認證linux
- 設計原理
它是一個線程的方式運行
- Helm-cotroller 運行在master節點並list/walch HelmChart CRD對象
- CRD onChange時執行Job更新
- Job Container使用rancherklilpper-helm爲entrypoint
- Killper-helm內 thelm cli,能夠安裝/升級/刪除對應的chart
環境前提:
已經安裝k8s
熟練使用kubectl及yaml配置文件nginx
# 去Git下載 Helm 二進制文件(Git地址)
# 下載不了的使用我網盤下好的 (helm-v3.2.0-rc.1-linux-amd64.tar.gz 提取碼:ij5m )gittar -zxvf helm-v3.2.0-rc.1-linux-amd64.tar.gz
# 複製 helm 二進制 到bin目錄下
cp linux-amd64/helm /usr/local/bin/
設置環境變量KUBECONFIG來指定存有ApiServre的地址與token的配置文件地址,默認爲~/.kube/configgithubexport KUBECONFIG=/root/.kube/configapi
# 配置helm3倉庫
helm repo add repo_name1 https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/
# 配置helm3倉庫(忽略:此處就想試試可否加多個倉庫)
helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
# 更新
helm repo update
helm repo list服務器
# 生成chart文件 此處會生成一個 nginx的目錄 以下:
helm create nginx
tree nginx/
.
nginx/
├── charts #依賴其餘包的charts文件
├── Chart.yaml # 該chart的描述文件,包括ico地址,版本信息等
├── templates #存放k8s模板文件目錄
│ ├── deployment.yaml #建立k8s資源的yaml 模板
│ ├── _helpers.tpl #下劃線開頭的文件,能夠被其餘模板引用.
│ ├── hpa.yaml # 配置服務資源CPU 內存
│ ├── ingress.yaml # ingress 配合service域名訪問的配置
│ ├── NOTES.txt #說明文件,helm install以後展現給用戶看的內容
│ ├── service.yaml #kubernetes Serivce yaml 模板
└── values.yaml #給模板文件使用的變量併發
# 修改values.yam 裏的service的type爲 NodePort
# 安裝chart任務 (注意後面有個點)
helm install -f values.yaml nginx1 . app# 查詢release
helm ls
helm list
# 刪除release
helm delete nginx1
ide
經過K8S命令查看下 服務是否成功啓動
訪問 k8s_node_IP:31281