
各位读者大家好,在这篇博客中,我们将看到kustomize是一个简单的工具,它允许你定制和模板化资源清单(注:manifest)。
它可以让你为多种目的定制原生的、无模板(注: template-free)的YAML文件,使原始的YAML保持原样并可原样使用。
我有一个3个节点的Kubernetes集群,它是基于Rancher的k3d。
kubectl get nodes
因此,我们的想法是,从模板清单开始,然后根据想部署的地方开始定制该清单文件。
kubectl create deploy nginx --image nginx --dry-run=client -o yaml > deployment.yaml
它将为你创建一个非常简单的deployment清单。
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
如果你想部署,那么如通常一样:
kubectl create -f .

现在好了,要做的是创建一个名为kustomization.yaml的文件:
resources:
- deployment.yaml
commonLabels:
owner: yamika
所以如果你使用Kustomize,要么使用它的二进制文件(我们稍后会看到),要么使用内置的kubectl命令。
它需要一个名为kustomization的文件。Yaml这个文件中需要的是将要部署的资源列表。
你可以在kustomization.yml中以列表的形式包含其他文件,甚至子目录,如下图所示。
resources:
- deployment.yaml
- service.yaml
- /build/src/nginx.yml
之后,在不接触deployment.yml的情况下,通过kustomization.yaml来更新它。
我所做的唯一kustomization是将标签添加到所有资源中通过这个kustomization.yaml部署的资源中。
在这种情况下,我们只有一个deployment.yaml,所以所有的资源,deployment将创建deployment,replica set,pod,容器,一切都将有这个标签所有者的链接。
安装Kustomize
wget https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv3.8.5/kustomize_v3.8.5_linux_amd64.tar.gz
tar zxf kustomize_v3.8.5_linux_amd64.tar.gz
sudo mv kustomize /usr/local/bin
which kustomize
kustomize version
在应用kustomization.yaml之前,请确保没有deployment同时运行。我删除了,这就是原因。

kustomize build .

现在你有了这个结果文件,你可以在你的Kubernetes集群中apply它。
你可以看到标签所有者已被apply到部署清单中。
kubectl create -k .
kubectl get deploy

kubectl get all

你可以看到我们的nginx被部署了,我们做了kustomization,我们添加标签所有者为yamika。
kubectl get all --show-labels

kubectl delete -k .
想象一下,你有不同的环境,比如生产环境、staging环境或测试环境等等,你想使用相同的清单,但你想根据你要部署的环境来定制它。
让我告诉你如何做到这一点。
tree

在dev/kustomization.yaml中,我在这里做的唯一改变是我在所有的资源前加上了dev-和prod-的名字。
dev/kustomization.yaml
bases:
- ../../base
namePrefix: dev-
prod/kustomization.yaml
bases:
- ../../base
namePrefix: prod-
都有相同的deployment和kustomization。
除了之前的自定义,现在我又增加了一个自定义,就是增加了一个名称前缀,所以所有的资源都会有定义的名称前缀。
kustomize build overlays/dev

kustomize build overlays/prod

我们没有复制deployment.yaml,它在基础目录中。我们只有我们想要应用的定制,并只是使用基础来引用它。
在它之后,让我们试着部署它:
kubectl create -k overlays/dev
kubectl create -k overlays/prod
kubectl get all

总结
在这篇博客中,我们看到了如何设置kustomization,以及如何开始使用它。我们还看到了在不同的环境中进行定制。谢谢你一直陪伴我到最后。如果你觉得这篇博客有帮助,请与你的朋友分享。
原文标题:how to get started with Kustomize tool for Kubernetes
原文作者:Yamika Rajput
原文地址:https://blog.knoldus.com/how-to-get-started-with-kustomize-tool-for-kubernetes/




