Helm用途
做为Kubernetes的一个包管理工具,Helm具有如下功能:
- 创建新的chart
- chart打包成tgz格式
- 上传chart到chart仓库或从仓库中下载chart
- 在Kubernetes集群中安装或卸载chart
- 管理用Helm安装的chart的发布周期
Helm有三个重要概念:
- chart:包含了创建Kubernetes的一个应用实例的必要信息
- config:包含了应用发布配置信息
- release:是一个chart及其配置的一个运行实例
Helm常用命令
操作类型 | 命令 |
添加仓库 | helm repo add loki https://grafana.github.io/loki/charts |
更新仓库 | helm repo update |
查看helm仓库列表 | helm repo list |
查看本地已安装的包 | helm list (ls) |
查看全部release(包括删除的...) | helm list -a |
查看helm版本 | helm version |
删除release | helm delete loki |
设置安装release名称 | --name test |
设置安装的namespace | --namespace test |
设置自定义属性 | --set "loki.serviceName=loki" |
从文件读取自定义属性集合 | -f values.yaml |
查找本地release的版本列表 | helm search testapi -l |
指定charts版本 | --version 8.2.4 |
查看安装历史 | helm history prometheus-operator |
版本回滚 | helm rollback prometheus-operator 1 |
打包chart | helm package mychart |
获取charts | helm fetch stable/mysql --version 0.2.8 --untar |
检查chart是否存在问题 | helm lint mysql |
创建一个本地仓库 | helm serve –address 0.0.0.0:8879 –repo-path ./charts |
创建一个chart | helm create mychart |
查看release状态 | helm status mysql |
更新release | helm upgrade mysql -f mysql/values.yaml --set resources.requests.memory=1024Mi mysql |
查看指定release的历史版本部署时部分配置信息 | helm get --revision 1 mysql |
对chart的模板和配置进行测试 | helm install --dry-run --debug ./ |
查看release默认配置 | helm inspect values stable/prometheus-operator |
helm目录结构(转载)
利用 helm create mychart命令创建一个mychart目录:
$ helm create mychart
Creating mychart
生成的mychart的文件结构如下:
mychart/
|-- charts
|-- Chart.yaml
|-- templates
| |-- deployment.yaml
| |-- _helpers.tpl
| |-- ingress.yaml
| |-- NOTES.txt
| `-- service.yaml
`-- values.yaml
2 directories, 7 files
生成chart目录里有Chart.yaml, values.yaml 与 NOTES.txt等文件,下面分别对chart中几个重要文件解释:
Chart.yaml 包含了chart的meta
- data,描述了Chart名称、描述信息与版本。
- values.yaml:存储了模板文件变量。
- templates/:记录了全部模板文件。
- charts/:依赖chart存储路径。
- NOTES.txt:给出了部署后的信息,例如如何使用chart、列出默认的设置等等。
helm安装方式(转载)
chart安装有以下几种方式:
- 指定chart: helm install stable/mariadb
- 指定打包的chart: helm install ./nginx-1.2.3.tgz
- 指定打包目录: helm install ./nginx
- 指定chart包URL: helm install https://example.com/charts/nginx-1.2.3.tgz
覆盖chart中的默认值,通过指定配置文件方式:
helm install -f myvalues.yaml ./redis
或者通过--set key=value形式:
helm install --set name=prod ./redis
helm删除release(转载)
利用helm delete命令删除一个chart:
helm delete mysql
确认chart是否删除:
helm ls -a mysql
即使删除的chart,其发布的历史信息还是继续被保存:
helm hist mysql
可以恢复一个已经删除的release:
helm rollback --debug mysql 2
如果希望彻底删除一个release,可以用如下命令:
helm delete --purge mysql