簡體   English   中英

Kube.netes Kustomize 修補 - 無法修補位於 base 中的文件

[英]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/environment1overlay/environment3 ,您有:

resources:
   - ../patched_base

而在overlay/environment2 ,您有:

resources:
  - ../../base

我認為這可以解決您的所有要求:

  • 您只需要一個補丁實例
  • 您可以選擇是否使用每個單獨的疊加層中的補丁

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM