helm介紹
helm把一系列復雜的有狀態和無狀態服務的部署封裝起來(實際上就是對yaml文件的組織),然后你可以暴露出一些自定義參數信息供用戶選擇,這樣部署就會變得簡單很多.
核心術語
- Helm 是一個命令行下的客戶端工具。主要用於 Kubernetes 應用程序 Chart 的創建、打包、發布以及創建和管理本地和遠程的 Chart 倉庫。
- Tiller 是 Helm 的服務端,部署在 Kubernetes 集群中。Tiller 用於接收 Helm 的請求,並根據 Chart 生成 Kubernetes 的部署文件( Helm 稱為 Release ),然后提交給 Kubernetes 創建應用。Tiller 還提供了 Release 的升級、刪除、回滾等一系列功能。
- Chart Helm 的軟件包,采用 TAR 格式。類似於 APT 的 DEB 包或者 YUM 的 RPM 包,其包含了一組定義 Kubernetes 資源相關的 YAML 文件
- Repoistory Helm 的軟件倉庫,Repository 本質上是一個 Web 服務器,該服務器保存了一系列的 Chart 軟件包以供用戶下載,並且提供了一個該 Repository 的 Chart 包的清單文件以供查詢。Helm 可以同時管理多個不同的 Repository。
- Release 使用 helm install 命令在 Kubernetes 集群中部署的 Chart 稱為 Release
helm安裝
helm安裝
wget https://get.helm.sh/helm-v2.14.3-linux-amd64.tar.gz
tar xf helm-v2.14.3-linux-amd64.tar.gz
cd linux-amd64 #進入解壓目錄會看到兩個可執行文件helm和tiller, 若采用容器化部署到kubernetes中,則可以不用管tiller,只需將helm復制到/usr/bin目錄即可
cp helm /usr/bin/
echo "source <(helm completion bash)" >> /root/.bashrc # 命令自動補全
Tiller安裝
創建tiller相關的rbac
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.3 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
因為牆, 所以指定國內tiller鏡像, tiller標簽和helm保持一致, 這里是v2.14.3
kubectl get pods -n kube-system -l app=helm
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
初始化后通過命令查看tiller pod創建情況
helm使用
添加chart源
由於阿里的chart源可能更新不及時, 會比較老, 所以建議替換為默認源或者微軟的azure源
參考鏈接: https://github.com/BurdenBear/kube-charts-mirror
helm repo add stable http://mirror.azure.cn/kubernetes/charts/
helm repo add incubator http://mirror.azure.cn/kubernetes/charts-incubator/
基礎命令
命令 | 作用 |
---|---|
搜索chart | helm search CHARTNAME |
查看chart詳細信息 | helm inspect CHARTNAME |
安裝 | helm install --name mem1 stable/memcached [--dry-run] |
獲取狀態信息 | helm status mem1 |
列出release | helm list [-a] |
刪除release | helm delete [--purge] mem1 |
下載chart | helm fetch stable/redis |
創建chart | helm create CHARTNAME |
語法檢測 | helm lint CHARTNAME |
打包 | helm package CHARTNAME |
參考鏈接
https://www.cnblogs.com/tylerzhou/p/11100649.html
https://jimmysong.io/kubernetes-handbook/practice/helm.html