您可以通过 kustomize 修补没有基础的任意资源吗?
Posted
技术标签:
【中文标题】您可以通过 kustomize 修补没有基础的任意资源吗?【英文标题】:Can you patch an arbitrary resource with no base via kustomize? 【发布时间】:2021-12-03 00:10:47 【问题描述】:我一直在尝试修补由 kops 插件(Ebs 驱动程序)声明和应用的部署。
不幸的是,在尝试了各种修补策略后,我似乎无法修补在我的文件夹结构中没有声明基的资源。
请注意,我在顶部使用 FluxCD 进行协调,在推送补丁时看不到此资源的任何更改。
这是我想要更改的 Kops 自动生成和应用的部署的摘录:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
addon.kops.k8s.io/name: aws-ebs-csi-driver.addons.k8s.io
addon.kops.k8s.io/version: 1.0.0-kops.1
app.kubernetes.io/instance: aws-ebs-csi-driver
app.kubernetes.io/managed-by: kops
app.kubernetes.io/name: aws-ebs-csi-driver
app.kubernetes.io/version: v1.0.0
k8s-addon: aws-ebs-csi-driver.addons.k8s.io
**super: unpatched**
name: ebs-csi-controller
namespace: kube-system
我的自定义文件:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: flux-system
patches:
- target:
kind: Deployment
name: ebs-csi-controller
namespace: kube-system
path: patch-ebs.yaml
以及实际的补丁-ebs.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: ebs-csi-controller
namespace: kube-system
labels:
super: patched
还尝试使用 Json 补丁 patch-ebs.json :
[
"op": "replace", "path": "/metadata/labels/super", "value": "Patched"
]
运行 kustomize 构建不会产生任何输出;
创建称为资源/基础的部署文件会生成可应用的适当补丁。
这是 Kustomize 的限制,还是我错过了什么?
感谢您的帮助!
【问题讨论】:
【参考方案1】:Kustomize 取决于引用的资源是否包含在 resources
中,或者使用内置生成器生成,以便对其进行修补或以任何方式进行变异。
需要注意的是,您可以在 kustomization 中包含与现有 ebs-csi-controller
部署相匹配的资源,并且 Kustomize 将构建可应用于现有部署之上的资源。
【讨论】:
以上是关于您可以通过 kustomize 修补没有基础的任意资源吗?的主要内容,如果未能解决你的问题,请参考以下文章
关于 Kubernetes 中通过 Kustomize 定制 Yaml资源文件的一些笔记