首页 > 其他分享 >kustomize 简明教程

kustomize 简明教程

时间:2023-04-02 22:31:58浏览次数:53  
标签:kustomize 教程 简明 patch yaml 资源 io kustomization

kustomize 是一个通过 kustomization 文件定制 kubernetes 对象的工具,它可以通过一些资源生成一些新的资源,也可以定制不同的资源的集合。

一个比较典型的场景是我们有一个应用,在不同的环境例如生产环境和测试环境,它的 yaml 配置绝大部分都是相同的,只有个别的字段不同,这时候就可以利用 kustomize 来解决,kustomize 也比较适合用于 gitops 工作流。

 

如上图所示,有一个 ldap 的应用,/base目录保存的是基本的配置,/overlays里放置的不同环境的配置,例如 /dev/staging/prod这些就是不同环境的配置,/base等文件夹下都有一个 kustomization .yml 文件,用于配置。

执行 kustomize build dir的方式就可以生成我们最后用于部署的 yaml 文件,也就是进行到了我们上图的第四步,然后通过 kubectl apply -f命令进行部署。

安装

wget https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v5.0.1/kustomize_v5.0.1_linux_amd64.tar.gz

布局

├── base
│   ├── deployment.yaml
│   ├── kustomization.yaml
│   └── service.yaml
└── overlays
    ├── dev
    │   ├── kustomization.yaml
    │   └── patch.yaml
    ├── prod
    │   ├── kustomization.yaml
    │   └── patch.yaml
    └── staging
        ├── kustomization.yaml
        └── patch.yaml

 

一个常见的项目 kustomize 项目布局如上所示,可以看到每个环境文件夹里面都有一个 kustomization.yaml 文件,这个文件里面就类似配置文件,里面指定源文件以及对应的一些转换文件,例如 patch 等

kustomization.yml

一个常见的 kustomization.yml 如下所示,一般包含 apiVsersion 和 kind 两个固定字段

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
- manager.yaml

configMapGenerator:
- files:
  - controller_manager_config.yaml
  name: manager-config

 

kustomize 提供了比较丰富的字段选择,除此之外还可以自定义插件,下面会大概列举一下每个字段的含义,当我们需要用到的时候知道有这么个能力,然后再去 Kustomize 官方文档 查找对应的 API 文档就行了

resources 表示 k8s 资源的位置,这个可以是一个文件,也可以指向一个文件夹,读取的时候会按照顺序读取,路径可以是相对路径也可以是绝对路径,如果是相对路径那么就是相对于 kustomization.yml的路径

crds 和 resources 类似,只是 crds 是我们自定义的资源

namespace 为所有资源添加 namespace

images 修改镜像的名称、tag 或 image digest ,而无需使用 patches

replicas 修改资源副本数

namePrefix 为所有资源和引用的名称添加前缀

nameSuffix 为所有资源和引用的名称添加后缀

patches 在资源上添加或覆盖字段,Kustomization 使用 patches 字段来提供该功能。

patchesJson6902 列表中的每个条目都应可以解析为 kubernetes 对象和将应用于该对象的 JSON patch。

patchesStrategicMerge 使用 strategic merge patch 标准 Patch resources.

vars 类似指定变量

commonAnnotations 为所有资源加上 annotations 如果对应的 key 已经存在值,这个值将会被覆盖

 

commonAnnotations:
  app.lailin.xyz/inject: agent

resources:
- deploy.yaml

 

commonLabels 为所有资源的加上 label 和 label selector 注意:这个操作会比较危险

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

commonLabels:
  app: bingo

 

  • configMapGenerator 可以生成 config map,列表中的每一条都会生成一个 configmap
  • secretGenerator 用于生成 secret 资源
  • generatorOptions 用于控制 configMapGenerator 和 secretGenerator 的行为

总结

看到 Kustomize 我的第一反应是这个东西和 helm 有什么区别,Kustomize 没有模板语法,只需要一个二进制命令就可以生成对应的 yaml 文件非常的轻量,而 helm 支持 GoTemplate,组件上也要多一些,并且 helm 通过 chart 包来进行发布相对来说还是要重量级一些。个人觉得 Kustomize 更适合做 gitops 而 helm 更合适做应用包的分发。

摘自

https://lailin.xyz/post/operator-04-kustomize-tutorial.html?hmsr=toutiao.io&utm_campaign=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io#kustomization-yml

 



标签:kustomize,教程,简明,patch,yaml,资源,io,kustomization
From: https://blog.51cto.com/u_15315026/6165190

相关文章

  • odoo 开发入门教程系列-准备一些操作(Action)?
    准备一些操作(Action)?到目前为止,我们主要通过声明字段和视图来构建模块。在任何真实的业务场景中,我们都希望将一些业务逻辑链接到操作按钮。在我们的房地产示例中,我们希望能够:取消或将房产设置为已售出接受或拒绝报价有人可能会说,我们已经可以通过手动更改状态来完成这些事......
  • 塔猫PPT博客美化教程 需要申请js哦
    原作者:思索-博客园  效果:   cssa,button,summary{outline:0}.btn_my_zzk,button,summary{cursor:pointer}.day,.entrylistItem,.entrylistPostSummary,.feedbackCon,.feedbackItem,.feedbackListSubtitle,.postCon,.postMeta,.postSticky{position:relative}#Entr......
  • python系列教程208——为什么使用lambda
    声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值......
  • maven安装及配置教程
    @目录1什么是Maven1.1Maven概述1.2Maven的常用命令2怎么安装Maven2.1下载Maven包2.2配置环境变量2.3配置本地仓库2.4配置远程仓库1什么是Maven1.1Maven概述Maven是一个项目管理工具,可以对Java项目进行自动化的构建和依赖管理。Maven包含了一个项目对象模型(Proj......
  • ConfuserEx 脱壳软件 使用教程
    ConfuserEx1.0.0脱壳步骤1.先用UnconfuserEx把主程序Dump出来;2.使用CodeCracker大牛的ConfuserExStringDecryptor将加密的字符串解密;3.使用CodeCracker大牛的ConfuserExSwitchKiller将混淆的switch分支结构解密;4.若步骤3中解密导致程序崩溃,可以尝试ConfuserExUniversalControlF......
  • Bandizip7.30安装教程
    1.开始安装2.选择安装路径3.安装完成4.开始破解5.破解成功......
  • 读SQL进阶教程笔记05_关联子查询
    1. 关联子查询1.1. 关联子查询和自连接在很多时候都是等价的1.2. 使用SQL进行行间比较时,发挥主要作用的技术是关联子查询,特别是与自连接相结合的“自关联子查询”1.3. 缺点1.3.1. 代码的可读性不好1.3.1.1. 特别是在计算累计值和移动平均值的例题里,与聚合一起使用......
  • 通过 docker-compose 快速部署 Hadoop 集群详细教程
    目录一、概述二、安装docker和docker-compose1)安装docker2)安装docker-compose三、docker-composedeploy1)设置副本数2)资源隔离四、docker-composenetwork五、docker-compose项目六、Hadoop部署(非高可用)1)安装JDK2)下载hadoop相关的软件3)构建镜像Dockerfile4)配置1、Hadoo......
  • SpringBoot进阶教程(七十五)数据脱敏
    无论对于什么业务来说,用户数据信息的安全性无疑都是非常重要的。尤其是在数字经济大火背景下,数据的安全性就显得更加重要。数据脱敏可以分为两个部分,一个是DB层面,防止DB数据泄露,暴露用户信息;一个是接口层面,有些UI展示需要数据脱敏,防止用户信息被人刷走了。v需求背景DB层面的......
  • Arm Pro脱壳简单教程
    背景之前写了一个超星学习通接口逆向的文章,有人希望我分享下怎么用ArmPro脱壳,虽然挺简单的,但还是写下吧。脱壳步骤打开ArmPro,点击右下角按钮选择APP选第二个,一键云脱壳Pro顺带一提,虽然这里显示超星学习通没有加固,实际上是加固了的,用MT管理器提取安装包可以看到是......