♦ 交互流程: Helm -> Tiller -> API Server
♦ Chart:一個helm程序包,包含運行一個應用的工具和資源定義
♦ Release: 在k8s集群上運行的一個chart實例
♦ Repository:用於存放和共享chart的倉庫;http/https服務器
程序架構
♦ Helm 本地客戶端,管理本地的chart倉庫,管理chart,與tiller服務器交互,發送chart,實例安裝、查詢、卸載等操作
♦ Tiller 服務端,接收helm發來的chart和config,合並生成release;一般運行在k8s集群上,運行在集群之外,配置起來非常麻煩
安裝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/ # sudo cp helm /usr/bin/
集群上安裝tiller:
♦ RBAC example : https://github.com/helm/helm/blob/master/docs/rbac.md
創建tiller的rbac
# cat tiller-rbac.yaml
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
生成rbac:
# kubectl apply -f tiller-rbac.yaml
安裝tiller
# helm init --service-account tiller
Helm倉庫管理:
♦ helm官方可用的chart: http://hub.kubeapps.com
# helm repo update # 更新repo倉庫
# helm repo list # 查看當前使用的倉庫
# helm repo add xxx # 添加repo地址
# helm search xxx # 搜索應用
# helm inspect xxx # 查看chart的信息,會把chart下載到本地
# helm install xxx # 安裝chart
# helm delete xxx # 刪除release
# helm upgrade/rollback xxx # 升級/回滾
# helm list # 列出release
更多用法可以使用 helm --help 查詢
Helm自定義Chart:
♦ https://helm.sh/docs/developing_charts/#charts
helm生成基礎框架
# helm create myapp
自定義修改myapp下的配置文件
檢查chart語法正確性
# helm lint myapp
打包自定義的chart
# help package myapp
打開自身作為web服務器
# helm serve
刪除release並釋放release name
# helm delete --purge xxx
我們可以自定義修改chart包中的value.yaml來實現參數的修改