概述
当 K8S 集群引入越来越多的组件之后,要维护的 Helm Charts 的数量会越来越多,业界关于存储 Helm Charts 的方式也有很多种,常见的有 Harbor,以及 ChartMuseum 等等,笔者一开始也在使用这些工具,但长久以来还是会有一些问题,比如很多 Charts 的 Values 文件,甚至 Templates 下的文件都会经过多次修改,怎么维护这些文件的版本就变成一个问题,也有很多人会同时在 Git 上管理这些文件,因为这样可以记录文件的修改情况,但修改完打包之后,又要上传到 Harbor 或者 ChartMuseum 上,这个过程就变得很繁琐了。
因此本文主要是介绍,如何用 Git 管理 Helm Charts,同时用 Git 作为 Helm Charts 的仓库用于给 K8S 分发和安装指定版本的组件。
目录结构
首先常见一个测试的 Git 文件夹,并且创建一个 test 文件夹,用于存放测试的 Helm Charts。
1
2
|
mkdir private-helm-charts
mkdir private-helm-charts/test
|
然后进入文件夹 test 文件夹内通过 Helm 的命令创建一个测试的 Helm Charts,命名为 test-chart。
然后通过 Helm 的命令将 test-chart 打包成 tgz 文件。
1
|
helm package test-chart
|
再通过 Helm 的命令,在 private-helm-charts 目录下创建一个 index.yaml 文件,这个文件也是作为 Helm Charts Repository 的索引文件,其中 https://gitea.cat.dog/runzhliu/private-helm-charts 是笔者个人的 Gitea 项目的测试地址,读者可以换成自己的地址。
1
|
helm repo index . --url https://gitea.cat.dog/runzhliu/private-helm-charts/raw/main/
|
可以查看一个 index.yaml 文件的内容。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
apiVersion: v1
entries:
test-chart:
- apiVersion: v2
appVersion: 1.16.0
created: "2025-05-11T20:28:16.406132+08:00"
description: A Helm chart for Kubernetes
digest: b778aac1580a3aa70bfa8d3196612d82cb5fbc9dd6ad1e9fdcbf5cbeab85b2da
name: test-chart
type: application
urls:
- https://gitea.cat.dog/runzhliu/private-helm-charts/raw/main/test/test-chart-0.1.0.tgz
version: 0.1.0
generated: "2025-05-11T20:28:16.402903+08:00"
|
按照上面的测试过程,下面是目录结构,最后通过 git push 到 Gitea 上即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# tree private-helm-charts
.
├── index.yaml
└── test
├── test-chart
├── Chart.yaml
├── charts
├── templates
├── NOTES.txt
├── _helpers.tpl
├── deployment.yaml
├── hpa.yaml
├── ingress.yaml
├── service.yaml
├── serviceaccount.yaml
└── tests
└── test-connection.yaml
└── values.yaml
└── test-chart-0.1.0.tgz
|
之后我们可以通过 Helm 的命令来添加这个 Repository,并且通过这个 Repository 就可以把 Helm Charts 安装到 K8S 集群上。
1
|
helm repo add private-test https://gitea.cat.dog/runzhliu/helm-charts/raw/main
|
参考资料
- Helm Docs