Helm 是 K8S 中的包管理器,可以非常方便的完成应用的安装、卸载、升级等,Chart 是 Helm 的打包格式,其内部包含了一组相关的 K8S 资源。
简介
直接从 Github Release 下载相应的版本
本地仓库
其中 Chart 对仓库的要求并不高,仅需要对外提供 yaml 文件和 tar 文件的 web 服务即可,在 helm2 中原本是带了本地仓库功能,不过在 helm3 移除了这部分,也就变成了一个纯粹的应用管理工具。
这里推荐 ChartMuseum 使用,支持绝大多数的云存储、开源存储等,直接从下载二进制即可。
----- 可以通过systemd维护一个本地Chart仓库
# vim /etc/systemd/system/chartmuseum.service
[Unit]
Description=chartmuseum
Requires=network-online.target
After=network-online.target
[Service]
EnvironmentFile=/etc/sysconfig/chartmuseum
User=root
ExecStart=/usr/bin/chartmuseum --port=8879 --log-json \
--storage=local --storage-local-rootdir=/opt/k8s/chart \
--basic-auth-user=admin --basic-auth-pass=YourPassword
[Install]
WantedBy=multi-user.target
----- 然后重新加载并启动服务
# systemctl daemon-reload
# systemctl start chartmuseum
直接通过 curl -u admin:YourPassword http://localhost:8879/api/charts
命令进行简单验证,此时返回为空。
其中与 helm 相关的 API 接口有如下几个:
GET /index.yaml
执行helm repo add
命令时获取 chart 列表。GET /charts/foobar-0.1.0.tgz
执行helm install
时下载对应的 chart 内容。GET /charts/foobar-0.1.0.tgz.prov
执行helm install
带有--verify
标识时进行检查。
然后可以通过如下方式使用。
----- 添加repo信息,确定是否添加成功
helm repo add local http://localhost:8879/ --username admin --password YourPassword
helm repo list
helm repo remove local
打包
----- 创建一个简单示例,会生成如下Chart相关的文件
# helm create foobar
# tree foobar/
foobar/
├── charts
├── Chart.yaml # 这个Chart的元信息,包括名字、描述、版本等
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── NOTES.txt # 对于该Chart相关介绍,例如如何使用、默认参数等
│ ├── serviceaccount.yaml
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml # 保存模板中使用的的变量
3 directories, 10 files
----- 进行简单校验,可以按需进行调整
# pushd foobar && helm lint
----- 然后直接打包,会在本地目录下生成压缩包
# popd helm package foobar --debug
----- 将包上传到本地仓库中
# curl -u admin:YourPassword --data-binary "@foobar-0.1.0.tgz" http://localhost:8879/api/charts
----- 更新本地缓存信息
# helm repo update
----- 然后就可以进行搜索了
# helm search repo foobar