V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
james
V2EX  ›  分享创造

仅用 20 行 TypeScript(Deno)就能代替 Kustomize

  •  1
     
  •   james · 2023-02-13 20:48:13 +08:00 · 1789 次点击
    这是一个创建于 439 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司重度使用 Kustomize 来管理所有的 Kubernetes 资源文件,代码库里有几百个目录和_kustomization.yaml_。但使用 Kustomize 有许多痛点,日益不满 Kustomize 中的黑魔法( hack )。另外,运维人员要求程序员写 Kustomize 自定义的垃圾「领域内语言」( DSL )真是对程序员的侮辱。

    最后在某个周末,自己动手写出了KubeScript。它具有以下优点。

    1. 优良的编码体验,包括基于类型的代码补全和文档。
    2. 依托 TypeScript 的富表达力,便于构建可复用的模块,适于多团队的大型编程。
    3. 类型安全。

    你也许会问,它与某某项目有什么区别?我都列在这个文档了。

    此项目才开源不久,肯定有许多不足之外。

    • 如果你也喜欢 KubeScript ,请给我们一个爱心,支持我们的开源项目。
    • 如果你也有相同的想法,欢迎加入我们一起重塑云原生时代的运维方式。
    • 如果你看完后不喜欢 KubeScript ,也欢迎反馈意见。
    7 条回复    2023-02-16 14:52:09 +08:00
    defunct9
        1
    defunct9  
       2023-02-13 21:11:27 +08:00 via iPhone
    请问一下会有 node_module 弄一堆东西的现象吗
    james
        2
    james  
    OP
       2023-02-13 21:12:12 +08:00
    @defunct9 因为使用了 Deno 而不是 npm ,所以不会。
    leozzf
        3
    leozzf  
       2023-02-13 22:45:48 +08:00 via Android
    Deno 的包管理是咋样的,跟 Java 差不多吗,一个 module 一个 zip ?
    huijiewei
        4
    huijiewei  
       2023-02-13 23:06:56 +08:00
    @leozzf 和 go 好像有点像
    james
        5
    james  
    OP
       2023-02-13 23:50:51 +08:00
    @leozzf 对,跟浏览器里加载 js 差不多。也类似 Go 的方式,直接引一个 URL 。非常简单又好用。你看这个[文件]( https://github.com/in-fun/KubeScript/blob/main/deps.ts) 就包括了 KubeScript 的所有外部依赖。
    chronos
        6
    chronos  
       2023-02-15 17:33:38 +08:00   ❤️ 1
    很有意思的项目,kustomize 的语法 hack 不好写。helm 虽然还可以,但始终是模板语法,自定义能力略弱。拿 helm 部署一整套微服务项目,写了一大堆的公共模板,相当麻烦。
    killerirving
        7
    killerirving  
       2023-02-16 14:52:09 +08:00
    有点像 Pulumi ,楼主可以体验下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5334 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:34 · PVG 17:34 · LAX 02:34 · JFK 05:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.