3

在 Kubernetes 中,我有一个基本的 kustomize 包和两个补丁,每个补丁调整基础的不同方面 - 一个用于大型部署,另一个用于使用旧映像而不是当前映像。有没有一种方法可以创建一个“组合”补丁 - 具有两个更改的补丁,而无需复制大型和旧补丁内容?

- base/
- large-deployment-patch/
- legacy-image-patch/

当我尝试简单地将两个补丁用作组合补丁中的基础时,我收到如下错误:

Error: ../legacy: id '"~G_v1_ConfigMap|~X|~P|pg-database|~S"' already used

4

1 回答 1

3

正如@Jamie 在他的评论中提到的那样,如果两个“补丁”中的任何一个包含一个kustomization.yaml包含您的base/目录作为资源的文件,它将是一个覆盖。每个叠加层都会生成基础中所有资源的副本并对其进行修改。

如果你的基础创建了一个ConfigMap被调用pg-database并且你的覆盖都没有修改这个资源的名称,你最终会得到两个ConfigMap被调用的pg-database

总而言之:每个叠加层都会创建资源的副本,并且您不能在相同kind的.namenamespace

通常的做法是在您的叠加层中添加一个namePrefixnameSuffix转换器以避免冲突并为您的资源提供更有意义的名称。

于 2021-01-22T16:07:32.607 回答