Github 自建一个 Helm Charts 库

发布时间 2023-09-19 17:04:13作者: 灯火消逝的码头

前言

在构建私有的 charts 仓库之前,有几个先决条件:

  • Helm 已经安装,版本号是 v3
  • 拥有一个 Github 账号

初始化仓库

在 github 仓库上新建一个仓库,我这里命名为 helm-charts,然后在安装有 helm 的系统中把克隆仓库下来。这些不用多说,都会 helm 了,git 肯定是小菜一碟。然后进入 helm-charts 目录,准备下一步的操作。

建立第一个 chart

进入我们克隆下来的仓库,当前仓库应该是空的。

cd helm-charts。

然后创建一个 chart,执行命令:

// confMap 是 chart 的名字
helm create confMap

创建完成后,删除初始化的 templates:

rm -rf confMap/templates/*

然后创建一个 k8s 的配置文件,我这里以 ConfigMap 用作示例:

// 创建confMap.yaml文件
touch confMap/templates/confMap.yaml
// confMap.yaml:
apiVersion: v1
kind: ConfigMap
metadata:
  name: configmap-test
data:
  msg: "Hello World"

ok,这样一个简单的 confMap 就已经制作完成了,接下来打包一下:

helm package confMap

成功执行命令后会在当前目录下,也就是我们的仓库下看到打包后的文件 configMap-0.1.0.tgz

然后是最终要的一步,我们需要给 charts 建立一个索引,执行命令:

// 最后一个点是指当前目录
helm repo index .

之后会在当前目录生成一个 index.yaml:

apiVersion: v1
entries:
  confMap:
  - apiVersion: v2
    appVersion: 1.16.0
    created: "2023-09-19T15:42:01.365984446+08:00"
    description: A Helm chart for Kubernetes
    digest: 136fec3a25b800d0d850ca7536a00c1f1ba3e5a95a4e27854c7ad135a4b77d81
    name: confMap
    type: application
    urls:
    - confMap-0.1.0.tgz
    version: 0.1.0
generated: "2023-09-19T15:42:01.365348311+08:00"

然后向 github 仓库推送所有文件,这步不在赘述,可以点击这里查看已经创建好的 charts。

启用 Github Pages

在 github 仓库中启用 pages,它可以把我们的仓库当作 Web 服务器对外提供服务。仓库 -> setting -> pages。在 pages 选择合适的分支即可:

安装 chart

之后我们就可以使用自己的仓库了,添加镜像:

helm repo add oldme https://oldme-git.github.io/helm-charts

执行安装:

helm install myconf oldme/confMap

查看结果

helm status myconf
// 结果
NAME: myconf
LAST DEPLOYED: Tue Sep 19 16:49:33 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

至此,我们就拥有了了一个私有的 helm 仓库。