当前位置:网站首页>Kubernetes资源编排系列之三: Kustomize篇
Kubernetes资源编排系列之三: Kustomize篇
2022-08-02 14:06:00 【InfoQ】
Kustomize是什么
Kustomize是怎么做的
app
├── base
│ ├── deployment.yaml
│ ├── service.yaml
│ └── kustomization.yaml
└── overlays
├── production
│ └── kustomization.yaml
├── staging
│ └── kustomization.yaml
└── production-large
└── kustomization.yamlcommonLabels:
name: app
resources:
- deployment.yaml
- service.yamlkustomize build app/base # 构建
kustomize build app/base | kubectl apply -f - # 构建并部署
kubectl apply -k app/base # 1.14及更新的版本可以使用该命令直接部署bases:
- ../../base
commonLabels:
env: staging
namePrefix: staging-
patches:
- target:
kind: Deployment
name: app
patch: |
[
{"op":"replace","path":"/spec/replicas","value":1}
]bases:
- ../../base
commonLabels:
env: production
namePrefix: production-
patches:
- target:
kind: Deployment
name: app
patch: |
[
{"op":"replace","path":"/spec/replicas","value":2}
]bases:
- ../production
patches:
- target:
kind: Deployment
name: app
patch: |
[
{"op":"replace","path":"/spec/replicas","value":10}
]kustomize build app/overlays/production | kubectl apply -f -
kustomize build app/overlays/staging | kubectl apply -f -
kustomize build app/overlays/production-large | kubectl apply -f -Kustomize的特点
kustomize build- 功能简单清晰,kubectl 直接内部支持
- 不考虑派生,仅仅作为组件的 YAML组织方式也很有帮助
- 也有自己的插件系统,例如可以用简单的 YAML 定义,使用文件生成 ConfigMap / Secret 等
- 允许注入 K8S 运行时数据
Kustomize和Helm的对比
- Base YAML 管控:Helm 最大的特点是定制仅限于预先存在的配置选项。不仅如此,Chart 作者还必须用有点麻烦的模板化方式实现这些定制选项。这个时候 Kustomize不受限制的 Overlay 会更加灵活,想怎么覆盖就怎么覆盖。所以 Helm 对 Base YAML 强管控;而Kustomize 虽然也有 Base,但 Overlay 的存在让这个限制几乎不存在。
- 模板语法层面:Kustomize 相较于 Helm 去掉了模板语法,入门门槛更低,更易使用。当然如果玩的高阶,两者都要学习很多东西。
- 部署层面:虽然 Kustomize 最为轻量,但因为 Helm3 取消了 Tiller 依赖,所以差别也不是很大,两者都是二进制命令工具生成YAML后直接下发。
- 工作流程上:
- Helm: 定义 Chart -> 填充 -> 运行。在 Chart 中没有定义的内容是无法更改的
- Kustomize: Base 和 Overlay 都是可以独立运作的,增加新对象,或者对编写 Base 时未预料到的内容进行变更,都非常简单
SREWorks的Kustomize组件实践
- revisionName: "CHART|[email protected]@1.0|_"
parameterValues:
- name: Map
value:
clusterId: "{{ Global.clusterId }}"
product: es
userID: "{{ Global.uid }}"
vpcID: "{{ Global.vpcID }}"
vswitchID: "{{ Global.vswitchID }}"
namespaceRegexes: "^(essen|es)$"
- revisionName: KUSTOMIZE|[email protected]@test|_
parameterValues:
- name: kubeconfig
value: "{{ Global.kubeconfig }}"
toFieldPaths:
- spec.base64Kubeconfig
- name: path
value: "./"
toFieldPaths:
- spec.path
dependencies:
- component: "CHART|[email protected][email protected]"
- revisionName: "STATUS|[email protected]|_"
dependencies:
- component: KUSTOMIZE|[email protected]@test
parameterValues:
- name: kubeconfig
value: "{{ Global.kubeconfig }}"
toFieldPaths:
- spec.base64Kubeconfig
- name: options
value:
groups:
- namespace: sreworks-system
labels:
app: sreworks
resources:
- v1/pods
toFieldPaths:
- spec.options总结
边栏推荐
- The Handler you really understand?
- Flask-SQLAlchemy
- 7.如何给RecyclerView添加Click和LongClick事件
- C语言一级指针(补)
- MySQL知识总结 (六) MySQL调优
- Using the cloud GPU + pycharm training model to realize automatic background run programs, save training results, the server automatically power off
- Flask contexts, blueprints and Flask-RESTful
- 我理解的学习金字塔
- C语言初级—用一角,两角,五角和一元组成3.5元有多少种组合方法
- ng-style:动态控制样式
猜你喜欢

初识c语言指针

c语言三子棋详解!!! (电脑智能下棋)(附上完整代码)

十分钟带你入门Nodejs

C语言——一级指针初识

Using the cloud GPU + pycharm training model to realize automatic background run programs, save training results, the server automatically power off
![[ROS] (02) Create & compile ROS package Package](/img/c2/5931d5cbade509c6ca34d66a274756.png)
[ROS] (02) Create & compile ROS package Package

ConstraintLayout from entry to abandonment

C语言日记 3 常量

verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第九章)

C语言初级—水仙花数
随机推荐
C语言初级—水仙花数
ThinkPHP5.0内置分页函数Paginate无法获取POST页数问题的解决办法
Scala连接Mysql数据库
二进制乘法运算
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十三章)
ng-style:动态控制样式
vscode编译keil工程,烧录程序
C语言sizeof和strlen的区别
VS Code远程开发及免密配置
无人驾驶综述:等级划分
线性代数期末复习存档
flutter中App签名
MySQL知识总结 (六) MySQL调优
Win10不能启动WampServer图标呈橘黄色的解决方法
C语言日记 2 标识符
1.RecyclerView是什么
华为防火墙
Flink-独立集群/Yarn
华为防火墙
Flink实现Exactly Once