将多个k8s峰化组合为一个

时间:2019-10-04 17:34:43

标签: kubernetes kustomize

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

如果您的基础创建了一个名为 ConfigMappg-database 并且您的任何叠加都没有修改此资源的名称,那么您最终将得到两个名为 ConfigMappg-database .

总而言之:每个叠加层都会创建资源的副本,并且您不能在同一个 kind 中拥有具有相同 name 的相同 namespace 的两个资源。

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