KCL 社区开源双周报 | 更多 Kubernetes 模型和 IDE 插件功能支持!


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

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

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

内容概述

感谢所有贡献者过去两周 (2023 09.07 - 10.11) 的杰出工作,以下是重点合并内容概述

🔧 语言及工具链更新

  • KCL v0.6.0 于 9.15 发布,更新内容包括语言、工具链、社区集成,详细内容请查看 https://mp.weixin.qq.com/s/f6RCZqxS2iliRGIz0036yA
  • KCL IDE 更新 - 支持对标准库和内置函数的悬停提示,支持对 KCL 代码错误的快速修复;发布适配 Intellij IDEA 2023.2 的插件版本
  • KCL 包管理工具 KPM 更新 - kpm run 支持编译 KCL 文件,并集成了导入工具
  • KCL 文档工具更新 - 支持将 docstring Examples 章节输出到文档
  • KCL 语言更新 - 优化了一些错误信息的输出,部分的错误信息中增加了修复建议

📰 官网和用例更新

  • KCL 官网新增 v0.6.0 文档版本
  • KCL 模型新增容器、服务和 Pod Security Policy (PSP) 相关的配置编辑、校验 20 个 https://github.com/kcl-lang/krm-kcl/tree/main/examples

特别鸣谢

以下排名不分先后

  • 感谢 @jakezhu9 对 KCL Import 工具 Terraform Schema 到 KCL Schema 转换的贡献 🙌 https://github.com/kcl-lang/kcl-go/pull/152
  • 感谢 @jakezhu9 对 kpm 集成 Import 工具的贡献 🙌 https://github.com/kcl-lang/kpm/pull/194
  • 感谢 @zwpaper 对 KCL 文档和 Tree Sitter Grammar 做出的贡献 🙌 https://github.com/kcl-lang/tree-sitter-kcl/pull/1
  • 感谢 @mrgleeco, @ghpu, @steeling, @prahaladramji, @zwpaper 等在使用 KCL 及工具链过程中提出的宝贵反馈和讨论 🙌

精选更新

KCL IDE 插件更新

在最近的 0.6.0 发布中,KCL IDE 插件增加了标准库和 builtin 函数的悬停提示,新增支持对 KCL 代码错误的快速修复。此外,还增加了 language Server 侧的 e2e 测试及 konfig 仓库的集成测试,以保障 IDE 插件的稳定迭代。在尚未发布的版本中,还新增了 kcl-language-server version 子命令以输出版本信息。欢迎升级、使用 —— KCL 在各个 IDE 平台的插件安装方式请查看https://kcl-lang.io/docs/user_docs/getting-started/install/#2-install-kcl-ide-extension

 

IntelliJ 插件

  • IntelliJ 插件现已适配 2023.2+ 版本,您可以在下面的链接中下载安装:

https://github.com/kcl-lang/intellij-kcl/releases

KCL 包管理工具

kpm run 支持编译 KCL 文件,并集成了导入工具,同时增加了 —quiet 来屏蔽输出日志。

KCL 语言更新

在尚未发布的版本中,KCL 的编译命令优化了一些错误信息的输出,部分的错误信息中增加了修复建议:

KCL 模型更新

近几周内,我们提供了更多针对容器、服务和 Pod Security Policy (PSP) 配置编辑及校验的使用案例。您可参照对应的示例引入以上配置和校验: https://github.com/kcl-lang/krm-kcl/tree/main/examples

下面我们以 Kubectl KCL 插件和 disallow-svc-lb 模型进行说明,disallow-svc-lb 的作用是对 Service 资源进行校验,不允许 Service 资源的类型设置为 LoadBalancer,编写如下 YAML 文件 (manifests.yaml):

apiVersion: krm.kcl.dev/v1alpha1
kind: KCLRun
metadata:
name: disallow-svc-lb
annotations: 
krm.kcl.dev/version: 0.0.1
krm.kcl.dev/type: validation
documentation: >-
A validation that prevents the creation of Service resources of type `LoadBalancer`
spec:
source: oci://ghcr.io/kcl-lang/disallow-svc-lb
---
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app.kubernetes.io/name: MyApp
ports:
- name: http
protocol: TCP
port: 80
type: LoadBalancer # 错误地设置了 LoadBalancer

通过 Kubectl KCL 工具在客户端进行资源验证:

kubectl kcl apply -f manifests.yaml

我们会得到如下结果:

A validation that prevents the creation of Service resources of type `LoadBalancer`, for Service: my-service

社区动态

集成了 KCL 0.6 的 KusionStack 发布 0.9 版本,详细更新内容请查看:https://mp.weixin.qq.com/s/nZOHdmgcfOMRf0XUXfSJ-g

活动预告

KCD 杭州站 10.21 日线下活动

Kubernetes Community Days(KCD)杭州站将于 10.21 举行线下活动,活动详情及报名:https://mp.weixin.qq.com/s/rnNhmT4yoO66bGYNtFtG6g

KCL 开源双周会

近期 KCL 开源双周会将于 10.12 进行,欢迎社区小伙伴踊跃参与、交流:https://github.com/kcl-lang/community/discussions/8

点击链接入会,或添加至会议列表: https://meeting.tencent.com/dm/Hc6sNpqTWnPb

#腾讯会议:778-2381-6338

复制该信息,打开手机腾讯会议即可参与

其他资源

❤️ 感谢所有 KCL 用户和社区小伙伴在社区中提出的宝贵反馈与建议。预计 11 月底我们会正式发布 KCL v0.7 新版本,敬请期待!

更多其他资源请参考:

  • KCL 网站
  • KusionStack 网站
  • KCL 2023 路线规划
  • KCL v0.7.0 Milestone
  • KCL Github Issues
  • KCL Github Discussion
  • KCL Community

相關推薦

2023-08-24

编程语言技术和实践来改进对大量繁杂配置比如云原生 Kubernetes 配置场景的编写,致力于构建围绕配置的更好的模块化、扩展性和稳定性,更简单的逻辑编写,以及更简单的自动化和生态工具集成。 本栏目将会双周更新 KCL 语

2023-08-11

编程语言技术和实践来改进对大量繁杂配置比如云原生 Kubernetes 配置场景的编写,致力于构建围绕配置的更好的模块化、扩展性和稳定性,更简单的逻辑编写,以及更简单的自动化和生态工具集成。 本栏目将会双周更新 KCL 语

2023-04-18

类类似的问题 env = "prod" config = {if env == "prod": labels = {"kubernetes.io/env" = env}} Schema 必选属性检查 在之前的 KCL 版本中,在编写如下 KCL 代码时,没有按预期提示 versions 属性没有赋值的错误,在 KCL v0.4.6 版本中,我们修

2023-11-10

编程语言技术和实践来改进对大量繁杂配置比如云原生 Kubernetes 配置场景的编写,致力于构建围绕配置的更好的模块化、扩展性和稳定性,更简单的逻辑编写,以及更简单的自动化和生态工具集成。 本栏目将会双周更新 KCL 语

2023-07-18

编程语言技术和实践来改进对大量繁杂配置比如云原生 Kubernetes 配置场景的编写,致力于构建围绕配置的更好的模块化、扩展性和稳定性,更简单的逻辑编写,以及更简单的自动化和生态工具集成。 本文重点介绍 KCL v0.5.0 版本

2023-11-24

编程语言技术和实践来改进对大量繁杂配置比如云原生 Kubernetes 配置场景的编写,致力于构建围绕配置的更好的模块化、扩展性和稳定性,更简单的逻辑编写,以及更简单的自动化和生态工具集成。 本栏目将会双周更新 KCL 语

2023-12-02

编程语言技术和实践来改进对大量繁杂配置比如云原生 Kubernetes 配置场景的编写,致力于围绕配置的模块化、扩展性和稳定性,打造更简单的逻辑编写体验,构建更简单的自动化和生态集成路径。 本文重点介绍 KCL v0.7.0 版本的

2023-03-21

部分编译器报错改善 KCL Playground 支持代码分享能力 Kubernetes KPT 工具集成方案设计 Kubernetes Helm KCL 工具插件方案   下一步计划 KPM 包管理工具正式发布 更多 KCL 编译器语法错误恢复支持新版 IDE 插件发布,性能预

2024-01-05

编程语言技术和实践来改进对大量繁杂配置比如云原生 Kubernetes 配置场景的编写,致力于构建围绕配置的更好的模块化、扩展性和稳定性,更简单的逻辑编写,以及更简单的自动化和生态工具集成。 本栏目将会双周更新 KCL 语

2023-02-28

name = "global-name" metadata = { name = "metadata-name" labels = { "app.kubernetes.io/name" = name# 直接引用 `metadata.name` "app.kubernetes.io/instance" = name# 直接引用 `metadata.name` } } data = { name = name# 引用全局的 `name` 变量 metadata = metadata# 引用全局的 `metadata

2022-12-09

/milestone/2?closed=1 文档​ KCL 网站 初步建立,并完善 Kubernetes 场景相关文档. 更多网站信息详见 https://kcl-lang.github.io/ 社区动态​ KCL 社区新增三名外部贡献者 @my-vegetable-has-exploded, @possible-fqz, @orangebees, 感谢他们热情并

2022-12-02

/YAML 等配置。这篇文章我们重点讲述使用 KCL 生成并管理 Kubernetes 资源,并通过一些简单的例子给大家一个简单的快速开始,更多的内容我们会在后续文章展开。 为什么使用 KCL 当我们管理 Kubernetes 资源清单时,我们常常会手

2023-08-03

ere 3.1.0 新增了“边缘计算”、“计量计费” 等功能,将 Kubernetes 从云端扩展至边缘; KubeSphere 3.2.0 新增了对 “GPU 资源调度管理” 与 GPU 使用监控的支持,进一步增强了在云原生 AI 场景的使用体验; KubeSphere 3.3.0 新增了基于

2023-03-23

热乎的 PR:https://github.com/KusionStack/KCLVM/pull/460 效果展示: