自建helm chart repo
无论本地储存或者把helm chart文件直接放在项目里面多少有点显得臃肿不方便,尤其对于我这种洁癖的来说就很烦。虽然有着类似helmMuseum的开源chart repo,但是搭建一个自己的还是更加舒服不是吗?而且继续薅Github的羊毛不香么?而且看官方说明也是支持薅羊毛的???
Helm chart repo原理很简单。首先,index.yaml
文件里存储着这个helm repo里所有的chart的各版本信息以及地址,helm cli添加repo的操作就是获取这个index.yaml
内信息;部署一个chart的时候就从index.yaml
指示的地址获取到chart的压缩包进行部署就完成了。所以对应过来,我们需要一个网络服务器使得index.yaml
可以被访问,还需要一个对象存储类似的储存各个chart的压缩包;这里白嫖方法也就是使用Github Pages来发布index.yaml
,使用Github Release来发布各个压缩包,发布流程可以选择本地推送打包好的chart也可以直接使用Github Action进行打包并推送。当然我们这就选择将白嫖进行到底咯~
建立Github仓库
建立一个repo,需要是public的以便使用Github Pages。选择将各个chart存放在main
分支的charts
目录下,建立gh-pages
分支作为Github Pages的分支来发布index.yaml
,效果如下:
在Settings->pages
里开启Github Pages,源就是gh-pages
分支,为了方便记忆地址装逼这里使用了自定义域名并启用强制https。自定义域名很简单,只要在域名的云解析处将helm-charts.clemon.icu
域名设置CNAME
到cjw7360.github.io
:
到这里基本的仓库准备已经好了~
设置Github Action
在main
分支下新建workflow:
1 | name: Release Charts |
这里不得不夸一夸官方了,helm/chart-releaser-action@v1.2.1
无脑一键解决方案,简直是杀人放火居家必备~
charts_repo_url
是自定义的那个域名,注意一定要加http/https
charts_dir
是chart存放的目录
高端的操作往往只需要最简单的享用
向main
分支的charts
下推送一个chart后,CI就会自动打包发布。发布用的版本号就是Chart.yaml
里面的version
,注意并不是每次push
都会发布新的,仅仅在这个版本好变化时才会发布新的chrat。这里我做了frps的chart和本blog的chart,效果还是可以的:
下面试试本地添加这个chart:
1 | helm repo add clemon https://helm-charts.clemon.icu |
搜索下刚刚frps chart:
perfect~
最后测试部署:
到这里就算大功告成了~
- 本文提及的
helm-charts
仓库地址:https://github.com/cjw7360/helm-charts,有兴趣的可以来看看~