多环境下的 k8s 的 yaml 配置管理 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lamesbond
V2EX    Kubernetes

多环境下的 k8s 的 yaml 配置管理

  •  
  •   lamesbond 2022-12-06 13:33:37 +08:00 3597 次点击
    这是一个创建于 1041 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们现在是开发测试环境给开发自己玩,生产环境是运维部署到 k8s ,要是发新版,yaml 改了,得和开发那边人肉同步,手动改生产环境配置,想问问大佬们是怎么做的。 不用把 yaml 放开发的代码仓库里那种方式。

    第 1 条附言    2022-12-06 15:59:41 +08:00
    yaml 不放到开发那边的 git 仓库,可以放到运维的 git 仓库
    23 条回复    2023-01-30 22:47:27 +08:00
    LeegoYih
        1
    LeegoYih  
       2022-12-06 13:34:51 +08:00
    配置中心
    chendy
        2
    chendy  
       2022-12-06 13:46:26 +08:00   1
    > 不用把 yaml 放开发的代码仓库里那种方式。

    起手排除正确答案之一

    要么 git 管理+自动化工具部署
    要么数据库管理+自动化工具部署
    billzhuang
        3
    billzhuang  
       2022-12-06 14:06:33 +08:00
    你们那些 secrets 比如数据库连接字符串之类,是明文放在 yaml 里的么?
    yandong1228
        4
    yandong1228  
       2022-12-06 14:24:50 +08:00
    我边看边打字 刚写完 gitops 是你需要的
    结果看到最后你说”不用把 yaml 放开发的代码仓库里那种方式。“
    不过 gitops 不是放到开发的仓库 放到运维自己的仓库
    mango88
        5
    mango88  
       2022-12-06 14:57:48 +08:00
    可以试试这个 kustomize
    vault 之类与环境有关的配置可以与基础配置分离,改了生产的数据库连接 也不用跟开发同步
    但是不放在代码库,版本管理怎么做呢 ?
    nulIptr
        6
    nulIptr  
       2022-12-06 15:08:43 +08:00
    为啥不把 yaml 放 git ?
    mango88
        7
    mango88  
       2022-12-06 15:10:46 +08:00
    @mango88 我理解错了,你可能需要是一个 CI 工具,构建新镜像的时候就把 yaml 里面的镜像 tag 替换掉
    perfectlife
        8
    perfectlife  
       2022-12-06 15:20:54 +08:00
    @billzhuang 放配置中心里
    perfectlife
        9
    perfectlife  
       2022-12-06 15:22:02 +08:00
    yaml 单独一个仓库,ci 最后一步去 git clone yaml 然后 sed xxx 然后 git push
    S2Line
        10
    S2Line  
       2022-12-06 15:38:42 +08:00
    配置中心分租户,然后同步
    lamesbond
        11
    lamesbond  
    OP
       2022-12-06 16:08:54 +08:00
    开发是不管 k8s yaml 的,他们会加环境变量啊,加启动参数啊这些,我在部署到生产环境的时候怎么把开发改的配置同步到生产环境呢?
    我的想法是:写个工具把开发环境的 pod 配置拉下来,kubectl get pods xxx -o yaml 这样的,然后把多余字段去掉,上传到运维 git 仓库里,生产环境里直接 git pull 拉 yaml 文件,然后 kubectl apply -f
    Illusionary
        12
    Illusionary  
       2022-12-06 16:08:59 +08:00
    你需要一个云原生 CICD 工具
    kikyou12138
        13
    kikyou12138  
       2022-12-06 17:22:30 +08:00
    用 helm 管理变量,git 保存 yaml ,所有环境 yaml 都是一样的,不一样的部分都摘出来
    geekyouth
        14
    geekyouth  
       2022-12-06 18:33:20 +08:00
    hemingway
        15
    hemingway  
       2022-12-06 19:14:15 +08:00
    赞同 13 楼,用 helm 包来管理吧。
    HarveyZh
        16
    HarveyZh  
       2022-12-06 20:08:54 +08:00
    我是用 teamCity 部署,部署到哪个环境 就运行哪个环境的配置. 只要在配置中的环境变量改成当前的即可.
    eudore
        17
    eudore  
       2022-12-06 20:21:54 +08:00
    首页集群配置是不允许开发修改,其次运维缺少标准化应用模板。

    使用 git 作为版本工具保存 ci 模板和 helm 模板即可,项目使用{{git 组-git 名称}}二元组作为 cicd 唯一资源标识,根据项目的类型、语言、框架分类,cicd 配置打包和部署对每一类使用同一个模板,在 gitlab ci 一类项目引用同一个 ci 配置文件,在 k8s 部署一类项目使用同一个 helm 模板,这样将所有应用进行标准化配置,开发只需要提交代码就可以使用 cicd 自动打包部署,至于其他非应用项目固定写死就好了。

    每一类应用的应用参数都是提前配置好的不需要动,同时也是一个团队的技术规范,如果不能标准化容器操作会比较累,如果收不了开发的生产部署权限建议润。
    codingBug
        18
    codingBug  
       2022-12-07 06:44:57 +08:00 via Android
    多集群管理?
    strawberryBug
        19
    strawberryBug  
       2022-12-07 08:06:21 +08:00 via Android
    关键词 gitops 。 可以试试 argocd + git ,yaml 有变更触发自动部署
    tudou1514
        20
    tudou1514  
       2022-12-07 08:50:25 +08:00
    比较官方点就是 helm 和 kustomize ,也可以 gitops 配 Argocd
    winglight2016
        21
    winglight2016  
       2022-12-07 17:08:48 +08:00
    configmap 不就干这事儿的吗? envFrom 即可
    xabcstack
        22
    xabcstack  
       2022-12-17 17:16:01 +08:00
    runzhliu
        23
    runzhliu  
       2023-01-30 22:47:27 +08:00
    gitlab+webhook 的方式
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2724 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 08:35 PVG 16:35 LAX 01:35 JFK 04:35
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86