如何创建不绑定特定Deployment名称的Kustomize通用Component组件
解决方案
你可以通过给补丁指定target匹配规则实现通用Component,不需要在补丁内写死Deployment名称,修改方式如下:
1. 修改Component目录下的kustomization.yaml
将原来的补丁引用改为带target规则的格式:
apiVersion: kustomize.config.k8s.io/v1alpha1 kind: Component patches: - path: deployment-sidecar.yaml target: kind: Deployment # 可选配置:仅给带有指定标签的Deployment注入sidecar,不需要可删除 # labelSelector: "inject-monitor=true"
2. 简化deployment-sidecar.yaml内容
完全移除补丁文件中的metadata字段即可,不需要指定名称:
apiVersion: apps/v1 kind: Deployment spec: template: spec: containers: - name: monitor-sidecar image: MONITOR-SIDECAR.IMG
补充说明
Kustomize的补丁规则中只要指定了target参数,就会自动匹配所有符合筛选条件的资源执行补丁操作,不需要在补丁文件内显式声明待修改资源的名称。如果需要更精细的控制,可以通过labelSelector、annotationSelector等参数筛选要注入sidecar的Deployment,避免给不需要的资源误加配置。
调整后该Component可以给任意Deployment复用,上层引用组件时不需要做额外适配,只要Deployment符合你设定的target规则就会自动注入sidecar。
内容的提问来源于stack exchange,提问作者dnf
相关产品推荐
相关产品推荐

