KCL 开源社区双周快讯 | KCL 0.5.1 和 0.5.2 版本正式发布
KCL 是一个开源的基于约束的记录及函数语言并通过成熟的编程语言技术和实践来改进对大量繁杂配置比如云原生 Kubernetes 配置场景的编写,致力于构建围绕配置的更好的模块化、扩展性和稳定性,更简单的逻辑编写,以及更简单的自动化和生态工具集成。
本栏目将会双周更新 KCL 语言社区最新动态,包括功能、官网更新和最新的社区动态等,帮助大家更好地了解 KCL 社区!
KCL 官网:https://kcl-lang.io
内容概述
过去两周 (2023 07.26 - 08.09),KCL 所有项目中总计有 34 个 PR 被合并,感谢所有贡献者的杰出工作,以下是重点合并内容概述
- 🔧 语言及工具链更新
-
- KCL Doc 文档工具新增 Markdown 文档导出支持
- KCL Import 导入工具更新 - 支持 JsonSchema 转换为 KCL Schema
- KCL 包管理工具 KPM 支持在 kcl.mod 中设置编译参数,优化命令行提示信息
- KCL IDE 插件优化补全、跳转和悬停文档显示等功能,并支持 NeoVim 编辑器
- 🏄 API 更新
- KCL Schema 模型解析 GetSchemaType API 新增装饰器信息和包信息字段
- 🏠 社区扩展更新
- Helmfile KCL 插件支持
- 📰 官网和用例更新
- KCL 官网新增 v0.5.x 文档版本选择
- 新增 KCL 用例仓库: https://github.com/kcl-lang/examples
特别鸣谢
-
感谢 @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 代码
schema Customer: """ Customer Attributes ---------- name: str, optional address: Address, optional """ name?: str address?: Address schema Address: """ Address Attributes ---------- city: str, optional state: State, optional """ city?: str state?: State schema State: """ 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: # Use KCL Plugin to mutate or validate Kubernetes manifests. - 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 | {if resource.kind == "Deployment": metadata.annotations: {"managed-by" = "helmfile-kcl"}} for resource in option("resource_list").items]
在上述配置中,我们引用了 Prometheus Helm Chart, 并通过一行 KCL 代码就可以完成 Prometheus 的所有的 Deployment 资源注入标签 managed-by="helmfile-kcl"
,通过如下命令我们可以将上述配置下发到集群
helmfile apply
更多用例请参考: https://github.com/kcl-lang/krm-kcl
其他更新内容
详见
- KCL v0.5.1 Release: https://github.com/kcl-lang/kcl/releases/tag/v0.5.1
- KCL v0.5.2 Release: https://github.com/kcl-lang/kcl/releases/tag/v0.5.2
其他资源
❤️ 感谢所有 KCL 用户和社区小伙伴在社区中提出的宝贵反馈与建议。后续我们会撰写更多 KCL v0.5.x 新版本功能解读系列文章,敬请期待!
更多其他资源请参考:
-
KCL 网站 : https://kcl-lang.io/
-
KusionStack 网站: https://kusionstack.io/
-
KCL 2023 路线规划: https://kcl-lang.io/docs/community/release-policy/roadmap
-
KCL v0.6.0 Milestone: https://github.com/kcl-lang/kcl/milestone/6
-
KCL Github Issues: https://github.com/kcl-lang/kcl/issues
-
KCL Github Discussion: https://github.com/orgs/kcl-lang/discussions
-
KCL Community: https://github.com/kcl-lang/community
-
KCL v0.5.1 Release: https://github.com/kcl-lang/kcl/releases/tag/v0.5.1
-
*KCL v0.5.2 Release: https://github.com/kcl-lang/kcl/releases/tag/v0.5.2

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Naive Ui Admin v1.9.0 发布,中后台前端框架
Naive Ui Admin v1.9.0 已经发布,中后台前端框架。 此版本更新内容包括: 新增 BasicForm 组件,支持 setLoading, setSchema 方法 新增 countField 总数字段名配置 优化 yarn 切换至 pnpm 优化 BasicForm 组件,验证返回值 优化 BasicTable 组件 修复 TableAction组件,左右间隔不生效 关闭253 修复 BasicTable组件没有数据会一直请求接口 关闭#251 修复 useModal+useForm组件的bug 关闭#250 修复 手机端侧边导航风格不一致bug 关闭[#247](https://github.com/jekip/naive-ui-admin/issues/247 移除 yarn.lock 文件 依赖升级 详情查看:https://gitee.com/Ahjung/naive-ui-admin/releases/v1.9.0
- 下一篇
TypeScript 5.2 RC
TypeScript 5.2 发布了首个 RC 版本。 5.2 新特性 using声明和显式资源管理(using Declarations and Explicit Resource Management) 装饰器元数据(Decorator Metadata) 命名和匿名元组元素(Named and Anonymous Tuple Elements) 为数组并集 (Unions of Arrays) 提供更简单的方法(Easier Method Usage for Unions of Arrays) 面向对象成员的逗号自动补全(Comma Completions for Object Members) 优化持续类型兼容性检查(Ongoing Type Compatibility) 重构内联变量(Inline Variable Refactoring) 自 5.2 Beta 发布以来的变化: TypeScript 5.2 实现了即将推出的 ECMAScript 功能,称为装饰器元数据。此功能的关键思想是使装饰器可以轻松地在其使用的任何类上创建和使用元数据。 每当使用装饰器函数时,它们现在...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7