我们很高兴地向大家宣布,Kusion v0.12.1 版本已经正式发布啦!我们本次总共更新了超过 18 个新功能,8 处问题修复以及 5 篇文档更新,截止目前 Kusion 社区已共计有来自海内外 25 位贡献者 🎉
吉祥物小 K 同学带大家查收 Kusion v0.12.1 版本新特性
我们一如既往地对不断壮大的 KusionStack 社区的宝贵贡献表示感谢,在这篇文章中,您将了解一些我们精心挑选的令人兴奋的新功能。
新增特性
Backend Storage
01
优化存储后端管理
在 v0.12.1 版本中,我们为 Kusion 添加了对 AWS S3 路径样式(path-style)endpoint 的支持,并且提供了 kusion release unlock 命令用于解锁处于异常状态的 Release 文件。
kusion release unlock command
Sensitive Data
02
优化敏感信息展示
在过去的版本中,kusion preview 命令展示 Kubernetes Secret 资源时会将 data 和 stringData 的明文数据直接透出,这将带来敏感信息泄漏的风险。在这个版本中,我们优化了敏感信息的预览效果,Kubernetes Secret 资源的 data 和 stringData 将不会明文展示(Secret 数据在更新时仍可以计算出发生了变化)。
masked data & stringData preview result
Terraform Resources
03
优化 Terraform 资源管理
在 v0.12.1 版本中,Kusion 提供了对存量 Terraform 云资源的导入能力,用户可以在 Workspace 的 Module 配置中填充 importedResources 字段,在其中声明 Spec 文件中 Kusion 资源 ID 到待导入云资源实例 ID 的映射,Kusion 在进行预览和生效时会先将指定的 Kusion 资源状态同步为待导入资源实例的状态。需要注意的是,对于导入的资源,Kusion 在进行 destroy 时会跳过对其的删除(因为可能存在多个应用共享该资源的情况)。此外,在这个版本中,Kusion 还支持并发操作独立的 Terraform 资源,从而可以提高运维执行效率。
一份示例配置可参考:
modules:
mysql:
path: oci://ghcr.io/kusionstack/mysql
version: 0.2.0
configs:
default:
cloud: alicloud
size: 20
instanceType: mysql.n2.serverless.1c
category: serverless_basic
privateRouting: false
subnetID: vsw-2zem*********
databaseName: "wordpress-mysql"
# Import an existing alicloud_db_instance.
importedResources:
"aliyun:alicloud:alicloud_db_instance:wordpress-mysql": "rm-2zem********"
network:
path: oci://ghcr.io/kusionstack/network
version: 0.2.0
configs:
default: {}
Runtime Configs
04
支持 Workspace Runtime 配置
在 v0.12.1 版本中,用户可以在 Workspace 中声明 Kubernetes 集群证书和 Terraform Provider 账密等 Runtime 配置,用户可以在 Workspace 的 Context 字段中声明下面的配置项:
KUBECONFIG_PATH:Kubernetes 集群证书路径
KUBECONFIG_CONTENT:Kubernetes 集群证书内容,支持填写明文或者引用 AWS 和阿里云的 Secrets Manager URL 来进行声明(如:ref://secret-store/kubeconfig)
AWS_ACCESS_KEY_ID:Terraform AWS Provider 访问密钥 ID,支持填写明文或者引用 AWS 和阿里云的 Secrets Manager URL 来进行声明
AWS_SECRET_ACCESS_KEY:Terraform AWS Provider 访问密钥,支持填写明文或者引用 AWS 和阿里云的 Secrets Manager URL 来进行声明
ALICLOUD_ACCESS_KEY:Terraform 阿里云 Provider 访问密钥 ID,支持填写明文或者引用 AWS 和阿里云的 Secrets Manager URL 来进行声明
ALICLOUD_SECRET_KEY:Terraform 阿里云 Provider 访问密钥,支持填写明文或者引用 AWS 和阿里云的 Secrets Manager URL 来进行声明
一份示例配置可参考:
modules:
mysql:
path: oci://ghcr.io/kusionstack/mysql
version: 0.2.0
configs:
default:
cloud: alicloud
size: 20
instanceType: mysql.n2.serverless.1c
category: serverless_basic
privateRouting: false
subnetID: vsw-2zem*********
databaseName: "wordpress-mysql"
network:
path: oci://ghcr.io/kusionstack/network
version: 0.2.0
configs:
default: {}
# The remote secrets manager for sensitive data storage.
secretStore:
provider:
aws:
region: us-east-1
# Runtime configs.
context:
# Kusion will retrieve the encrypted kubeconfig with the secretStore provider declared above.
KUBECONFIG_CONTENT: ref://secret-store/kubeconfig
ALICLOUD_ACCESS_KEY: LTAI5*********
ALICLOUD_SECRET_KEY: LNOmf*********
Spec File as Input
05
支持使用 Spec 预览和生效
在 v0.12.1 版本中,Kusion 支持将 Spec 文件作为 kusion preview 和 kusion apply 的输入。用户可以在 Stack 目录中放置一份 Spec 文件,并通过 --spec-file 指定,Kusion 引擎可以直接消费该 Spec 文件,并将 apply 结果更新到 Stack 对应的 Release 文件中。
kusion apply with specified spec file
Workload Modularization
06
完成 Workload Module 化
在此前的 v0.12.0 版本中,我们已将 Service 和 Job 这两个 Workload 的 Schema 定义从 Kusion 代码中拆分解耦出去;在这个版本中,我们已完全实现了 Workload 的 Module 化,Service 和 Job 模块的 Schema 定义和 Module Generator 的具体实现都已移至 catalog (https://github.com/KusionStack/catalog) 仓库中。用户还可以参考 Service 和 Job,根据自己的需要实现定制的 Workload 模块。
一份示例配置可参考:
[package]
[dependencies]
kam = { git = "https://github.com/KusionStack/kam.git", tag = "0.2.0" }
service = { oci = "oci://ghcr.io/kusionstack/service", tag = "0.2.0" }
import kam.v1.app_configuration as ac
import service
import service.container as c
quickstart: ac.AppConfiguration {
workload: service.Service {
containers: {
quickstart: c.Container {
image: "kusionstack/kusion-quickstart:latest"
}
}
}
}
需要注意的是:v0.12.1 版本的 Kusion 与此前用户本地缓存的 0.1.0 版本的 Service 和 Job Module 不兼容,您需要使用 0.2.0 版本的 Service 和 Job Module,或者可将本地缓存的 $HOME/.kcl/kpm/service_0.1.0 和 $HOME/.kcl/kpm/job_0.1.0 目录删除。
问题修复
在 v0.12.1 版本中,我们主要修复了如下 bug:
修复了 Volume 配置被错误覆盖的相关问题
修复了 Terraform Provider 缓存的相关问题
修复了 JsonPatch 错误信息透出的相关问题
社区动态
KusionStack 社区新增了两位 Contributor!感谢 @hoangndst 和 @vietanhtwdk 两位来自越南的同学对 Kusion 的贡献 🎉
总结
在 v0.12.1 版本中,我们优化了存储后端管理、敏感信息展示和对 Terraform 资源的管理,同时支持了在 Workspace 中声明 Runtime 配置,以及使用 Spec 文件进行预览和生效,并且完成了对 Workload 的 Module 化拆分。除了上述提到的改进之外,本次发布还包含了大量小改进与变化,您可以在 GitHub Release Note 中找到更多完整的细节:
https://github.com/KusionStack/kusion/releases
欢迎来玩~ 欢迎 star ⭐️
https://github.com/KusionStack/kusion
https://github.com/KusionStack/karpor
https://github.com/KusionStack/operating
https://github.com/kcl-lang/kcl