【问题标题】:Kustomize best practice to apply the same patch to multiple base filesKustomize 将同一补丁应用于多个基础文件的最佳实践
【发布时间】:2023-02-10 10:45:53
【问题描述】:

我有一个不同版本的应用程序。每个版本的基础资源文件略有不同。但是需要应用到基础文件的补丁是相同的。将相同的补丁应用于不同的基础资源并分别具有不同的输出文件的最佳结构应该是什么。

/base1/
     /app-v1
     /kustomization.yaml
/base2/
     /app-v2
     /kustomization.yaml
/overlays/
     /dev/      
     /staging/ 

我应该如何指定资源以使与v1和v2相同的基础kustomization.yaml中的覆盖和补丁适用于不同的基础文件?

理想情况下,对不同的基础使用不同的 kustomize build 命令,但使用相同的补丁文件。

【问题讨论】:

    标签: kubernetes yaml kustomize json-patch


    【解决方案1】:

    一种方法是在 /overlays/ 中创建一个 kustomization 文件,包括来自 dev/staging/ 的补丁和配置。例如:

    $> cat ./overlays/kustomization.yaml
    resources:
    - ./dev/foo.yaml
    - ./staging/bar.yaml
    
    patchesJson6902:
    - target:
        version: v1
        groups: apps
        kind: Deployment
        name: my-app
      patch: ./dev/patch-deploy.yaml
    

    并包括来自你的 base1 和 base2 kustomization 的 overlays 文件夹:

    $> cat ./base1/kustomization.yaml
    resources:
    - ./app-v1/stuff.yaml
    - ../overlays/
    [...]
    $> cat ./base2/kustomization.yaml
    resources:
    [...]
    - ../overlays/
    

    然后,您可以从任一基本文件夹运行 kustomization,同时它们都会处理您的 overlays 文件夹的内容。

    【讨论】:

      【解决方案2】:

      你可以使用组件:https://github.com/kubernetes/enhancements/tree/master/keps/sig-cli/1802-kustomize-components

      目标:...提供允许用户定义组件的实现,即能够修改一组基本资源而不会发生冲突的可移植覆盖,因为补丁是序列化的

      这会将 /components/patch-bases/patch.yaml 应用于开发和暂存中的 base1 和 base2:

      /components/patch-bases/patch.yaml

      <a patch>
      

      /components/patch-bases/kustomization.yaml

      apiVersion: kustomize.config.k8s.io/v1alpha1
      kind: Component
      
      patches:
      - path: patch.yaml
        target: <selector matching all objects>
      

      /overlays/dev/kustomization.yaml

      bases:
      - ../../base1
      - ../../base2
      components:
      - ../../components/patch-bases
      <overlay-specific stuff>
      

      /overlays/staging/kustomization.yaml

      bases:
      - ../../base1
      - ../../base2
      components:
      - ../../components/patch-bases
      <overlay-specific stuff>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-01
        • 2012-05-03
        相关资源
        最近更新 更多