使用 k8s+helm 同时管理 saas 化部署和私有化部署 ,想问一下大家可以参考的最佳实践?

2023-02-15 13:06:00 +08:00
 eephee

公司的服务是属于 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 仓库吗我去瞻仰一波

1948 次点击
所在节点    Kubernetes
13 条回复
perfectlife
2023-02-15 13:22:01 +08:00
那还不如直接给客户 yaml 文件 apply ,更减少复杂度
eephee
2023-02-15 13:24:51 +08:00
@perfectlife 我可能没说清楚,k8s 配置文件我们这边是需要持续维护的,当然在部署的时候也可以生成一份 yaml 给客户
xabcstack
2023-02-15 13:26:05 +08:00
不建议使用 helm , 建议使用原生 yaml
eephee
2023-02-15 13:27:56 +08:00
@xabcstack 能说一下为什么不建议使用 helm 吗?我看蛮多人对 helm 普遍持称赞态度。

使用原生 yaml 对于我们这种多环境的情况很不方便也很不安全:如果某个服务的配置需要更改,我们就要去把每个环境的配置都改一遍,很容易遗漏。
eephee
2023-02-15 13:32:40 +08:00
刚刚又看到一个项目 helmfile ,好像也蛮不错,只是不知道用起来可不可靠

https://github.com/helmfile/helmfile/blob/main/README-zh_CN.md
runzhliu
2023-02-15 14:00:33 +08:00
用 helm 就很够了,相对 yaml 会灵活一点,前提是对 helm 比较熟悉
perfectlife
2023-02-15 16:03:42 +08:00
@eephee 自己团队用 helm 都无所谓,交付给客户还是 yaml 省劲,直观看着也方便,另外原生 yaml 没感觉多环境不方便,我们四个环境全用 yaml ,服务配置有配置中心,yaml 基本上很少变更配置,并且都是 yaml ,cicd 做起来也很省劲
liuhan907
2023-02-15 16:05:05 +08:00
其它的不多说,我觉得你们肯可以参考一下 bitnami 他们的开源 helm 仓库的写法。
yyttrr
2023-02-20 16:02:41 +08:00
长期维护而且没有网络限制的话还是用 web+后台+数据库维护吧,要不然多了肯定乱
xabcstack
2023-02-21 13:06:06 +08:00
xabcstack
2023-02-21 13:08:41 +08:00
@eephee 因为绝大多数人,没有自己独立思考能力,只能人云亦云,冷静思考一下,helm 解决了什么问题?其实什么也没解决,而原生 yaml 可读性非常好,何必多此一举使用 helm
xiaomudk
2023-02-27 13:10:02 +08:00
强烈推荐使用 helmfile, 对 helm 和 kustomize 可以根据环境一起管理起来。
最重要的,别忘了 Star(利益相关:helmfile 核心维护者),哈哈~~
eephee
2023-04-19 13:54:21 +08:00
@xiaomudk orz 大佬!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/916300

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX