Skip to main content

Command Palette

Search for a command to run...

Kustomize Fomulas

Published
2 min read

项目地址 Kustomize-patch-formulas

这个项目有两个目的。

第一点就是,既然有了 Kustomize,使用碎片来拼接复杂的 YAML 就很方便了,设想以下情况:

一个只会写简单 Deployment 的小白,随时要去翻书,查查如何加入资源限制,如何加载存储卷,如何设置环境变量....,翻完用完,俩月之后同样的痛苦再来一次,周而复始。。好吧我就是那个小白。

Kustomize 能不能让这个过程舒服一点?

开始摸索 Kustomize 之后,我觉得有救了,只要我把需要的配置碎片积累下来,用的时候稍作修改,然后用 Kustomize 渲染出来,是不是就省了不少麻烦了?另外对一些巨型的 YAML,比如多个 Deployment 和 Service 和 VirtualService 什么的混成一个文件的情况,直接上手修改是很辛苦的,用这种方式也可以方便快捷的进行一些变更。

更近一步的,这些补丁都很小,如果稍稍做点模板处理,用个小脚本加工成正式的 Patch,复用能力会进一步增强。

第二点就是,就算不考虑这些问题,把常见的配置碎片搜集起来也是对 Kubernetes 运维工作很有帮助的。

用法

例如我们有一个简单的 Deployment, /tmp/deploy.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: flaskapp
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: flaskapp
        version: v1
    spec:
      containers:
        - name: flaskapp
          image: dustise/flaskapp
          imagePullPolicy: IfNotPresent
          env:
            - name: version
              value: v1
          ports:
            - containerPort: 80

克隆本项目之后,我们希望借助其中的补丁,为这个对象加入资源限制和 ServiceAccount:

$ ./gen_kustomize.py -i /tmp/deploy.yaml -o kust
$ tree kust
kust
├── base
│   ├── deploy.yaml
│   └── kustomization.yaml
└── overlay

这个命令会为该文件创建一个 Kustomization。其中的 -i 参数可以加入多个文件,都会被复制到目标目录(kust)的 base 之中。

接下来向其中加入补丁:

$ ./add_patch.py kubernetes/deployment/resource-patch.yaml \
    --set container_name=flaskapp deployment_name=flaskapp \
    limit_cpu=100m limit_memory=100Mi request_cpu=100m \
    request_memory=100Mi \
    -t kust
$ ./add_patch.py kubernetes/deployment/serviceaccount-patch.yaml \
    --set container_name=flaskapp \
    deployment_name=flaskapp service_account=default \
    -t kust

这里的第一个参数是补丁文件的位置,--set 后面以 key=value 的形式为模板进行赋值。模板的写法也很简单,例如:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: $deployment_name
spec:
  replicas: 1
  template:
    spec:
      serviceAccount: $service_account

使用的是 Python 模板,只要简单的在变量前加入 $ 即可,因为对 Helm 深感疲惫,暂时不准备接入太复杂的模板方式,毕竟补丁本身越小越精确就越好。

加入补丁之后,使用 kustomize build kust/overlay 进行渲染:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: flaskapp
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: flaskapp
        version: v1
    spec:
      containers:
      - env:
        - name: version
          value: v1
        image: dustise/flaskapp
        imagePullPolicy: IfNotPresent
        name: flaskapp
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: 100m
            memory: 100Mi
          requests:
            cpu: 100m
            memory: 100Mi
      serviceAccount: default

可以看到,这里生成了完整的目标文件。

需要贡献

这个项目还非常低级,不堪一用,觉得这个小东西有意思的朋友可以提供:

  • 新的补丁模板。
  • 测试框架。
  • 新的玩法。
  • 各种建议。

More from this blog

绵里藏针才是 AIOps 的本质?

Agent 让运维编排变得柔性、可变、甚至自演进;但真正敢进入生产环境的 AIOps,仍然离不开坚实、受控、可审计、可回退的自动化底座。 从 Gartner 提出 AIOps 概念到现在,也大概有十年了。这么多年来,这个领域好像发生了很多变化,又好像没什么“本质”的变化。技术上,我们经历了传统机器学习、深度学习和神经网络、以及大模型和智能体这样“翻天覆地”的变化;业务上,我们面对的是更多品种、更大

May 31, 20263 min read

龙虾恐慌:AIOps 又要改名了?

ChatGPT 开始,把 AI 拉近到普罗大众的面前,让无数人感受到 AI 的亲民魅力。而龙虾,则把大模型驱动的自动化能力,突然间变得水灵灵、活泼泼地走进千家万户。它不只是“风口上的猪”,而是风口本身。热度高到让 Mac mini 一度断货,不知道这在不在库克的预料之内。 每代人都有每代人的鸡蛋,春节期间,我就领了我的鸡蛋。翻出古老的 MacBook Air M1,充值各种大模型。当然了,这个工具

Mar 9, 20261 min read

再见 2025

我猜不少人以为这个号废了吧?并没有,只是今年变化有点大,一直有种抄起键盘,无从说起的感觉,所以一直偷懒到今天,2025 的最后一天。 今年是我的第四个本命年,去年末一期播客里,大内说本命年不是灾年,是变化年,有危也有机。可是讲真啊,只看到危,没看到机。 各种因缘际会,从鹅厂跳槽到前东家,已经接近四年,第一个合同期已经进入尾声。除了前两年还在云原生领域嗷嗷叫,后两年基本都是些鸡零狗碎的东西了,用老东家的术语说是——偏离主航道,可谓是前景暗淡了。 一旦确定要滚蛋,反倒心思轻松起来,每天骑着我的小红车...

Jan 5, 20261 min read

辅助编程?dora 说:我知道你很急可是请你别急

从 OpenGPT 把大模型的火烧旺了之后,这三年来,相信很多组织或摩拳擦掌、或躬身入局,希望借助聪明能干的大模型,或想偿还技术宅,或想降本增效,或想弯道超车。一时间,沉寂许久的 AIxx 又活过来了,LLM Ops、Vibe Coding、中医大模型、GPT 算命等等,全都老树发新芽,焕发了勃勃生机。那么视角拉回从业者最关注的饭碗相关的领域之一——AI 辅助开发,产生了什么触动,应该如何拥抱呢? DORA 的年度报告中给出了很有意思的结论——强者恒强。 执行摘要部分总结了几个有趣的点: 问题...

Oct 6, 20251 min read

[译]dora:ai 辅助软件开发状态报告

执行摘要 在 2025 年,科技领导者面临的核心问题已不再是“是否要采用 AI”,而是“如何实现其价值”。 DORA 的研究基于超过 100 小时的定性访谈和来自全球近 5,000 名技术专业人士的问卷调查。研究揭示了一个关键事实:AI 在软件开发中的主要角色是“放大器”。它会放大高效能组织的优势,也会凸显组织的缺陷。 关键结论:AI 是放大器 AI 投资的最大回报并非来自工具本身,而是来自组织底层系统的战略性建设: 高质量的内部平台 清晰的工作流 团队的协同能力 缺少这些基础,AI ...

Oct 2, 202514 min read

【伪】架构师

343 posts