目录

用Gitea做Charts仓库

概述

当 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。

1
helm create 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
/%E7%94%A8gitea%E5%81%9Acharts%E4%BB%93%E5%BA%93/img.png

参考资料

  1. Helm Docs