公司的服务是属于 saas 化的一款产品,部署在华为云 k8s 集群里面。此外我们还承接针对某些客户的私有化部署,为了使部署过程更方便快捷、降低部署时因配置等导致的不稳定因素,我们决定采用 helm 来管理 k8s 配置,我也看过 kustomize ,但是感觉用起来较为复杂了所以后面还是继续使用 helm 了。
我目前的想法是:
charts/
templates/
environments/
values.dev.yaml
values.prod.yaml
values.selfhosted.yaml
values.yaml
其中 templates/ 文件夹里面存放各个服务的 deployment/service 等信息,environments/ 文件夹下面存放不同环境独有的一些变量值,最外层的 values.yaml 存放不同环境下通用的一些变量值,优先级会低于 environments/ 下面的那些文件。
我们在华为云上面的服务的 k8s 配置后面也会改成使用 helm 模板渲染出的配置,这样每次更新服务配置就只改 helm 然后生成配置,能比较好地使得不同部署环境的配置是实时同步的。
这个只是一个很简单应该也是很常规的做法,想问一下大家有没有一些最佳实践之类的可以分享一下吗?包括更合理和全面的文件夹结构、或者说将自己的服务做成一个 helm 包(感觉这个场景并不常见...)、或者大家有知道的 Git 仓库吗我去瞻仰一波
1
perfectlife 2023-02-15 13:22:01 +08:00
那还不如直接给客户 yaml 文件 apply ,更减少复杂度
|
2
eephee OP @perfectlife 我可能没说清楚,k8s 配置文件我们这边是需要持续维护的,当然在部署的时候也可以生成一份 yaml 给客户
|
3
xabcstack 2023-02-15 13:26:05 +08:00
不建议使用 helm , 建议使用原生 yaml
|
4
eephee OP @xabcstack 能说一下为什么不建议使用 helm 吗?我看蛮多人对 helm 普遍持称赞态度。
使用原生 yaml 对于我们这种多环境的情况很不方便也很不安全:如果某个服务的配置需要更改,我们就要去把每个环境的配置都改一遍,很容易遗漏。 |
5
eephee OP 刚刚又看到一个项目 helmfile ,好像也蛮不错,只是不知道用起来可不可靠
https://github.com/helmfile/helmfile/blob/main/README-zh_CN.md |
6
runzhliu 2023-02-15 14:00:33 +08:00
用 helm 就很够了,相对 yaml 会灵活一点,前提是对 helm 比较熟悉
|
7
perfectlife 2023-02-15 16:03:42 +08:00
@eephee 自己团队用 helm 都无所谓,交付给客户还是 yaml 省劲,直观看着也方便,另外原生 yaml 没感觉多环境不方便,我们四个环境全用 yaml ,服务配置有配置中心,yaml 基本上很少变更配置,并且都是 yaml ,cicd 做起来也很省劲
|
8
liuhan907 2023-02-15 16:05:05 +08:00
其它的不多说,我觉得你们肯可以参考一下 bitnami 他们的开源 helm 仓库的写法。
|
9
yyttrr 2023-02-20 16:02:41 +08:00
长期维护而且没有网络限制的话还是用 web+后台+数据库维护吧,要不然多了肯定乱
|
10
xabcstack 2023-02-21 13:06:06 +08:00
|
11
xabcstack 2023-02-21 13:08:41 +08:00
@eephee 因为绝大多数人,没有自己独立思考能力,只能人云亦云,冷静思考一下,helm 解决了什么问题?其实什么也没解决,而原生 yaml 可读性非常好,何必多此一举使用 helm
|
12
xiaomudk 2023-02-27 13:10:02 +08:00
强烈推荐使用 helmfile, 对 helm 和 kustomize 可以根据环境一起管理起来。
最重要的,别忘了 Star(利益相关:helmfile 核心维护者),哈哈~~ |