KusionStack 是蚂蚁开源的云原生可编程技术栈!
文 | 袁昊(花名:浮鸢) KusionStack 核心贡献者 蚂蚁 PaaS 核心团队高级研发工程师 |
一、KusionStack简介
KusionStack 是一个可编程、高灵活性的应用交付及运维技术栈,灵感源于融合(Fusion)一词,旨在帮助企业构建的应用运维配置管理平面及 DevOps 生态。基于 Platform as Code (平台服务即代码)理念,研发者可以快速收敛围绕应用运维生命周期的全量配置定义,面向混合技术体系及云环境,完成从应用运维研发到上线的端到端工作流程,真正做到一处编写,随处交付。
二、为何需要监控资源状态变更
在用户使用 kusion apply 命令创建、修改或者删除了资源后,只能得到操作成功或失败的及时反馈。而对于何时操作完成,却不得知。因此有了对实时监控资源状态变更的需求。kusion 的操作对象,从来都不是某个资源,或是某类资源,而是一个配置栈(Stack)。因此,对于 watch 能力,要求支持某个 Stack 中的全部资源。
Kusion 目前已经对接的 Runtime 有 Kubernetes 和 Terraform,对于 k8s 的资源,提供了 Watch 接口可以实时获取的资源变更;而对于 Terraform 生态,相关的并不存在所谓的 Live Manifest,Terraform 侧只是保存了操作执行成功后的资源清单,相当于是缓存。
三、设计目标和工作流
本次 Watch 特性虽然还处于开始阶段,目的在于快速打通 Watch 的工作流。而对 Runtime 的完整支持作为下个阶段的实现重心。以下列出了 开始 阶段的前提条件:
仅支持 Kubernetes
使用 Namespace、Deployment、Service 作为试点资源
目标明确后,我们看看整个工作流程:
大致对应以下五个步骤:
编译 Stack,获取资源列表
触发 Engine 接口,启动监听
Engine 遍历资源列表,异步触发 Runtime Watch 接口
Runtime 过滤资源相关 Event 对象,解析出字段变更信息,返回给 IaC Engine
以表格形式渲染实时刷新,直到资源全部 Ready
四、监控效果演示
虽然还是 Alpha 阶段,不过已经可以尝鲜了。使用方式也很简单,只需要在 kusion apply
命令后增加 --watch
参数。
以大库中的示例项目 base/examples/server/app_service
做演示:
我们可以看到命令行输出以不同的颜色显示资源的不同状态,同时状态变化时将同步显示更新。下个阶段将继续完善对Runtime的完整支持。
五、了解更多
Kusion Github
https://github.com/KusionStack/kusion
KusionStack First Use Case: Code City
https://kusionstack.io/docs/user_docs/getting-started/usecase
KusionStack User Guides
https://kusionstack.io/docs/user_docs/guides/
KCL Quick Start
https://kusionstack.io/docs/user_docs/getting-started/kcl
Architecture & Concepts: Konfig Mono Repo
https://kusionstack.io/docs/user_docs/concepts/konfig
Architecture & Concepts: Kusion CLI
https://kusionstack.io/docs/user_docs/concepts/kusion