Skip to content

Releases: KusionStack/kusion

v0.11.1

30 Apr 07:35
aa40a87
Compare
Choose a tag to compare

Features

Kusion Apply Supports Automatic Port Forwarding

In this version, kusion apply supports specifying the port of the application to forward with the --port-forward option. After the application resources are deployed, Kusion CLI will automatically forward the local port with the same number to the corresponding pod port of the application in the targeted Kubernetes cluster, which makes it easier for users to debug their application. @liu-hm19

Adding Sub Commands for Project and Stack

In this version, we added the kusion project and kusion stack sub commands for a better project and stack lifecycle management, facilitating the creation of new Project and Stack. A new stack can be created based on the existing ones, allowing users to quickly initiate a new set of application configurations. @liu-hm19

Adding Supports for Customized Namespace

In Kusion v0.11.0, application resources will by default be created in the namespace with the same name as the project. In this version, we added supports for customized namespaces. Users now can specify a namespace in the extension fields of project.yaml and stack.yaml files, and the application resources will be created in the specified namespace accordingly. @adohe

Kusion Mod Push Enhancement

In this version, we optimized the version management of Kusion Module OCI artifacts for kusion mod push cmd and introduced the support for multiple operating systems and architectures. @SparkYuan

Bug Fixes

  • Fixed some issues of the Kusion CLI interactive terminal display @liu-hm19
  • Fixed some issues of the Kusion CLI flag options @adohe @liu-hm19

Concept Update

The definitions, boundaries as well as their relationships of the Kusion core concepts, Project, Stack and Workspace, have been updated.

Docker Images

  • kusionstack/kusion:v0.11.1

v0.11.1-rc.1

29 Apr 12:16
13098d0
Compare
Choose a tag to compare

What's Changed

  • refactor: update api package for enhanced maintainability by @adohe in #871
  • chore: deprecate old core api pkg, use latest instead by @adohe in #1004
  • feat: add meta flags and options for common logic and data by @adohe in #1005
  • refactor: sign state to deprecated state by @healthjyk in #1031
  • feat: update stack api by @liu-hm19 in #1032
  • feat: adjust generate cmd behavior according to latest discussion by @adohe in #1034
  • refactor: preview&apply cmd implementation follow the command cmd pattern by @adohe in #1006
  • feat: generate cmd use terminal ui framework by @adohe in #1035
  • refactor: update delete cmd to follow the common cmd pattern by @adohe in #1041
  • feat: delete unused spec storage by @healthjyk in #1043
  • chore: delete useless signal handling logic by @adohe in #1045
  • feat: support os arch in mod push and ignore .git in the OCI artifact by @SparkYuan in #1046
  • feat: update state storage which is identified by project and workspace by @healthjyk in #1044
  • fix: unexpected output in format byte slice by @healthjyk in #1052
  • feat: group multiple os arch modules by image index by @SparkYuan in #1054
  • chore: delete application field from Meta by @adohe in #1053
  • feat: add Extension api types by @adohe in #1048
  • feat: init kcp core api by @ffforest in #1033
  • feat: add version tags to the image and image index by @SparkYuan in #1055
  • fix: add the version info in the index oci url to differentiate index… by @SparkYuan in #1056
  • feat: add clipath and pathutil pkg to calculate filesystem paths by @adohe in #1042
  • feat: support sub cmd of kusion project and stack by @liu-hm19 in #826
  • feat: update kusion init scaffold template by @liu-hm19 in #1049
  • feat: apply supports port forwarding by @liu-hm19 in #1057
  • feat: customize k8s resources namespace based on extensions by @adohe in #1060
  • feat: update port forward for kusion apply by @liu-hm19 in #1063
  • feat: update kusion project and stack create by @liu-hm19 in #1065
  • feat: update implementation of terminal ui for kusion by @liu-hm19 in #1061
  • feat: update workspace mod definition by @SparkYuan in #1066
  • feat: export some plugin functions by @SparkYuan in #1067
  • fix: Revert "feat: add configs in the workspace mod definition (#1066)" by @SparkYuan in #1069
  • feat: update kusion destroy progressbar by @liu-hm19 in #1071
  • fix: workspace update defaults to use current workspace by @liu-hm19 in #1075
  • fix: add workdir to meta flag of kusion cli by @liu-hm19 in #1074
  • feat: add shorthand of the work directory flag by @SparkYuan in #1076
  • feat: move module binary to KUSION_HOME by new path format by @SparkYuan in #1062
  • fix: replace current platform image with the new one when it already … by @SparkYuan in #1077
  • fix: broken links in the readme by @SparkYuan in #1079
  • feat: parse module name and version from the kcl.mod in mod push by @SparkYuan in #1080
  • fix: the bug of workspace update without name by @healthjyk in #1078
  • feat: download kusion modules with current os arch filter by @SparkYuan in #1081
  • feat: remove server from root cmd by @liu-hm19 in #1083
  • feat: update kpm version to ignore the module downloading hint by @SparkYuan in #1084

Full Changelog: v0.11.0...v0.11.1-rc.1

v0.11.0

01 Apr 12:24
c9ad0c1
Compare
Choose a tag to compare

Features

Kusion Module Extension Mechanism

In v0.10.0, we have introduced the collaboration paradigm between Application Developers and Platform Engineers. Here we further improve the relevant AppConfiguration model and Kusion Module extension mechanism. A Kusion module is a reusable building block designed by platform engineers to standardize application deployments and enable app developers to self-service, usually including a module schema and a module generator. We update the AppConfiguration model and open the accessories field to support various modules adding capabilities to application Workload. Some common modules like Network, MySQL, PostgreSQL, OpsRule and Monitoring have been built in by us. Meanwhile, we provide a Kusion Module development framework with which platform engineers can efficiently build their own customized modules, as well as the user guides for application developers. We also provide the kusion mod cmd for users to build and push local cross-platform module packages to remote repositories, such as Github Packages. @SparkYuan @ffforest @liu-hm19

Kusion Core Workflow Upgrade

The core workflow of Kusion CLI are getting some big changes. An internal demo application is embedded in simplified kusion init for users to get started with Kusion CLI more quickly. And kusion build has now been upgraded to kusion generate to adapt to using Kusion Modules to convert the users' Intent for workload accessories into the resource specification (Spec), support a versioned Spec storage. The interaction interfaces for kusion preview, kusion apply and kusion destroy has also been upgraded. @adohe @healthjyk @liu-hm19

Kusion Workspace Management Upgrade

In the previous version of Kusion, a Stack could only be bounded to the Workspace with the same name, both of which were tightly coupled. And now they have been decoupled, achieving a more flexible workspace management. Kusion provides a default workspace when no workspace is explicitly specified as the current workspace, and adds the kusion workspace switch cmd to switch the current workspace. @healthjyk

Kusion Backend Management Upgrade

We add the kusion config cmd for users to configure the storage backend of Kusion CLI with more flexibility and capability, enhancing the support for Workspace, Spec and State stored in Local, MySQL, S3 and OSS. Users can now configure and manage different backend storages for different workspaces with Kusion CLI. @healthjyk

User Experience Enhancement

Kusion now supports the automatic installation of Terraform CLI, eliminating the need for users to manually install it. @liu-hm19

Bug Fixes

  • Fix some issues of Kusion CLI when running on Windows. @healthjyk
  • Fix some outdated or inaccurate cmd prompts and outputs. @liu-hm19
  • Fix some issues related to the logging of Kusion CLI. @SparkYuan

Deprecations

  • The kusion init cmd no longer supports application templates.
  • The kusion build cmd has been upgraded to kusion generate.
  • The AppConfiguration and Workload models have been migrated from the catalog to the kam repository.

New Contributors

Docker Images

  • kusionstack/kusion:v0.11.0

v0.11.0-rc.1

28 Mar 04:07
b9cf0ae
Compare
Choose a tag to compare

What's Changed

  • docs: fix broken links by @SparkYuan in #755
  • fix: e2e tests by @SparkYuan in #756
  • fix: the bug of unexpected.git directory by @healthjyk in #758
  • docs: update contributing.md by @SparkYuan in #759
  • docs: update the readme by @SparkYuan in #760
  • feat: delete server side fields in kubernetes runtime by @liu-hm19 in #761
  • feat: allow commit body line longer than 100 by @healthjyk in #762
  • fix: inaccurate action type when a live resource has been deleted by @SparkYuan in #771
  • fix: no print unused kcl log by @healthjyk in #770
  • fix: add options sub-cmd for kusion by @liu-hm19 in #791
  • feat: preview auto shows diff details by @liu-hm19 in #802
  • feat: support auto installing terraform binary by @liu-hm19 in #801
  • fix: unspecified namespace failure for k8s resources by @liu-hm19 in #768
  • chore(deps): bump github.com/cloudflare/circl from 1.3.3 to 1.3.7 by @dependabot in #806
  • feat: add code runner for configuration code execution by @adohe in #803
  • refactor: app configuration model definition by @SparkYuan in #805
  • docs: add kusion module design doc by @SparkYuan in #776
  • feat: add crd resource visitor util by @adohe in #804
  • fix: delete the never-arriving return non-nil err by @healthjyk in #816
  • refactor: split types in the v1/types.go to separate files to maintain consistency with the coding style of the rest of the code by @SparkYuan in #808
  • refactor: workload, port and secret according to the new appConfig model by @SparkYuan in #825
  • fix: term.GetTerminalWidth failed on windows by @healthjyk in #819
  • fix: use package path/filepath instead of path to support windows by @healthjyk in #814
  • fix: no assignment of releaseVersion when version in buildInfo is empty by @healthjyk in #817
  • docs: add module versions in the app config model and fix some typos by @SparkYuan in #827
  • chore: clear unused kusion deps by @healthjyk in #833
  • chore: clear deprecated kusion compile by @healthjyk in #834
  • chore: delete the redundant patcher interface by @SparkYuan in #837
  • feat: update goreleaser scoop, delete deprecated params by @healthjyk in #828
  • docs: update the workflow img and fix the broken slack link by @SparkYuan in #838
  • feat: rename backend related configs in workspace to deprecated by @healthjyk in #839
  • feat: add config model by @healthjyk in #841
  • feat: add specified structured backend config models by @healthjyk in #842
  • feat: add module proto grpc interface by @SparkYuan in #844
  • feat: add kusion module plugin by @SparkYuan in #870
  • feat: add workload in the module grpc interface by @SparkYuan in #874
  • feat: add kusion config validation by @healthjyk in #869
  • feat: update module grpc interface by @SparkYuan in #887
  • docs: update module design doc generate interface definition by @SparkYuan in #888
  • Feat: add kusion config core functions by @healthjyk in #883
  • chore: set backend related const in workspace to deprecated by @healthjyk in #889
  • feat: add backend config completion and validation funcs by @healthjyk in #891
  • feat: add backend storage local, mysql, oss, s3 by @healthjyk in #894
  • chore: use validation from backend config and tidy package config by @healthjyk in #893
  • test: upgrade ut of package config to make it more self-contained and… by @healthjyk in #896
  • feat: add backend definition and new function by @healthjyk in #895
  • docs: core workflow design by @healthjyk in #579
  • feat: workload generator support create contentFrom based file by @adohe in #875
  • feat: remove state model to pkg apis/core/v1 and stateStorage interface to pkg state by @healthjyk in #897
  • docs: delete deprecated app config design doc by @SparkYuan in #900
  • feat: workload generator add container dirs implementation by @adohe in #899
  • feat: add state storage implementation: local, oss, s3, mysql by @healthjyk in #902
  • feat: add Patchers in resource by @SparkYuan in #904
  • feat: add basic kusiom mod cmd by @adohe in #905
  • feat: add function StateStorage in backend, and implement it by @healthjyk in #909
  • feat: module lint test by @SparkYuan in #917
  • refactor: use the new state storage to replace the old one by @healthjyk in #912
  • feat: add client for communicating with OCI repository by @adohe in #918
  • feat: prepend patch env to existing env slices so developers can reference them later on by @SparkYuan in #922
  • chore: delete unused backend config in workspace by @healthjyk in #921
  • style: make state storages more tidy by @healthjyk in #924
  • feat: add workspace storages. including local, oss, s3, mysql by @healthjyk in #925
  • feat: update init cmd by @liu-hm19 in #863
  • feat: bump go version to 1.22 by @liu-hm19 in #934
  • feat: add mod push command impl by @adohe in #923
  • feat: add function workspaceStorage in interface backend, and implement it in local/mysql/oss/s3 by @healthjyk in #937
  • feat: update the workspace storage definition and implementation by @healthjyk in #941
  • feat: support command mod init by @SparkYuan in #945
  • feat: update workspace cmds, add backend and current flags by @healthjyk in #942
  • feat: add workspace switch cmd by @healthjyk in #943
  • feat: update grpc interface by @SparkYuan in #946
  • feat: refactor the old usage of workspace and backend by @healthjyk in #944
  • fix: npe when killing plugin client by @SparkYuan in #947
  • feat: delete deprecated workspace operator codes and refactor e2e test by @healthjyk in #948
  • feat: separate module logs into different files by @SparkYuan in #949
  • feat: add config cmd, including subcmds get,list,set,unset by @healthjyk in #950
  • feat: add generate cmd implementation by @adohe in #843
  • docs: update the slack invite link by @SparkYuan in #955
  • feat: add spec storage and integrate with generate cmd by @adohe in #953
  • feat: update yaml package for appconfiguration generator by @liu-hm19 in #956
  • fix: fix a bug for terraform installation by @liu-hm19 in #957
  • feat: refine cmd cli interactive output by @liu-hm19 in #958
  • chore: disable go test optimization for the mock framework limitation by @SparkYuan in #960
  • feat: parse dev config mod's namespace and version form kcl.mod by @SparkYuan in #959
  • feat: build generator support darwin/arm64 by @adohe in #961
  • feat: update module structure for mod push by @liu-hm19 in #962
  • feat: add config cmd to...
Read more

v0.10.0

15 Jan 10:04
f7c8fed
Compare
Choose a tag to compare

Features

Collaboration Paradigm

Introduce the collaboration paradigm between application developers and platform engineers. Due to the mixed configuration and unclear division of labor, the application developers have to face the high cognitive burden, while the platform engineers have great difficulty in standardization management. Hence, we make the huge upgrade —— proposing the collaboration paradigm between application developers and platform engineers and the core workflow, implementing the separation of concerns, to improve the efficiency and standardization.

The platform engineers are responsible for creating Kusion modules and maintaining workspaces. A module is a reusable building block, and contains two components: an application developer-oriented schema and a module generator. By the application developer-oriented schema, platform engineers shield the underlying complexity and achieve standardization.

The application developers are responsible to write AppConfiguration, which are composed of the developer-oriented and dead-simple schemas. There are few or even no complex configs for application developers, which reduce the cognitive burden of them.

For more detail, please refer to How Kusion Works?

Workspace Management

Introduce workspace and integrate it into the Kusion core workflow. The workspace is a logical concept representing a target that a stack will be deployed to, which contains a set of configurations that can be reused by multiple stacks. We recommend workspaces grouped by SDLC phases (such as dev, staging, and prod) or cloud vendors (such as AWS, Azure, and Alibaba Cloud).

The workspace contains four types of configurations: modules, runtimes, backends and secretStore, while the configuration is organized in YAML. We provide command lines to get, show, create, update, and delete workspace.

For more detail, please refer to Workspace.

Secret Management

Upgrade secret management in the new collaboration paradigm, and support more providers. Define the new core workflow of secret management in the collaboration scenario. Support storing sensitive data in Vault, AWS, Azure and Alibaba Cloud.

For more detail, please refer to Secrets and Using Cloud Secrets Manager.

AppConfiguration Revamp

Revamp the AppConfiguration according to the collaboration paradigm. Stripping platform configuration, the AppConfiguration only contains application developer-oriented configs. Splitting Database schema into MySQL and PostgreSQL, for better user experience.

For more detail, please refer to AppConfiguration.

Bug Fixes

  • Fix the recurring prompt ProjectName when using kusion init.
  • Fix NPE bug when using kusion apply --watch.

Deprecations

  • No longer support kusion compile, use kusion buildto replace it.
  • Deprecate core concept Spec, use Intent to replace it.
  • The state file is stored in the kusion_state.yaml, not kusion_state.json.

Docker Images

  • kusionstack/kusion:v0.10.0

v0.10.0-rc.1

11 Jan 07:17
a2d162d
Compare
Choose a tag to compare

Changelog

Docker Images

  • kusionstack/kusion:0.10.0-rc.1

Dependent version

v0.9.1

15 Dec 09:46
df5aa5a
Compare
Choose a tag to compare

What's Changed

Feature

  • Introduce the new command kusion build and deprecate the kusion compile to build the single-source-of-truth (Intent) by @SparkYuan
  • Support declaring the kubeconfig file path in stack.yaml by @liu-hm19
  • The unit test framework of kusion has been upgraded from monkey to mockey by @Mrcopytuo
  • The implementation framework of AppConfiguration generator has been upgraded by @Wenfeng-GAO

Bug Fixes

  • Fix some problems with setting remote state backend in project.yaml by @liu-hm19
  • Fix missing pod restartPolicy issue in the job generator by @adohe
  • Fix a nil pointer error when executing kusion apply with --watch by @cr7258

Design Docs

  • Define the Collaboration Paradigm Between App Developers and Platform Engineers With Kusion by @SparkYuan
  • Kusion Workspace Management Proposal by @healthjyk
  • Secret Management with Kusion by @adohe

Deprecated

  • kusion compile has been deprecated and replaced with kusion build to generate the Intent
  • Use AppConfiguration generator as the default generator instead of KCL generator

New Contributors

Full Changelog: v0.9.0...v0.9.1

v0.9.1-rc

05 Dec 13:24
f4d08f2
Compare
Choose a tag to compare

What's Changed

  • chore(deps): bump google.golang.org/grpc from 1.58.0 to 1.58.3 by @dependabot in #600
  • chore(deps): bump golang.org/x/net from 0.7.0 to 0.17.0 in /scripts/install-kcl-openapi by @dependabot in #603
  • feat: add random string function for upcoming secret generator refact by @adohe in #602
  • refactor: rename Spec to the Intent by @SparkYuan in #601
  • docs: add the collaboration design doc by @SparkYuan in #578
  • refactor: deprecate old vals based secret store by @adohe in #609
  • refactor: update secret generator for upcoming external secret by @adohe in #607
  • feat: introduce the new command kusion build and delete redundant commands by @SparkYuan in #608
  • docs: refresh cmd docs by @SparkYuan in #611
  • feat: add external secret store api and interface by @adohe in #610
  • chore: delete redundant scripts by @SparkYuan in #613
  • feat: add secret store provider registry impl by @adohe in #612
  • fix: stack nil pointer error by @cr7258 in #615
  • chore: delete redundant commands by @SparkYuan in #616
  • docs: add workspace management proposal by @healthjyk in #621
  • feat: update secrets related types and interfaces by @adohe in #624
  • feat: add vault secret store impl by @adohe in #614
  • refactor: file directories to enhance its conciseness by @SparkYuan in #636
  • test: enable watch for kusion apply in e2e test by @liu-hm19 in #633
  • chore: remove go build flags in the code that are not applicable for ARM64 compilation by @SparkYuan in #637
  • chore: rename remaining spec to intent by @SparkYuan in #640
  • docs: refresh cmd docs by @SparkYuan in #641
  • feat: add workspace domain model by @healthjyk in #639
  • chore: rename ProjectConfiguration to Configuration to follow go convention by @SparkYuan in #644
  • chore: rename ExternalSecretRef key to name by @adohe in #645
  • feat: add workspace, modules, backends, runtimes management by @healthjyk in #642
  • docs: add secret management proposal by @adohe in #599
  • feat: add aws secrets manager based secret store provider by @adohe in #623
  • feat: add workspace CRUD operations by @healthjyk in #651
  • feat: support setting KCL setting-files when building an Intent by @SparkYuan in #649

New Contributors

Full Changelog: v0.9.1-beta...v0.9.1-rc

v0.9.1-beta

10 Nov 07:36
ebc034a
Compare
Choose a tag to compare

What’s Changed

Feature

Framework Upgrades

  • The unit test framework of kusion has been upgraded from monkey to mockey by @Mrcopytuo
  • The implementation framework of AppConfiguration generator has been upgraded by @Wenfeng-GAO

KubeConfig Configuration

  • Support declaring the kubeconfig file path in stack.yaml by @liu-hm19

Bug Fixes

  • Fix some problems of setting remote state backend in project.yaml by @liu-hm19

New Contributors

Docker Images

  • kusionstack/kusion:v0.9.1-beta

v0.9.0

28 Sep 02:45
230d4cc
Compare
Choose a tag to compare

What’s Changed

Feature

AppConfiguration Revamp

Introducing the new declarative application configuration model - AppConfiguration! It is replacing the Server model in the past versions. We have received numerous feedback in the past that it's challenging to get the ball rolling with KusionStack. So we have revamped the mechanism significantly.

The AppConfiguration model intends to eventually cover application delivery and operational needs in its full lifecycle. Currently, we have introduced the ability to configure workloads, networking, database, monitoring, basic operational rules, etc. We will continuously iterate and extend the capability of AppConfiguration to carry out our vision.

The design document can be found here

KCL is still the choice of configuration language for the AppConfiguration model. KCL has advantages when authoring a complex configuration file with some of its core features such as abstraction and validations capabilities. The logic to render the application abstraction model to the infrastructure manifests are now written in go.

Monitoring via Prometheus

Introducing the capability to configure application monitoring as part of AppConfiguration model. You can now customize the scraping behavior via the monitoring field.

More Cloud Resources

We have added better support for more cloud resources such as CLB, RDS on AWS and AliCloud. They can be provisioned at your fingertip as part of the AppConfiguration model.

Spec as input

In Kusion terminology, spec is the infrastructure specification that is generated by Kusion from the user-facing input. It represents the declarative intent from the user. Kusion now supports using the spec as an input to the preview and apply subcommand. This enables the integration and version control of declarative intent for the platform users.

Bug fixes

  • Fixed an issue where preview command unexpected fails under circumstances caused by incorrect resource dependency
  • Fixed an issue where error messages are not specific enough after failing to initialize the runtime

Deprecations

  • The Konfig repository has now been revamped into a samples repository. The schemas for AppConfiguration model will be managed in the Catalog repository.
  • The output of kusion compile is now in the complete spec format.

Docker Images

  • kusionstack/kusion:v0.9.0

Dependent version