【发布时间】:2022-02-08 09:22:55
【问题描述】:
我有一个巨大的补丁文件,我想将其应用于特定的叠加层。我通常按照应有的方式在叠加层下修补文件。但文件是相同的,我不想将它复制到每个叠加层。如果我可以将我的补丁文件 app-new-manifest.yaml 保留在 base 下,并在 kustomization.yaml 中使用一行在覆盖下对其进行修补,那就太棒了。
├── base
│ ├── app-new-manifest.yaml # I am trying to patch this
│ ├── kustomization.yaml
│ ├── app
│ │ ├── app.yaml
│ │ └── kustomization.yaml
└── overlay
└── environment1
│ ├── kustomization.yaml # I want to patch app-new-manifest.yaml in base
│
└── environment2
│ ├── kustomization.yaml # No patch. app.yaml will be as is
│
└── environment3
├── kustomization.yaml # I want to patch app-new-manifest.yaml in base
当我尝试这样做时,我收到此错误:
'/base/app/app-new-manifest.yaml' is not in or below '/overlays/environment1'
这意味着,当您打补丁时,补丁文件必须位于覆盖而不是基础之下。有什么解决方法可以做到这一点吗?因为将同一个文件复制到每个环境对我来说没有意义。
对此的任何想法将不胜感激,谢谢!
编辑:
添加 /base/app/kustomization.yaml
resources:
- app.yaml
添加 /overlays/environment1/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base/app
patchesStrategicMerge:
- ../../base/app/app-new-manifest.yaml # Patch new manifest
自定义版本:
{Version:kustomize/v4.2.0 GitCommit:d53a2ad45d04b0264bcee9e19879437d851cb778 BuildDate:2021-07-01T00:44:28+01:00 GoOs:darwin GoArch:amd64}
【问题讨论】:
-
请提供 Kustomize 版本信息。此外,提供的错误有一个奇怪的路径:
/base/app/app-new-manifest.yaml。 /base 目录下的 kustomization.yaml 是否有正确的资源声明? -
刚刚添加了 kustomization.yamls 和版本。好吧,对我来说,这种方式不允许修补位于 base.xml 中的任何文件。我收到此错误:
security; file ‘path/base/app/app-new-manifest.yaml’ is not in or below ‘path/overlays/environmen1’并且将这个巨大的文件复制到每个环境对我来说也没有意义。 @AndrewSkorkin
标签: kubernetes kustomize