[英]Kubernetes Kustomize patching - Can't patch a file located in base
我有一個巨大的補丁文件,我想將其應用於特定的疊加層。 我通常會在覆蓋層下修補文件,因為它應該是。 但是文件是一樣的,我不想將它復制到每個覆蓋層。 如果我可以將我的補丁文件app-new-manifest.yaml
保留在 base 下,並使用kustomization.yaml
中的一行在 overlay 下對其進行補丁,那就太棒了。
├── 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'
這意味着,當你打補丁時,補丁文件必須位於 overlay 而不是 base 下。 有什么解決方法嗎? 因為將相同的文件復制到每個環境對我來說沒有意義。
對此的任何想法將不勝感激,謝謝!
編輯:
添加/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.yaml
文件的目錄。 所以像這樣組織你的布局:
.
├── base
└── overlay
├── patched_based
├── environment1
├── environment2
└── environment3
在overlay/patched_base
中,放置你的補丁文件和一個 kustomization 文件,如:
resources:
- ../base
patchesStrategicMerge:
- app-new-manifest.yaml
在overlay/environment1
和overlay/environment3
,您有:
resources:
- ../patched_base
而在overlay/environment2
,您有:
resources:
- ../../base
我認為這可以解決您的所有要求:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.