V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lamesbond
V2EX  ›  Kubernetes

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

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

    我们现在是开发测试环境给开发自己玩,生产环境是运维部署到 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   ·   实用小工具   ·   2723 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:30 · PVG 20:30 · LAX 05:30 · JFK 08:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.