KusionStack 团队很高兴地向大家宣布,Kusion v0.11.0 版本已经发布啦!本次总共完成了超过 60 个新功能,19 处问题修复以及 14 篇文档更新;截至目前 Kusion 已共计有 20 位贡献者 🎉
吉祥物小 K 同学带大家查收 v0.11.0 版本新特性
在这篇文章中,您将了解一些 Kusion 团队精心挑选的令人兴奋的新功能,这些新特性有望显著地影响跨团队协同工作流。
新增特性
Kusion Module
01
应用构建模块扩展机制
在上一个版本中,引入了应用程序开发者和平台工程师之间的协作范式;在 v0.11.0 新版本中,产品进一步地完善了相关的 AppConfiguration 应用模型与 Kusion Module 能力模块扩展机制。
Kusion Module 是由平台工程师设计的可重用构建模块,用于标准化应用程序部署,便于应用开发人员自服务,通常包括面向开发人员的 Module Schema 和由平台工程师实现的 Module Generator。更多关于 Kusion Module 的介绍可参考:
https://www.kusionstack.io/docs/kusion/concepts/kusion-module/overview
Kusion Module Overview
为了适配上图中的 Kusion Module 框架,更新了 AppConfiguration 应用模型,并开放了其中的应用配件(accessories)字段,以支持向应用程序 Workload 添加各种功能模块。并且内置了一些常用的模块,如网络(Network)、数据库(MySQL & PostgreSQL)、监控(Monitoring)以及运维规则(OpsRule)等。
下面的两个文件展示了一个使用阿里云 MySQL RDS 并对外暴露 80 端口的 WordPress 应用的配置;其中的 workspace.yaml 主要由平台工程师编写,实现对应用所需的 RDS 云服务提供商、规格和实例以及子网等配置的标准化;main.k 则主要由应用研发编写,在其中声明了使用 network 和 mysql 这两个 Kusion Module,其中 mysql 相关的敏感信息(如:连接地址、用户名、密码等)将以环境变量的形式自动注入进应用容器中;用户也可以使用自定义的 Kusion Module。
# workspace.yaml
# workspace.yaml declares the standardized MySQL configurations for Alicloud RDS
modules:
kusionstack/mysql@0.1.0:
default:
cloud: alicloud
size: 20
instanceType: mysql.n2.serverless.1c
category: serverless_basic
privateRouting: false
subnetID: [your-subnet-id]
databaseName: "wordpress-mysql"
# main.k
# main.k declares customized configurations for app stacks.
import kam.v1.app_configuration as ac
import kam.v1.workload as wl
import kam.v1.workload.container as c
import network as n
import mysql
wordpress: ac.AppConfiguration {
workload: wl.Service {
containers: {
wordpress: c.Container {
image: "wordpress:6.3"
env: {
"WORDPRESS_DB_HOST": "$(KUSION_DB_HOST_WORDPRESS_MYSQL)"
"WORDPRESS_DB_USER": "$(KUSION_DB_USERNAME_WORDPRESS_MYSQL)"
"WORDPRESS_DB_PASSWORD": "$(KUSION_DB_PASSWORD_WORDPRESS_MYSQL)"
"WORDPRESS_DB_NAME": "mysql"
}
resources: {
"cpu": "500m"
"memory": "512Mi"
}
}
}
replicas: 1
}
accessories: {
"network": n.Network {
ports: [
n.Port {
port: 80
}
]
}
"mysql": mysql.MySQL {
type: "cloud"
version: "8.0"
}
}
}
Kusion Module 可以被构建为 OCI 制品实现远端存储与分发,Kusion CLI 将通过 gRPC 实现对本地 Kusion Module 的调用。
为了能使平台工程师可以更高效地进行自定义 Module 的研发,产品还同时提供了 Kusion Module 研发框架与脚手架;此外还新增了 kusion mod 命令行方便用户在本地构建跨平台的 Kusion Module 制品并发布至远端的 OCI 仓库中(Github Packages)。
Kusion Module 研发脚手架可参考:
https://github.com/KusionStack/kusion-module-scaffolding
Kusion Core Workflow
02
Kusion 核心工作流
Kusion CLI 的核心工作流(init - build - preview - apply - destroy)也发生了一些重大变化:产品简化了 kusion init 命令行的使用,在其中嵌入了可供用户快速上手 Kusion CLI 的示例应用;同时,kusion build 命令行升级为了 kusion generate,用于适配使用 Kusion Module 将用户意图 (Intent) 转换为应用资源清单 (Spec) 并支持 Spec 的版本化存储;此外,kusion preview、kusion apply 和 kusion destroy 的命令行交互界面也有所优化。Kusion 核心 workflow 相关命令可参考:
https://www.kusionstack.io/docs/kusion/reference/commands/
kusion init cmd
kusion generate, preview, apply & destroy cmd
Kusion Workspace Management
03
工作空间管理升级
Kusion 将应用的一个最小独立运维单元抽象为了 Stack,并将其部署的环境抽象为 Workspace;在上一个版本中,应用 Stack 只能绑定至与其同名的 Workspace 上。在这个版本中,对二者进行了解耦,从而实现更加灵活的 Workspace 管理。同时,当用户没有明确指定当前 Workspace 时,Kusion CLI 将使用默认 (default) Workspace,用户可使用新增的 kusion workspace switch 命令进行当前工作空间的切换。相关详细说明可参考:
https://www.kusionstack.io/docs/kusion/concepts/workspace
kusion workspace cmd
Kusion Storage Backend
04
存储后端管理升级
产品新增了 kusion config 命令行,方便用户拥有更灵活、强大的 Kusion CLI 存储后端管理能力;同时还实现了在 MySQL、S3 和 OSS 中对 Workspace 和 Spec 进行存储的支持,用户现在可以使用 Kusion CLI 实现应用配置数据与状态在不同 Workspace 下的存储后端配置与管理。相关详细说明可参考:
https://www.kusionstack.io/docs/kusion/concepts/backend
kusion config cmd
User Experience
05
用户体验提升
针对需要 Terraform 资源的应用,Kusion CLI 现已支持在核心 Workflow 中自动下载 Terraform CLI,无需用户手动安装。
问题修复
在 v0.11.0 版本中,主要修复了如下 bug:
修复了 Kusion CLI 在 Windows 上的安装与使用的一些问题
修复了 Kusion CLI 一些过期或不准确的提示与输出
修复了 Kusion CLI 的部分日志相关的问题
重大变化
在 v0.11.0 版本中,需要大家注意的重大变化包括:
kusion init 命令行不再支持使用应用模板初始化应用,相关机制将在后续版本中进行升级
kusion build 命令升级为 kusion generate
应用 AppConfiguration 与 Workload 模型从 catalog 仓库中迁移至 kam 仓库,目前 catalog 仓库主要用于存放内置的 Kusion Module 示例
总结
在 v0.11.0 版本中,实现了 Kusion Module 扩展机制,并升级了 Kusion CLI 核心工作流、Workspace 管理以及存储后端配置。除了上述提到的改进之外,本次发布还包含了大量小改进与变化,您可以在 GitHub Release Note 中找到更多完整的细节:
https://github.com/KusionStack/kusion/releases