1
Rubbick 2021-10-29 17:07:00 +08:00
我是环境变量注入+配置中心
|
2
simon7878 2021-10-29 17:14:27 +08:00
helm3+values 定制方式可以的吧,实际就是把变化的部分拎出来单独管理,实现自动化。
|
3
liuxu 2021-10-29 17:15:10 +08:00
我是一个 helm 包下面多个 values.yaml ,helm 可以指定 value 文件 --values xx.yaml
|
4
vast0906 2021-10-29 17:24:47 +08:00 1
我们是 jenkins + ansible + k8s 发布的。。ansible 的 template
|
5
YzSama 2021-10-29 17:35:41 +08:00
helm 做一个包,通过环境变量注入。
|
6
jeffreystoke 2021-10-29 18:41:38 +08:00
同样的痛点, 我一直觉得 kustomize 的路走错了, helm 更适合需要大量动态调整的复杂部署 (可能是我看问题的高度不够?)
为了解决这个问题, 外加需要管理多个仓库里的 yaml 配置并且实现重用以便统一结果, 我自己开发了一个工具 dukkha, 但是目前还没有实际用到生产环境中 (项目地址: https://github.com/arhat-dev/dukkha ) 对应到你的需求可以用 dukkha 这么管理: 首先给不同环境创建 host-alias.yml 文件 production 环境: inventory/production/host-alias.yml ```yaml - hostnames: - production-foo ip: ... ``` dev 环境: inventory/dev/host-alias.yml ```yaml - hostnames: - dev-foo ip: ... ``` ```yaml apiVersion: v1 kind: Pod spec: hostAliases@env|file: inventory/${ENVIRONMENT}/host-alias.yml ``` 把目录结构建好, 然后在不同环境里面设置好 ENVIRONMENT 变量 (production/dev) 即可使用 `dukkha render` 进行渲染 有进一步了解需求的话, 可以看项目里的文档, 应该是够用的 另外如果想深入讨论相关内容的, 欢迎邮件到 aW5xdWlyaWVzQGFyaGF0LnNvbHV0aW9ucw== , 内容需要注明 v2 用户名以及一个可交叉验证身份的第三方平台链接 (如 github 用户链接) |
7
locoz 2021-10-29 20:07:19 +08:00 via Android
试试 flux ?虽然我只有一个环境,但是按官方文档的说法是方便管理多环境用的。
|
8
huangmingyou OP @jeffreystoke 看上去不错,我研究研究
|
9
huangmingyou OP @locoz 不错的项目,先看看
|
10
huangmingyou OP @locoz 看了一下,这个工具对我的需求来说太重了,这看上去是一个野心很大的工具,啥都想管,而且有点类似 ansible 的思路,让配置和运行状态保持同步。
|
11
huangmingyou OP @jeffreystoke 用下面的命令测试一下,KENV=pro dukkha render my.yml ;
符合预期,具体到 k8s 的场景,我还的研究下怎么组织文件,可能需要组合 4 ,5 个文件。 看上去比较方便,似乎还能支持执行脚本? |
12
jeffreystoke 2021-10-29 22:15:15 +08:00 via Android
@huangmingyou 是的,还支持从远程 http 服务拉取配置,以及 git ssh 仓库抽取配置( renderer 文档部分)
|
13
RedrumSherlock 2021-10-29 23:38:34 +08:00 via Android
我们是主用 helm 的,单个 helm chart 通用的放 values.yaml ,随环境变化的放各自 profile 的 values.yaml ,多个 chart 公用的通过环境变量用 helm 的 set 来做,目前体验还行
|
14
zqcolor 2021-10-30 00:01:44 +08:00
argocd + helm
|
15
plko345 2021-10-30 00:51:58 +08:00 via Android
helm 完全能解决你的问题
|
16
huangmingyou OP 对于企业内部部署,能管理生成 yaml 基本够用了,用 helm 感觉有点重,每次一看 helm 文档,就看到大堆的文件需要定义就头大。
|
17
37Y37 2021-10-30 09:15:13 +08:00
我们全部给做成系统了,任务系统,通过不同变量(环境 /项目)动态创建,https://blog.ops-coffee.cn/s/U88HPUYiVDar-7yBx3IoIA
|
19
vast0906 2021-11-01 09:08:04 +08:00
@zhaoyeye deployment 之类的写到 template 里面,不同应用拥有自己的 vars.json ,在执行 playbook 的时候 -e 选择相对应的 vars.json
|
20
huangmingyou OP @vast0906 var 文件可以用多个吗,例如把项目的 var 和环境的 var 带入到 templte . 能发一下文件目录的组织结构例子吗?
|
21
cheng6563 2021-11-01 09:39:14 +08:00
直接写 k8s 的 yml 。然后 jenkins 部署时用 yq 脚本修改更新。
|
22
vast0906 2021-11-01 14:04:52 +08:00
@huangmingyou
``` groups/xxx ├── hosts │ ├── prod │ └── test └── vars ├── prod.json └── test.json ``` ├── base │ ├── tasks │ │ └── main.yml │ └── templates │ └── deployment.yml.j2 ingress svc pvc 之类的 按照 deployment.yml.j2 这种来写 |
23
huangmingyou OP @vast0906 谢谢!
|
24
xabcstack 2021-11-02 18:55:48 +08:00
推荐一下 https://github.com/ywgx/ki 这个管理多个 k8s 的利器
|