覆盖部署.yaml中的k8s补丁基础部署.yaml

时间:2021-07-09 11:57:05

标签: kubernetes

我想在覆盖配置文件中修补 base/deployment.yaml 的一部分。文件夹结构为:

k8s
 |- base
  |- deployment.yaml
  |- kustomization.yaml
  |- ...
 |- overlays
  |- profile1
   |- kustomization.yaml
   |- patches
    |- deployment.yaml
  |- profile2
  |- ...

base/deployment.yalm 看起来像这样:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ${PROJECT_NAME}
spec:
  template:
    metadata:
      labels:
        app: ${PROJECT_NAME}
    spec:
      serviceAccountName: foo
      tolerations:
        - effect: NoSchedule
          key: op
          operator: Equal
          value: bar
        resources:
          limits:
            nvidia.com/gpu: 1
          requests:
            nvidia.com/gpu: 1

我想删除 spec/template/spec/resources/* 并将 spec/template/spec/tolerations/valuebar 更改为 foobar。文件 overlays/profile1/patches/deployment.yaml 应该如何显示?

结果合并应该类似于:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ${PROJECT_NAME}
spec:
  template:
    metadata:
      labels:
        app: ${PROJECT_NAME}
    spec:
      serviceAccountName: foo
      tolerations:
        - effect: NoSchedule
          key: op
          operator: Equal
          value: foobar

我查看了文档:https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/patches/,但我无法推断我的用例会发生什么。

base/deployment.yaml 用于大量配置文件,我想避免更改它而不得不重构其他配置文件。

0 个答案:

没有答案