Kubernetes 包管理理 工具 Helm 蔺礼强 <liqlin@cn.ibm.com>
Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes 的 日志与监控 8. Kubernetes 的应 用部署 9. 扩展 Kubernetes 生态 10. Kubernetes 的企业实践 课程 Wiki:http://ibm.biz/opentech-ma
Helm 架构 q Helm o Helm CLI 部署 Tiller server o 管理理 Chart repository o 管理理 Chart package q Tiller o 管理理 Release q Chart package/repository
安装 Helm Helm 最新 release v2.7.2 https://github.com/kubernetes/helm/releases/tag/v2.7.2 初始化 Helm 部署 Tiller 初始化本地 cache 舒适化本地 Chart repository # helm init Creating /root/.helm Creating /root/.helm/repository Creating /root/.helm/repository/cache Creating /root/.helm/repository/local Creating /root/.helm/plugins Creating /root/.helm/starters Creating /root/.helm/cache/archive Creating /root/.helm/repository/repositories.yaml $HELM_HOME has been configured at /root/.helm. Happy Helming!
添加 chart repository 添加新的 repository helm repo add incubator https://kubernetes-chartsincubator.storage.googleapis.com/ # helm repo list NAME URL stable https://kubernetes-charts.storage.googleapis.com local http://127.0.0.1:8879/charts incubator https://kubernetes-charts-incubator.storage.googleapis.com/ 更更多 repository 操作 删除 更更新 为本地 repository 生成 index.yaml
安装 Helm chart 查找 Helm chart # helm search mariadb NAME VERSION DESCRIPTION stable/mariadb 2.1.1 Fast, reliable, scalable, and easy to use open-... 查看 Helm chart 信息 # helm inspect stable/mariadb 安装 Helm chart # helm install --name=mymariadb --namespace=demo --set persistence.enabled=false stable/mariadb # helm list NAME REVISION UPDATED STATUS CHART NAMESPACE mymariadb 1 Tue Dec 5 02:52:33 2017 DEPLOYED mariadb-2.1.1 demo # helm get mymariadb
Helm Chart q Chart 描述 o 名称版本信息 o 应 用简介 o 其他 q REAME.md o 如何安装配置以及验证应 用 q values.yaml o 应 用的配置参数 q Templates o 创建应 用需要的 Kubernetes resources q charts 目录和 requirements.yaml o 定义应 用依赖
Helm Chart 创建 sample Helm chart # helm create mychart 创建应 用 q 修改 Chart.yaml q 根据应 用编写相应的 Kubernetes resources q 编写测试 yaml q 修改 values.yaml q 修改 NOTES.txt q 创建 README.md 检查 chart 语法 # helm lint mychart ==> Linting mychart/ [INFO] Chart.yaml: icon is recommended 1 chart(s) linted, no failures
Helm Chart 测试 Helm chart # helm install --namespace=demo --name=mychart mychart/ NAME: mychart NAMESPACE: demo STATUS: DEPLOYED 打包 Helm chart 信息 # helm package mychart/ Successfully packaged chart and saved it to: /root/demo/mychart-0.1.0.tgz # ls -l mychart-0.1.0.tgz -rw-r--r--. 1 root root 2407 Dec 5 07:38 mychart-0.1.0.tgz 上传新的 chart 包并更更新 chart 仓库 index.yaml # helm repo index --url http://myrepo:9090. # ls -l index.yaml -rwxr-xr-x. 1 root root 362 Dec 5 07:41 index.yaml
Helm Release Tiller 如何存储 release # kubectl get configmap --namespace=kube-system grep mariadb mymariadb.v1 1 3h mymariadb.v2 1 2h mymariadb.v3 1 10m release 对应的 Kubernetes resources
Helm Release Upgrade release # helm upgrade mymariadb stable/mariadb --namespace=demo --version=0.5.2 Release "mymariadb" has been upgraded. Happy Deployment/StatefulSet/DaemonSet upgrade # kubectl rollout history deployment/mymariadb-mariadb --namespace=demo deployments "mymariadb-mariadb REVISION CHANGE-CAUSE 1 <none> 2 <none> # kubectl --namespace=demo get rs NAME DESIRED CURRENT READY AGE mymariadb-mariadb-746df79597 0 0 0 1h mymariadb-mariadb-7f5576745f 1 1 1 3h
Helm Release 查看 release history # helm history mymariadb REVISION UPDATED STATUS CHART DESCRIPTION 1 Tue Dec 5 02:52:33 2017 SUPERSEDED mariadb-2.1.1 Install complete 2 Tue Dec 5 04:28:47 2017 DEPLOYED mariadb-0.5.2 Upgrade complete Rollback release # helm rollback --force --recreate-pods mymariadb 1 Rollback was a success! Happy Helming! # kubectl rollout history deployment/mymariadb-mariadb --namespace=demo deployments "mymariadb-mariadb REVISION CHANGE-CAUSE 2 <none> 3 <none>
Helm Repository index.yaml q Chart.yaml 对于 chart 的描述信息 q 可以下载 Chart package 的 URL q helm repo index 帮助 生成 repository 的 index.yaml {resource type} Chart package list q Chart tgz package 需要放到 目标 http server 上 q Helm lint 和 helm package 命令帮助检查 chart 语法和打包 # helm serve address 0.0.0.0:8879 repo-path./charts
Helm UI - Monocular
Helm UI Kubernetes Dashboard
Helm UI Private
Helm RESTful API Rudder Helm repository 以及 Tiller 的 RESTful API. https://github.com/acalephstorage/rudder Monocular API Golang Http RESTful API server https://github.com/kubernetes-helm/monocular/tree/v0.6.1/src/api
Thank You