tnblog
首页
视频
资源
登录

Kustomize的基本使用

10025人阅读 2022/7/11 23:10 总访问:3475749 评论:0 收藏:0 手机
分类: 容器编排

Kustomize的基本使用

什么是 Kustomize?


Kustomize允许您自定义原始的、无模板的 YAML 文件以用于多种用途,而原始 YAML 保持不变且可按原样使用。

kustomize 术语


在 kustomize 项目的文档中,经常会出现一些专业术语,这里总结一下常见的术语,方便后面讲解。

目录 描述
kustomization 术语 kustomization 指的是 kustomization.yaml 文件,或者指的是包含 kustomization.yaml 文件的目录以及它里面引用的所有相关文件路径
base base 指的是一个 kustomization , 任何的 kustomization 包括 overlay (后面提到),都可以作为另一个 kustomization 的 base (简单理解为基础目录)。base 中描述了共享的内容,如资源和常见的资源配置。
overlay overlay 是一个 kustomization, 它修改(并因此依赖于)另外一个 kustomization. overlay 中的 kustomization指的是一些其它的 kustomization, 称为其 base. 没有 base, overlay 无法使用,并且一个 overlay 可以用作 另一个 overlay 的 base(基础)。简而言之,overlay 声明了与 base 之间的差异。通过 overlay 来维护基于 base 的不同 variants(变体),例如开发、QA 和生产环境的不同 variants
variant variant 是在集群中将 overlay 应用于 base 的结果。例如开发和生产环境都修改了一些共同 base 以创建不同的 variant。这些 variant 使用相同的总体资源,并与简单的方式变化,例如 deployment 的副本数、ConfigMap使用的数据源等。简而言之,variant 是含有同一组 base 的不同 kustomization。
resource 在 kustomize 的上下文中,resource 是描述 k8s API 对象的 YAML 或 JSON 文件的相对路径。即是指向一个声明了 kubernetes API 对象的 YAML 文件
patch 修改文件的一般说明。文件路径,指向一个声明了 kubernetes API patch 的 YAML 文件

安装 Kustomize


Windows安装可以使用巧克力。

  1. choco install kustomize


使用脚本安装

  1. curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash

简单示例


比如我们定义一个api.yaml文件和一个ocelot.yaml文件。

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: ocelotapi
  5. labels:
  6. name: ocelotapi
  7. spec:
  8. replicas: 2
  9. selector:
  10. matchLabels:
  11. name: ocelotapi
  12. template:
  13. metadata:
  14. labels:
  15. name: ocelotapi
  16. spec:
  17. containers:
  18. - name: ocelotapi
  19. image: aidasi/ocelotapi:v1
  20. ports:
  21. - containerPort: 80
  22. imagePullPolicy: Always
  23. ---
  24. kind: Service
  25. apiVersion: v1
  26. metadata:
  27. name: ocelotapi
  28. spec:
  29. ports:
  30. - port: 80
  31. targetPort: 80
  32. selector:
  33. name: ocelotapi
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: ocelot
  5. labels:
  6. name: ocelot
  7. spec:
  8. replicas: 1
  9. selector:
  10. matchLabels:
  11. name: ocelot
  12. template:
  13. metadata:
  14. labels:
  15. name: ocelot
  16. spec:
  17. containers:
  18. - name: ocelot
  19. image: aidasi/ocelot:v1
  20. ports:
  21. - containerPort: 80
  22. imagePullPolicy: Always
  23. ---
  24. kind: Service
  25. apiVersion: v1
  26. metadata:
  27. name: ocelot
  28. spec:
  29. ports:
  30. - port: 80
  31. targetPort: 80
  32. selector:
  33. name: ocelot


但是我们并没有定义它们的命名空间,所以我们通过定义kustomization.yaml文件并通过kustomize build来生成不同命名空间的。

  1. apiVersion: kustomize.config.k8s.io/v1beta1
  2. kind: Kustomization
  3. namespace: my-namespace
  4. resources:
  5. - api.yaml
  6. - ocelot.yaml


我这里定义生成的是my-namespace的命名空间,以及所引用的资源是api.yamlocelot.yaml等文件。
如果我们要执行可以直接通过一下命令进行执行。

  1. kustomize build | kubectl apply -f -


常用zd定义如下:

字段 描述
namePrefix 命名
namespace 名称空间
commonLabels 添加标签
commonAnnotations 添加Annotations


更多请参考:https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/replicas/

多分支示例


如果我们有两个不同的环境,那么我们可以更加不同的环境进行创建不同的文件夹,目录结构如下:


dev/kustomization.yaml如下:

  1. resources:
  2. - ./../../base
  3. namePrefix: dev-
  4. namespace: dev
  5. commonLabels:
  6. nowenv: dev
  7. commonAnnotations:
  8. note: Bob Ocelot Project!


prod/kustomization.yaml如下:

  1. resources:
  2. - ./../../base
  3. namePrefix: prod-
  4. namespace: swp-prod
  5. commonLabels:
  6. nowenv: prod
  7. commonAnnotations:
  8. note: Bob Ocelot Project!
  9. replicas:
  10. - name: ocelotapi
  11. count: 4


然后我们通过kustomize build显示不同Yaml资源的定义。

Argo CD部署


首先创建对应的命名空间。

  1. kubectl create ns dev


将Argo暴露到本地

  1. kubectl port-forward svc/argocd-server -n argocd 8080:443 --address=0.0.0.0


创建应用。


然后点击Create按钮,就创建成功了。


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

tomcat 的基本使用

一、在webapps文件夹下创建一个自己的文件夹二、在自己的文件夹下面放入自己的资源资源类容三、访问(路径为8080+自己的文...

HTTPSession 的基本使用 1

一、常用方法二、获取三、使用1、创建web项目与功能类2-4、另一个功能类5-6、a、b、

.net Source Generators的基本使用

.net Source Generators的基本使用[TOC] Source Generators简介Source Generators是一项C#编译功能,使C#开发人员能够在编...

.net Roslyn的基本使用

.net Roslyn的基本使用[TOC] Roslyn简介Roslyn是C#和Visual Basic编译器的开源实现,具有用于构建代码分析工具的API表面。...

剪映的基本使用。音频如何删除,音频如何删除某一部分,如何修改某张图片的播放时间

默认一张图片只有三秒钟的时间如果不够的话可以拖动修改时间。 音频如何删除?单击选中后下面就有删除选项了。 音频如何...
这一世以无限游戏为使命!
排名
2
文章
636
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术