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