文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

一篇带给你kustomize 简明教程

2024-12-03 04:52

关注

在上一篇文章当中我们了解了 kubebuilder 的基本使用方法,通过 kubebuilder 实现了一个简单的 operator 并运行了起来。虽然整个程序跑起来了,但是还是存在着一些疑惑,除了上篇文章有提到过的 controller-gen 之外,makefile当中还大量存在了 kustomize 这样的命令,kustomize是什么,有什么用,怎么用?今天我们就一起来学习一下,在后续的文章当中,我们还会用到一些 kustomize 特性来部署不同的环境。

简介

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

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

bespoke config workflow image

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

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

安装

使用 kubebuilder 我们不需要额外进行安装,因为在执行相关 make 命令的时候,会自动下载可执行文件到 bin/ 目录下

如果本地有 go 环境,可以执行下列命令进行安装

  1. GOBIN=$(pwd)/ GO111MODULE=on go get sigs.k8s.io/kustomize/kustomize/v3 

除此之外也可以使用对应操作系统的包管理器进行安装,例如 mac 可以使用 brew 进行安装

除了直接使用 kustomize 命令外,kubernetes 自 v1.14 之后也可以使用 kubectl kustomize的方式执行 kustomize

布局

  1. ├── base 
  2. │   ├── deployment.yaml 
  3. │   ├── kustomization.yaml 
  4. │   └── service.yaml 
  5. └── overlays 
  6.     ├── dev 
  7.     │   ├── kustomization.yaml 
  8.     │   └── patch.yaml 
  9.     ├── prod 
  10.     │   ├── kustomization.yaml 
  11.     │   └── patch.yaml 
  12.     └── staging 
  13.         ├── kustomization.yaml 
  14.         └── patch.yaml 

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

kustomization.yml

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

  1. apiVersion: kustomize.config.k8s.io/v1beta1 
  2. kind: Kustomization 
  3.  
  4. resources: 
  5. - manager.yaml 
  6.  
  7. configMapGenerator: 
  8. - files: 
  9.   - controller_manager_config.yaml 
  10.   name: manager-config 

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

  1. commonAnnotations: 
  2.   app.lailin.xyz/inject: agent 
  3.  
  4. resources: 
  5. - deploy.yaml 
  1. apiVersion: kustomize.config.k8s.io/v1beta1 
  2. kind: Kustomization 
  3.  
  4. commonLabels: 
  5.   app: bingo 

总结

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

参考文献

[^1]: Kustomize 官方文档 https://kubectl.docs.kubernetes.io/zh/guides/

[^2]: 使用 Kustomize 对 Kubernetes 对象进行声明式管理https://kubernetes.io/zh/docs/tasks/manage-kubernetes-objects/kustomization/

 

来源:mohuishou内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯