概要
helm 作爲kubernetes 的包管理。
主要概念
- Helm
是一個命令行下的客戶端工具
Helm 通過kubernetes的Api 渲染 模版和通訊
Helm 可以在你想要的任務地方運行 - Tiller
Tiller是Helm的服務端,部署在Kubernetes的集羣中。接收來自Helm的請求,
並根據Chart生成K8s的部署文件(Release),然後提交給K8s去創建應用。
Tiller還提供了Release的升級,刪除,回滾的功能性。 - Charts
Helm的軟件包,採用Tar格式。 - Repoistory
Helm的軟件倉庫,提供一系列Chart軟件包供用戶下載使用。 - Release
使用helm install 命令在k8s集羣部署的Chart成爲Relese;
安裝
包安裝
前往the official releases page. 去下載符合系統的安裝包,本次採用macos 系統進行安裝。
- 將包解壓後放置後的結構如下圖:
- 配置環境變量:
vi ~/.bash_profile
# 按照你的路徑配置
source ~/.bash_profile
安裝Tiller
- 執行如下命令進行安Tiller到k8s的集羣中
helm init
- 變更倉庫地址爲阿里倉庫
helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.16.9 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
注意: v2.16.9 變更爲你對應的helm版本
- 查看k8s民命空間爲
kube-system
中的tiller狀態
kubectl get po -n kube-system |grep tiller
- 創建 Kubernetes 的服務帳號和綁定角色
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
- 給 Tiller 的 deployments 添加剛纔創建的 ServiceAccount
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
- 查看 Tiller deployments 資源是否綁定 ServiceAccount
kubectl get deploy -n kube-system tiller-deploy -o yaml | grep serviceAccount
- 查看 Tiller 是否安裝成功
helm version
安裝成功後可以使用helm install xxx
進行安裝helm的應用。
注意: 如果想要移除tiller 則可以執行如下命令:
kubectl delete deployment tiller-deploy --namespace kube-system
# 或者
helm reset
命令使用
- helm 創建chart模版
helm create helm_test
生成的結構如下:
.
├── Chart.yaml
├── charts
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── ingress.yaml
│ ├── service.yaml
│ ├── serviceaccount.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
- helm 打包Chart模版
helm package helm_test
- helm search 查找可用的 Chart 模板
helm search nginx
- helm inspect 查看指定 Chart 的基本信息
helm inspect stable/nginx-ingress
- helm 回滾版本
# helm rollback [RELEASE] [REVISION]
helm rollback happy-panda 1
Chart模版介紹和使用
Chart結構介紹
.
├── Chart.yaml # Chart 信息的 YAML 文件, 包括 Chart 的版本、名稱等
├── charts # 存放子Subchart , 是一個很棒的存在
├── templates # 該目錄下存放 Chart 所有的 K8s 資源定義模板
│ ├── NOTES.txt # 一段簡短使用說明的文本文件,用於安裝 Release 後提示用戶使用
│ ├── _helpers.tpl # 存放可重用的模板片段
│ ├── deployment.yaml
│ ├── ingress.yaml
│ ├── service.yaml
│ ├── serviceaccount.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml # 當前 Chart 的默認配置的值. 注意:也可以使用 helm install --values=myvals.yaml nginx 來指定特定的配置文件
Chart使用
本來想寫這塊的使用,沒想到官方講解的很詳細。不過這裏列一下模版操作的坑,如下截圖: