KCL v0.7.2 | Crossplane 及 KubeVela/OAM 集成 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
peefy
V2EX    分享创造

KCL v0.7.2 | Crossplane 及 KubeVela/OAM 集成

  •  
  •   peefy 2023-12-22 10:29:46 +08:00 1356 次点击
    这是一个创建于 672 天前的主题,其中的信息可能已经有所发展或是发生改变。

    image.png

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

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

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

    内容概述

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

    模型更新

    KCL 模型数量新增至300 个,增加了 k8s 1.29 版本的 KCL 模型。

    工具链更新

    • 导入工具更新

      • 导入工具支持 OpenAPI allOf 关键字校验表达式生成
      • 导入工具支持 KCL 数组和字典类型的 all/any 校验表达式生成
      • 导入工具修复 JSON Schema 数组生成 KCL 代码片段错误及字符串转义错误
    • 包管理工具更新

      • 增加对名称中包含横线的三方库的支持。
      • 修复了 update 功能无法自动通过 kcl.mod 和 kcl.mod.lock 的问题。

    KCL 更新

    • KCL 编译缓存路径支持使用环境变量 KCL_CACHE_PATH 指定
    • 修复了 KCL CLI 使用编译参数 -S 可能会导致的编译错误
    • 修复了 kcl fmt 工具对 lambda 表达式进行格式化时,结尾增加一个空行的错误。
    • 修复 Schema Doc 补全代码片段错误

    IDE 更新

    • 修复了 check 语句中变量补全失效的问题
    • VSCode Extension 更新至 0.1.3 版本,更新了部分关键字的高亮和补全
    • 新增了 builtin 函数的补全
    • 优化了函数补全的样式

    精选更新

    平替 YAML! 使用 KCL 函数增强 Crossplane 模版能力

    我们正在开发 Crossplane, 欢迎参与共建 https://github.com/kcl-lang/crossplane-kcl

    apiVersion: apiextensions.crossplane.io/v1 kind: Composition metadata: name: function-template-go spec: compositeTypeRef: apiVersion: example.crossplane.io/v1 kind: XR mode: Pipeline pipeline: - step: normal functionRef: name: kcl-function input: apiVersion: krm.kcl.dev/v1alpha1 kind: KCLRun metadata: name: basic spec: target: Resources source: | { apiVersion: "example.org/v1" kind: "Generated" } 

    实现高效云原生应用部署运维 - KCL 与 KubeVela 快速集成指南

    KCL 建立在一个完全开放的云原生世界当中,不与任何编排/引擎工具或者 Kubernetes 控制器绑定,可以同时为 Kubernetes 客户端和运行时提供 API 抽象、组合和校验的能力。用户可以根据场景选择合适的云原生工具比如 Kubectl, Helm, Kustomize, KPT, KusionStack, KubeVela, Helmfile, Crossplane 或 ArgoCD 等来和 KCL 结合将配置生效到集群。

    KubeVela 是一个 CNCF 基金会托管的现代的应用交付系统,它基于 Open Application Model ( OAM )规范构建,旨在屏蔽 Kubernetes 的复杂性,提供一套简单易用的命令行工具和 APIs ,让开发者无需关心底层细节即可部署和运维云原生应用。

    通过结合 KCL 与 KubeVela ,可以为 KubeVela OAM 配置提供更强的模版化能力如条件,循环等,减少样板 YAML 书写,同时复用 KCL 模型库和工具链生态,提升配置及策略编写的体验和管理效率。

    并且,相较于围绕 YAML 进行配置,通过 KCL 可以提供更有利于版本控制和团队协作的配置文件结构,搭配 KCL 编写的 OAM 应用模型,可以使得应用配置更易于维护和迭代。

    结合 KCL 的配置简洁性和 KubeVela 的易用性,还可以简化日常的操作任务,比如部署更新、扩展或回滚应用。可以使开发者可以更加专注于应用本身,而不是部署过程中的繁琐细节。

    通过 KCL 配置分块编写以及包管理能力与 KubeVela 结合使用,可以定义更清晰的界限,使得不同的团队(如开发、测试和运维团队)可以有条理地协作。每个团队可以专注于其职责范围内的任务,分别交付、分享和复用各自的配置,而不用担心其他方面的细节。

    以 KCL Playground 应用为例(这是使用 Go 和 HTML5 编写的应用)展示如何使用 KCL 定义需要部署的 OAM 配置,并通过 KubeVela 发布应用配置。

    • 准备工作

      • 配置 Kubernetes 集群
      • 安装 KubeVela
      • 安装 KCL
    • 新建工程并添加 OAM 库依赖

    kcl mod init kcl-play-svc && cd kcl-play-svc && kcl mod add oam 
    • 在 main.k 中编写代码
    import oam oam.Application { metadata.name = "kcl-play-svc" spec.compOnents= [{ name = metadata.name type = "webservice" properties = { image = "kcllang/kcl" ports = [{port = 80, expose = True}] cmd = ["kcl", "play"] } }] } 
    • 运行命令下发配置
    kcl run | vela up -f - 
    • 端口转发
    vela port-forward kcl-play-svc 

    然后我们可以在浏览器中看到 KCL Playground 应用成功运行

    kcl-play-svc

    KCL IDE 优化函数补全的样式

    ide-func

    其他资源

    感谢所有 KCL 用户和社区小伙伴在社区中提出的宝贵反馈与建议。后续我们会发布更多 KCL 云原生模型和工具集成文章,敬请期待! 查看KCL 社区加入我们。

    更多其他资源请参考:

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2516 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 12:12 PVG 20:12 LAX 05:12 JFK 08:12
    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