《每天5分钟玩转 Kubernetes》11 Helm - 开发 chart

创建 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中安装方式:

  1. 安装仓库中的 chart,helm install stable/nginx
  2. 通过 tar 包安装,helm install ./nginx-1.2.3.tgz
  3. 安装本地目录,helm install ./nginx
  4. 通过 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

你可能感兴趣的:(《每天5分钟玩转 Kubernetes》11 Helm - 开发 chart)