kustomize是否适用于k8s反向链接?

时间:2019-06-03 11:38:40

标签: kubernetes kustomize

kustomize的自述文件说

  

就像make一样,它的操作在文件中声明,就像sed一样,它发出编辑后的文本。

这个比喻超出了使用文件声明所需内容的事实吗?

或者,像make一样,使用Kustomize向后链接是因为它在确定必须执行的操作之前先读取所有命令输入,而不是依次执行并逐步执行命令输入,例如通过shell脚本执行bash吗?

编辑:Google Kustomize团队的Jeff Regan解释了在他的演讲Kustomize: Kubernetes Configuration Customization开始时kustomize工作方式的模型。他还展示了如何将kustomize菊花链式连接起来,以便一个kustomize的输出可以用作另一个kustomize的输入。如下面的ITChap所指出的那样,似乎kustomize首先收集基本目录中kustomization.yml文件中引用的所有资源。它在一系列步骤中顺序执行,以交互执行所需的替换和转换。根据需要重复完成替换/转化步骤。然后在标准输出上吐出生成的YAML。所以我想说,它不是像make那样的反向链接,而是介于两者之间的某个位置。 HTH。

1 个答案:

答案 0 :(得分:1)

到目前为止,我注意到kustomize首先会累积所有基本资源的内容,然后再应用kustomization.yml文件中的转换。如果您有多层叠加层,似乎不会将结果从一个层传递到下一层。

让我们考虑以下问题:

./base/pod.yml

apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
  - name: test
    image: busybox

./base/kustomization.yml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - ../pod.yml

./overlays/l1/kustomization.yml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
  - ../base
nameSuffix: "-l1"

./overlays/l2/kustomization.yml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
  - ../l1
nameSuffix: "-l2"

运行kustomize build overlays/l2时,您将按预期获得名为test-l1-l2的吊舱。

但是,如果您尝试修补基本容器,则必须使用以下方法引用容器:

patchesJson6902:
- target:
    version: v1
    kind: Pod
    name: test
  path: patch.yml
在您的./overlays/l1/kustomization.yml

,在./overlays/l2/kustomization.yml中也是。在应用l2的补丁时,引用的资源仍然是test而不是test-l1

我不知道如何充分理解理解这背后的意图,但这是我的观察。希望它能回答您的问题。

PS:这可能会随着https://github.com/kubernetes-sigs/kustomize/issues/1036

而改变