KCL 语言开源社区双周快讯 | KCL 0.5.1 和 0.5.2 版本正式发布 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
如果想在 V2EX 获得更好的推广效果,欢迎了解 PRO 会员机制:
pro/about
peefy

KCL 语言开源社区双周快讯 | KCL 0.5.1 和 0.5.2 版本正式发布

  •  
  •   peefy 2023 年 8 月 16 日 938 次点击
    这是一个创建于 983 天前的主题,其中的信息可能已经有所发展或是发生改变。

    图片

    KCL 是一个开源的基于约束的记录及函数语言并通过成熟的编程语言技术和实践来改进对大量繁杂配置比如云原生 Kubernetes 配置场景的编写,致力于构建围绕配置的更好的模块化、扩展性和稳定性,更简单的逻辑编写,以及更简单的自动化和生态工具集成。

    本栏目将会双周更新 KCL 语言社区最新动态,包括功能、官网更新和最新的社区动态等,帮助大家更好地了解 KCL 社区!

    KCL 官网: https://kcl-lang.io

    内容概述

    过去两周 (2023 07.26 - 08.09),KCL 所有项目中总计有34个 PR 被合并,感谢所有贡献者的杰出工作,以下是重点合并内容概述

    • 语言及工具链更新
      • KCL Doc 文档工具新增 Markdown 文档导出支持
      • KCLImport 导入工具更新 - 支持 JsonSchema 转换为 KCL Schema
      • KCL 包管理工具 KPM 支持在 kcl.mod 中设置编译参数,优化命令行提示信息
      • KCL IDE 插件优化补全、跳转和悬停文档显示等功能,并支持 NeoVim 编辑器
    • API 更新
      • KCL Schema 模型解析GetSchemaType API 新增装饰器信息和包信息字段
    • 社区扩展更新
      • Helmfile KCL 插件支持
    • 官网和用例更新

    特别鸣谢

    • 感谢 @jakezhu9 对 KCL Import 工具 JsonSchema 转换的贡献

    • 感谢 @xxmao123 对 Vim 和 NeoVim KCL 插件的贡献

    • 感谢 @yyxhero 在 Helmfile KCL 插件支持中提供的帮助与支持

    • 感谢 @nkabir, @mihaigalos, @prahaladramji, @dhhopen 等在使用 KCL 过程中提出的宝贵建议和讨论

    精选更新

    KCL Import 工具更新

    KCL Import 工具在 Protobuf, OpenAPI 模型和 Go 结构体转换为 KCL Schema 的基础上,新增 JsonSchema 到 KCL Schema 的转换支持,比如对于如下的 JsonSchema

    { "$schema":"http://json-schema.org/draft-07/schema#", "$id":"https://example.com/schemas/customer.json", "type":"object", "$defs":{ "address":{ "type":"object", "properties":{ "city":{ "type":"string" }, "state":{ "$ref":"#/$defs/state" } } }, "state":{ "type":"object, "properties":{ "name":{ "type":"string" } } } }, "properties":{ "name":{ "type":"string" }, "address":{ "$ref":"#/$defs/address" } } } 

    经过 KCL Import 工具可以输出为如下 KCL 代码

    schemaCustomer: """ Customer Attributes ---------- name:str,optional address:Address,optional """ name?:str address?:Address schemaAddress: """ Address Attributes ---------- city:str,optional state:State,optional """ city?:str state?:State schemaState: """ State Attributes ---------- name:str,optional """ name?:str 

    Helmfile KCL 插件

    Helmfile 是用于部署 Helm Chart 的声明性规范和工具,通过 Helmfile KCL 插件您可以

    • 通过无侵入的 Hook 方式编辑或者验证 Helm Chart 配置,将 Kubernetes 配置管理的数据部分和逻辑部分分离
      • 修改资源标签/注解, 注入 Sidecar 容器配置
      • 使用 KCL Schema 校验资源,定义自己的抽象模型并分享复用
    • 优雅地维护多环境、多租户场景配置,而不是简单地复制粘贴

    下面以一个简单示例进行详细说明,使用 Helmfile KCL 插件无需您安装与 KCL 任何相关的组件,只需本机具备 Helmfile 工具的最新版本即可。

    我们可以编写一个如下所示helmfile.yaml文件

    repositories: -name:prometheus-community url:https://prometheus-community.github.io/helm-charts releases: -name:prom-norbac-ubuntu namespace:prometheus chart:prometheus-community/prometheus set: -name:rbac.create value:false transformers: #UseKCLPlugintomutateorvalidateKubernetesmanifests. -apiVersion:krm.kcl.dev/v1alpha1 kind:KCLRun metadata: name:"set-annotation" annotations: config.kubernetes.io/function:| container: image:docker.io/kcllang/kustomize-kcl:v0.2.0 spec: source:| [resource|{ifresource.kind=="Deployment":metadata.annotations:{"managed-by"="helmfile-kcl"}}forresourceinoption("resource_list").items] 

    在上述配置中,我们引用了 Prometheus Helm Chart, 并通过一行 KCL 代码就可以完成 Prometheus 的所有的 Deployment 资源注入标签managed-by="helmfile-kcl",通过如下命令我们可以将上述配置下发到集群

    helmfileapply 

    更多用例请参考:https://github.com/kcl-lang/krm-kcl

    其他更新内容

    详见

    其他资源

    感谢所有 KCL 用户和社区小伙伴在社区中提出的宝贵反馈与建议。后续我们会撰写更多 KCL v0.5.x 新版本功能解读系列文章,敬请期待!

    更多其他资源请参考:

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1183 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 68ms UTC 17:45 PVG 01:45 LAX 10:45 JFK 13:45
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86