KCL v0.5.5 版本和社区开源双周报发布! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
peefy
V2EX    推广

KCL v0.5.5 版本和社区开源双周报发布!

  •  
  •   peefy 2023-08-24 20:36:02 +08:00 936 次点击
    这是一个创建于 790 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    内容概述

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

    • 语言及工具链更新

      • KCL 格式化工具更新

        • 支持对有语法错误的代码片段和部分代码片段进行格式化
        • 支持对缩进不对的配置块进行自动校正
      • KCL 文档工具更新

        • 支持导出文档索引页
      • KCL导入工具更新

        • 支持 Terraform Provider Schema 转换为 KCL Schema
      • KCL 导出工具更新

        • 支持由 KCL Schema 导出 OpenAPI Spec ,接入 OpenAPI 生态
      • KCL IDE 更新

        • 支持编译缓存特性,提升部分 IDE 功能性能
        • 丰富 IDE 错误信息,并提供 Import 语句快速修复能力
      • KCL 包管理工具 KPM 更新

        • kpm push 输出信息体验优化,增加推送 KCL 程序包的重复 tag 检查
        • 为 kpm push 和 kpm pkg 增加参数 vendor 决定是否将 KCL 程序包的三方库打包在一起
      • KCL 语言更新

        • 优化 Schema 语义检查和联合类型检查等错误信息
        • 支持导出配置块的类型输出
    • API 更新

      • KCL Schema 模型解析GetSchemaType API 获取 KCL 包相关信息和 Schema 属性默认值
    • 官网和用例更新

    特别鸣谢

    以下排名不分先后

    精选更新

    KCL Import 工具更新

    KCL Import 工具在 Protobuf, JsonSchema OpenAPI 模型和 Go 结构体转换为 KCL Schema 的基础上,新增 Terraform Provider Schema 到 KCL Schema 的转换支持,比如对于如下的 Terraform Provider Json (通过terraform providers schema -json > provider.json命令获得,详情请参考https://developer.hashicorp.com/terraform/cli/commands/providers/schema)

    { "format_version": "0.2", "provider_schemas": { "registry.terraform.io/aliyun/alicloud": { "provider": { "version": 0, "block": { "attributes": {}, "block_types": {}, "description_kind": "plain" } }, "resource_schemas": { "alicloud_db_instance": { "version": 0, "block": { "attributes": { "db_instance_type": { "type": "string", "description_kind": "plain", "computed": true }, "engine": { "type": "string", "description_kind": "plain", "required": true }, "security_group_ids": { "type": [ "set", "string" ], "description_kind": "plain", "optional": true, "computed": true }, "security_ips": { "type": [ "set", "string" ], "description_kind": "plain", "optional": true, "computed": true }, "tags": { "type": [ "map", "string" ], "description_kind": "plain", "optional": true } }, "block_types": {}, "description_kind": "plain" } }, "alicloud_config_rule": { "version": 0, "block": { "attributes": { "compliance": { "type": [ "list", [ "object", { "compliance_type": "string", "count": "number" } ] ], "description_kind": "plain", "computed": true }, "resource_types_scope": { "type": [ "list", "string" ], "description_kind": "plain", "optional": true, "computed": true } } } } }, "data_source_schemas": {} } } } 

    经过 KCL Import 工具可以输出为如下 KCL 代码

    """ This file was generated by the KCL auto-gen tool. DO NOT EDIT. Editing this file might prove futile when you re-run the KCL auto-gen generate command. """ schema AlicloudConfigRule: """ AlicloudConfigRule Attributes ---------- compliance: [ComplianceObject], optional resource_types_scope: [str], optional """ compliance?: [ComplianceObject] resource_types_scope?: [str] schema ComplianceObject: """ ComplianceObect Attributes ---------- compliance_type: str, optional count: int, optional """ compliance_type?: str count?: int schema AlicloudDbInstance: """ AlicloudDbInstance Attributes ---------- db_instance_type: str, optional engine: str, required security_group_ids: [str], optional security_ips: [str], optional tags: {str:str}, optional """ db_instance_type?: str engine: str security_group_ids?: [str] security_ips?: [str] tags?: {str:str} check: isunique(security_group_ids) isunique(security_ips) 

    KCL Vault 集成

    仅需三步,我们就可以使用 Vault 来存储并管理敏感信息并在 KCL 中使用。

    首先我们安装并使用 Vault 存储foobar信息

    vault kv put secret/foo foo=foo vault kv put secret/bar bar=bar 

    然后编写如下 KCL 代码 (main.k)

    apiVersion = "apps/v1" kind = "Deployment" metadata = { name = "nginx" labels.app = "nginx" annotations: { "secret-store": "vault" # Valid format: # "ref+vault://PATH/TO/KV_BACKEND#/KEY" "foo": "ref+vault://secret/foo#/foo" "bar": "ref+vault://secret/bar#/bar" } } spec = { replicas = 3 selector.matchLabels = metadata.labels template.metadata.labels = metadata.labels template.spec.cOntainers= [ { name = metadata.name image = "${metadata.name}:1.14.2" ports = [{ cOntainerPort= 80 }] } ] } 

    最后可以通过 Vals 命令行工具获得解密后的配置

    kcl main.k | vals eval -f - 

    更多详情和用例可以参考https://kcl-lang.io/docs/user_docs/guides/secret-management/vault

    社区动态

    • 恭喜来自华中科技大学的朱俊星同学成功通过 Gitlink 编程夏令营 (GLCC) 中期考核并出色地完成了 KCL Import 工具 Jsonschema 和 Terraform Provider Schema 与 KCL Schema 转换的部分,后续社区将为其授予 KCL 社区 Maintainer 角色
    • KCL 参加 CNCF 云原生计算基金会应用交付 TAG 社区会议并作项目汇报

    其他资源

    感谢所有 KCL 用户和社区小伙伴在社区中提出的宝贵反馈与建议。后续我们会撰写更多 KCL v0.5.x 新版本功能解读系列文章,敬请期待!

    更多其他资源请参考:

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