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

329 天前
 peefy

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

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

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

内容概述

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

📦 模型更新

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

🔧 工具链更新

💻 KCL 更新

📒 IDE 更新

精选更新

平替 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 发布应用配置。

kcl mod init kcl-play-svc && cd kcl-play-svc && kcl mod add oam
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 IDE 优化函数补全的样式

其他资源

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

更多其他资源请参考:

981 次点击
所在节点    分享创造
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1002528

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX