V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
windcode
V2EX  ›  分享创造

Kusion v0.12.1 发布——完善产品功能,优化用户体验

  •  1
     
  •   windcode ·
    elliotxx · 113 天前 · 1745 次点击
    这是一个创建于 113 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们很高兴地向大家宣布,Kusion v0.12.1 版本已经正式发布啦!我们本次总共更新了超过 18 个新功能,8 处问题修复以及 5 篇文档更新,截止目前 Kusion 社区已共计有来自海内外 25 位贡献者 🎉

    吉祥物小 K 同学带大家查收 Kusion v0.12.1 版本新特性 我们一如既往地对不断壮大的 KusionStack 社区的宝贵贡献表示感谢,在这篇文章中,您将了解一些我们精心挑选的令人兴奋的新功能。

    新增特性

    优化存储后端管理

    在 v0.12.1 版本中,我们为 Kusion 添加了对 AWS S3 路径样式( path-style ) endpoint 的支持,并且提供了 kusion release unlock 命令用于解锁处于异常状态的 Release 文件。 kusion release unlock command

    优化敏感信息展示

    在过去的版本中,kusion preview 命令展示 Kubernetes Secret 资源时会将 data 和 stringData 的明文数据直接透出,这将带来敏感信息泄漏的风险。在这个版本中,我们优化了敏感信息的预览效果,Kubernetes Secret 资源的 data 和 stringData 将不会明文展示( Secret 数据在更新时仍可以计算出发生了变化)。 masked data & stringData preview result

    优化 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: {}
    

    支持 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 预览和生效

    在 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 Module 化

    在此前的 v0.12.0 版本中,我们已将 Service 和 Job 这两个 Workload 的 Schema 定义从 Kusion 代码中拆分解耦出去;在这个版本中,我们已完全实现了 Workload 的 Module 化,Service 和 Job Module 的 Schema 定义和 Module Generator 的具体实现都已移至 catalog (https://github.com/KusionStack/catalog) 仓库中。用户还可以参考 Service 和 Job ,根据自己的需要实现定制的 Workload Module 。 一份示例配置可参考:

    [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 目录删除。

    问题修复

    • 修复了 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 ⭐️

    1 条回复    2024-08-02 16:28:22 +08:00
    adohe
        1
    adohe  
       113 天前
    👏👏👏👏👏👏
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2837 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 13:33 · PVG 21:33 · LAX 05:33 · JFK 08:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.