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

Kubernetes kustomize是否用于k8s反向链接?,kubernetes,kustomize,Kubernetes,Kustomize,kustomize的自述文件说 它就像make,它所做的是在一个文件中声明的,它就像sed,它发出经过编辑的文本 这种类比是否超出了文件用于声明所需内容的事实 或者,kustomize反向链接是否与make类似,因为它在确定必须执行的操作之前读取所有命令输入,而不是像bash处理shell脚本那样依次执行命令输入 编辑:谷歌Kustomize团队的杰夫·雷根(Jeff Regan)在演讲开始时解释了Kustomize的工作模式。他还展示了kustomize是如何菊花链的,因此一个kustomiz

kustomize的自述文件说

它就像make,它所做的是在一个文件中声明的,它就像sed,它发出经过编辑的文本

这种类比是否超出了文件用于声明所需内容的事实

或者,kustomize反向链接是否与make类似,因为它在确定必须执行的操作之前读取所有命令输入,而不是像bash处理shell脚本那样依次执行命令输入


编辑:谷歌Kustomize团队的杰夫·雷根(Jeff Regan)在演讲开始时解释了Kustomize的工作模式。他还展示了kustomize是如何菊花链的,因此一个kustomize的输出可以作为另一个kustomize的输入。正如下面的ITChap所指出的,kustomize似乎是从收集base dir中kustomization.yml文件中引用的所有资源开始的。它在一系列步骤中顺序执行,以交互地执行所需的替换和转换。根据需要重复替换/转换步骤以完成。然后在stdout上吐出生成的YAML。所以我想说,它不是像make那样的反向链接,而是介于两者之间。HTH.

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

我们考虑如下:

/base/pod.yml

apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
  - name: test
    image: busybox
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - ../pod.yml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
  - ../base
nameSuffix: "-l1"
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
  - ../l1
nameSuffix: "-l2"
/base/kustomization.yml

apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
  - name: test
    image: busybox
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - ../pod.yml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
  - ../base
nameSuffix: "-l1"
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
  - ../l1
nameSuffix: "-l2"
/overlays/l1/kustomization.yml

apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
  - name: test
    image: busybox
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - ../pod.yml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
  - ../base
nameSuffix: "-l1"
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
  - ../l1
nameSuffix: "-l2"
/overlays/l2/kustomization.yml

apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
  - name: test
    image: busybox
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - ../pod.yml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
  - ../base
nameSuffix: "-l1"
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
  - ../l1
nameSuffix: "-l2"
运行
kustomize build overlays/l2
时,您将获得一个名为
test-l1-l2
的pod,正如预期的那样

但是,如果您尝试修补基础吊舱,则必须使用以下方法参考吊舱:

patchesJson6902:
- target:
    version: v1
    kind: Pod
    name: test
  path: patch.yml
在您的
/overlays/l1/kustomization.yml
中,但也在
/overlays/l2/kustomization.yml
中。在应用l2补丁时,引用的资源仍然是
test
,而不是
test-l1

我对kustomize了解不够,无法理解这背后的意图,但这些是我的观察结果。希望它能回答你的问题


PS:这可能会随着

而改变,谢谢@ITChap的回答。见我上面的笔记。