暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何开始使用Kubernetes的Kustomize工具

原创 花飞墨 2022-09-25
1140

image.png

各位读者大家好,在这篇博客中,我们将看到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 .

image.png

现在好了,要做的是创建一个名为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同时运行。我删除了,这就是原因。

image.png

kustomize build .

image.png

现在你有了这个结果文件,你可以在你的Kubernetes集群中apply它。

你可以看到标签所有者已被apply到部署清单中。

kubectl create -k .
kubectl get deploy

image.png

kubectl get all

image.png

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

kubectl get all --show-labels

image.png

kubectl delete -k .

想象一下,你有不同的环境,比如生产环境、staging环境或测试环境等等,你想使用相同的清单,但你想根据你要部署的环境来定制它。

让我告诉你如何做到这一点。

tree

image.png

在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

image.png

kustomize build overlays/prod

image.png

我们没有复制deployment.yaml,它在基础目录中。我们只有我们想要应用的定制,并只是使用基础来引用它。

在它之后,让我们试着部署它:

kubectl create -k overlays/dev
kubectl create -k overlays/prod
kubectl get all

image.png

总结

在这篇博客中,我们看到了如何设置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/

最后修改时间:2022-09-25 20:24:24
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论