1、使用 KCL 重塑配置管理界面徐鹏飞|KCL 项目 Maintainer目录01背景02概念04实践03架构05规划背景01 认知认知负担负担应用开发人员需要面对复杂的基础设施和平台概念不像基础设施配置有 Terraform 等 IaC 工具,Kubernetes 是平台的平台,特别是在客户端缺乏轻量的配置组合和校验工具 静态配置静态配置YAML 膨胀,维度爆炸跨团队配置协作负担和配置漂移 效率效率、可靠性低可靠性低缺乏标准的测试验证手段,大多是胶水代码或者脚本的拼盘缺乏高效配置协同的工具,大多通过人肉拉群解决减轻基础设施对开发人员的负担,提高配置管理效率背景Kubernetes 中的声明式应
2、用管理:https:/ 平台工程白皮书:https:/tag-app-cf.io/whitepapers/platforms/Google SRE 工作手册:https:/sre.google/workbook/configuration-specifics/屏蔽基础设施和平台细节,降低开发者认知负担屏蔽基础设施和平台细节,降低开发者认知负担自定义抽象模型解决 YAML 或者模版配置维度爆炸问题可编程支持:逻辑、类型、函数、模块、无副作用地进行大规模配置管理无副作用地进行大规模配置管理可扩展风险左移自动化高性能包管理支持通过插件为已有的配置管理工具进行增强通过插件为已有的配置管理工具进行增强H
3、elmKustomizekpt背景KCL 可以做什么概念02开发者可以理解的声明式应用配置模型动态配置管理 DCM:可编程可扩展关注点分离:应用/平台Dev/SRE风险左移:实时的配置错误提示标准的 OCI 配置交付和包管理支持:KPMValidation:通过 KCL Schema/Rule 等结构对配置进行约束校验Mutation:通过 KCL 函数对资源进行变换或注入配置配置Standalone KCL 形式形式遵循统一的遵循统一的 KRM Function 规范规范可编程可扩展可编程可扩展多种代码源支持:OCI,Git,Https,https:/ KCL 形式形式https:/kcl-
4、lang.io/docs/user_docs/guides/gitops/gitops-quick-start配置驱动的工作流:同时支持Standalone KCL 和KRM KCL 配置格式多种 CI/CD 和 GitOps 工具支持自动化多语言 SDK:Go,Rust,Python,Java包管理支持:KPM 工具和多种 Registry 支持数据和 Schema 集成:KCL Import 工具运行时集成:使用 KCL Operator 而不是重复开发Admission WebhookKRM 支持:统一的规范和插件支持 e.g.,kubectl-kcl plugin,helm-kcl p
5、lugin,kustomize-kcl plugin,kpt-kcl-plugin 平台工程工具支持:作为 DCM 语言配合不同引擎/编排器进行应用交付IaC/IaDAdmission RequestMutating/Validating WebhookKCL OperatorHelm/Kustomize/KPT/.KCL Plugins客户端运行时SDKs集成架构03Language+Tools+IDEs+SDKs+PluginsTools&CI/CD Engagementkcl-formatkcl-lintkcl-testkcl-docKCL Coding AssistantHighlig
6、htGo To Def/RefCompletionFormatCompileDebugError/Warning CheckingTestLSPKCL Language ServerKCL CompilerKCL Package Manager工作空间组件技术架构配置生成自动合并多种合并策略支持配置变换数据/Schema 集成CRUD API配置校验静态类型约束规则不可变性配置抽象关注点分离KCL SETTA 2022 Paper:https:/ 引擎Structured KVTemplated KVProgrammable KVTyped KVModeled KVPros.Easy to w