Skip to main content

· 阅读需要 1 分钟

2024 年 8 月 21 日至 23 日,为期 3 日的 KubeCon + CloudNativeCon + Open Source Summit + AI_dev China 2024 大会在香港圆满落幕。期间,众多国内外社区领袖和技术专家,共同带来了超过 140 场精彩的演讲,分享了他们在各自领域的深刻洞察和宝贵经验。KCL 社区也在这次活动中与来自各个社区的小伙伴们进行了交流与分享。

Lighting Talk: KCL: Simplifying Kubernetes Manifests Management

Lighting Talk PPT: 下载 PDF

pptcover

在这次活动中,KCL 通过一场 Lighting Talk 为大家介绍了 KCL 在简化 kubernetes 项目配置管理,提升配置管理效率和稳定性方面作出的努力。

kcllightingtalk

KCL 作为一种 IaC 领域的领域特定语言(DSL),主要解决 IaC 领域中常见的配置规模爆炸,认知成本过高,缺乏有效的动态配置管理,配置可靠性保证等问题,并且能够轻松的与社区生态进行集成。

为了有效的降低配置规模,KCL 提供了 Schema 用来抽象通用的配置结构借助包管理机制支持可重用结构的分发和复用。并且,KCL 通过多文件的同名配置合并能够将一份配置中的内容分隔在不同文件中编写,对不同的配置开发人员屏蔽不必要的陌生概念,降低开发人员的认知负担。同时,作为一个语言项目,丰富的工具链和功能强大 IDE 也极大程度上提高了开发人员开发体验。

ppt1

KCL 支持动态配置管理,提供了声明式命令式两种方式。开发者既可以通过 if/for/lambda 等表达式 在代码中编写命令式的代码生成配置。

ppt2

也可以通过 声明式的配置合并/覆盖运算符 对不同的配置块和配置字段进行合并与覆盖。

ppt3

KCL 通过类型系统测试规则校验三板斧来提高配置的可靠性。KCL 作为一种类型安全的配置语言,能够在编译阶段提前暴露大量类型错误,开发者在 IDE 中就能够得到错误提示。

ppt4 ppt5

同时,最简单也最有效的软件可靠性保证的方法“测试”,在 KCL 中也得到了支持,你可以通过 lambda 编写为配置内容编写单元测试。

ppt6 ppt7

最后,编写验证规则对配置内容进行检查一直是 IaC 领域一个常见的议题,KCL 支持通过Assert/Check/Rule等特性编写对应的配置校验规则对配置内容进行检查。

ppt8

KCL 提供了 12 种语言的 SDK,支持与大多数项目进行集成;并且支持通过插件机制扩展 KCL 语言的能力。KCL 还提供了 KCL-Operator 支持通过 KCL 语言校验,更新和生成 kubernetes 集群中的资源。借助上述能力,KCL 能够轻松的与 Crossplane,ArgoCD 等社区工具完成集成。

KCL & Crossplane 一次令人开心的线下交流

在这次 kubecon 活动中,KCL 也与 Crossplane 社区的伙伴进行了交流,来自 Crossplane 社区伙伴也为我们带来了精彩的分享。

Crossplane 是一个开源项目,旨在为云原生应用程序提供基础设施即代码的能力。它允许开发者和运维团队以与 Kubernetes 相似的方式管理各种云资源,支持多云环境和混合云架构。

crossplaneppt1

在这次分享中,Crossplane 在演讲中提到了关于在软件开发的生命周期中尽早暴露问题的重要性。

crossplaneppt2

Crossplane 在介绍他们保证配置可靠性的过程中也提到了如何使用 KCL 来提升配置的可靠性。

crossplaneppt3

通过 KCL 来为配置编写对应的测试用例,以尽早暴露配置中出现的问题。

crossplaneppt4

KCL 和 kusionstack 社区也同 crossplane 社区的同时进行了令人开心的线下沟通,也期待后续能够展开更加深入的合作。

photo

其他资源

感谢所有 KCL 用户在此次版本更新过程中提出的宝贵的反馈与建议。更多其他资源请参考:

欢迎加入我们的社区进行交流 👏👏👏:https://github.com/kcl-lang/community

· 阅读需要 1 分钟

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

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

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

特别鸣谢

感谢过去两周所有的社区参与者,以下排名不分先后

  • 感谢 @officialasishkumar 对 KCL 包管理工具添加 Git 仓库子目录依赖能力的贡献 🙌
  • 感谢 @Gmin2 对 KCL 包管理工具模块存放路径特性的贡献 🙌
  • 感谢 @liangyuanpeng 对 karpenter, gateway-api 等模块以及 KCL OpenAPI 工具的贡献 🙌
  • 感谢 @NishantBansal2003, @varshith257 对 KCL 包管理工具三方依赖 checksum 检查的调研和贡献。🙌
  • 感谢 @Harsh4902, @Gmin2, @shishir-11, @RehanChalana 对 Intellij IDE KCL LSP 插件的调研和贡献。🙌
  • 感谢 @Vishalk91-4 对 KCL tree-sitter 语法的持续贡献。🙌
  • 感谢 @dennybaa 对 crossplane, crossplane-vault-provider 等模块的贡献 🙌
  • 感谢 @Manoramsharma 对 KCL 包管理工具依赖别名特性,忽略 TLS 检查和外部 Git 依赖功能的贡献。🙌
  • 感谢 @DavidChevallier 对 cilium, external-secrets 等模块的贡献 🙌
  • 感谢 @suin 对 outdent 模块的贡献 🙌
  • 感谢 @Lukáš Kubín, @ChrisK, @Sergey Ryabin, @Lan Liang, @Endre Karlson, @suin, @Zack Zhang, @v3xro, @soubinan, @juanzolotoochin, @mnacharov, @dennybaa, @ron1, @DavidChevallier, @wmcnamee-coreweave, @vfarcic, @phisco, @juanzolotoochin, @juanique, @zackzhangverkada, @warmuuh 和 @novohool 等在近两周使用 KCL 过程中提供的宝贵建议与反馈 🙌

内容概述

🏄 语言更新

  • 优化函数参数调用/返回值 Dict 转 Schema 类型推导和检查,可以省略 Schema 名称简化配置书写
  • 优化配置合并运算符的类型检查,可以在编译时发现更多类型错误
  • 对类型为单子面值常量 Schema 属性支持省略默认值

优化前

schema Deployment:
apiVersion: "apps/v1" = "apps/v1"

优化后

schema Deployment:
apiVersion: "apps/v1" # 类型值与默认值相同,可以省略默认值

📦️ 模块更新

  • k8s 更新至 1.31
  • gateway-api 更新至 0.2.0
  • karpenter 更新至 0.2.0
  • crossplane 更新至 1.16.0
  • cilium 更新至 0.3.0
  • external-secrets 更新至 0.1.2
  • 新增模型列表
    • crossplane-provider-vault 1.0.0
    • outdent 0.1.0
    • kcl_lib 0.1.0

📬️ 工具更新

  • kcl import 工具支持导入整个 Go Package 并将其中所有的 Go 结构体定义转换为 KCL Schema 定义
  • kcl import 工具新增对包含 AllOf 验证字段的 JSON Schema 格式导入为 KCL Schema 的支持
  • kcl fmt 工具支持保留用户在多个代码片段之间的空行,不会全部删除
  • 修复 kcl fmt 工具对 Schema 索引签名注释错误的格式化位置
  • 修复 kcl import 导入 Kubernetes CRD 时设置 -o 参数非预期的报错
  • 修复 kcl import 导入空 Go 结构体输出非预期的 KCL Schema 错误

💻 IDE 更新

  • 支持使用 kcl.work 配置文件划分 IDE 工作空间
  • 修复 Schema 示例化参数无法显示语义信息的问题

⛵️ API 更新

🔥 社区集成更新

  • Flux KCL Controller 发布 v0.4.0 版本,对齐绝大部份 Flux Kustomize Controller 功能,满足直接使用 KCL 代替 Kustomize 作 Flux GitOps 的需求
  • KRM KCL 规范发布 v0.10.0 beta 版本,新增私有 Git 仓库拉取和忽略 TLS 检查等功能
  • KCL Nix Package 发布 v0.9.8 版本
  • Crossplane KCL Function 发布 v0.9.4 版本,具体内容详见 https://github.com/crossplane-contrib/function-kcl
  • KCL Bazel Rules 更新 KCL v0.10.0 beta 版本,具体内容详见 https://github.com/kcl-lang/rules_kcl

其他资源

❤️ 查看 KCL 社区 加入我们。

更多其他资源请参考: