Github 自建一个 Helm Charts 库
前言
在构建私有的 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 仓库。