我想在覆盖配置文件中修补 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
从 bar
更改为 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
用于大量配置文件,我想避免更改它而不得不重构其他配置文件。