创建 chart
helm create mychart
自动创建目录 mychart,生成各类 chart 文件,以此为基础进行开发。
tree mychart
mychart/
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
调试 chart
helm 提供了 debug 工具:helm lint、helm install --dry-run --debug。
helm lint 会检查 chart 语法,报告错误,给出建议。
修改 mychart/values.yaml 模拟错误,例如删除 pullPolicy: IfNotPresent
中的 :
,执行:
helm lint mychart/
// 返回
==> Linting mychart/
[INFO] Chart.yaml: icon is recommended
[ERROR] values.yaml: unable to parse YAML
error converting YAML to JSON: yaml: line 11: could not find expected ':'
Error: 1 chart(s) linted, 1 chart(s) failed
给出了错误,修复后验证通过。
helm install --dry-run --debug
会执行模拟安装:
helm install --dry-run mychart --debug
会输出每个模板生成的YAML内容,我们根据这些内容判断是否与预期相符。
安装
有4中安装方式:
- 安装仓库中的 chart,
helm install stable/nginx
- 通过 tar 包安装,
helm install ./nginx-1.2.3.tgz
- 安装本地目录,
helm install ./nginx
- 通过 url 安装,
helm install https://xxx/nginx-1.2.3.tgz
示例(本地目录方式安装刚刚创建的 mychart):
helm install mychart
1. 启动一个 httpd 容器
任何 http server 都可以用作 chart 仓库,使用docker启动一个 httpd 容器:
docker run -d -p 8081:80 -v /var/www/:/usr/local/apache2/htdocs/ httpd
2. 将 mychart 打包
helm package mychart
会生成 mychart-0.1.0.tgz 包。
3. 生成仓库 index 文件
mkdir myrepo
mv mychart-0.1.0.tgz myrepo/
helm repo index myrepo/ --url http://192.168.3.107:8081/charts
ls myrepo
index.yaml mychart-0.1.0.tgz
helm 会扫描 myrepo 目录中的所有 tgz 包并生成 index.yaml,--url 指定的是新仓库的地址。
4. 上传 index.yaml 与 mychart-0.1.0.tgz
将 index.yaml mychart-0.1.0.tgz 上传到 /var/www/charts 目录。
5. 将新仓库添加到 helm
helm repo add newrepo http://192.168.3.107:8081/charts
查看:
helm repo list
NAME URL
stable https://kubernetes-charts.storage.googleapis.com
local http://127.0.0.1:8879/charts
newrepo http://192.168.3.107:8081/charts
现在就可以查询到 mychart 了:
helm search mychart
NAME CHART VERSION APP VERSION DESCRIPTION
local/mychart 0.1.0 1.0 A Helm chart for Kubernetes
newrepo/mychart 0.1.0 1.0 A Helm chart for Kubernetes
6. 直接从仓库安装 mychart
helm install newrepo/mychart
如果以后仓库中添加了新的 chart,需要使用 helm repo update
更新本地的 index,类似 ubuntu 的 apt-get update
。