首页 > 解决方案 > 覆盖部署.yaml中的k8s补丁库deployment.yaml

问题描述

我想在覆盖配置文件中修补 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/value从更改barfoobar。文件应该是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用于大量配置文件,我想避免更改它并不得不重构其他配置文件。

标签: kubernetes

解决方案


推荐阅读