Releases: KusionStack/kusion
v0.12.0-rc.3
Changelog
- 2bda750: fix: os arch option for mod push (#1154) (@liu-hm19)
- 1df3c90: fix: reset $kusion.path ref to the original value when replace faild in the preview (#1155) (@SparkYuan)
Docker Images
kusionstack/kusion:0.12.0-rc.3
Dependent version
- kcl-go: ``
- kcl-plugin: ``
v0.12.0-rc.2
Changelog
- 6549a04: chore: delete redundant print msg (#1145) (@SparkYuan)
- 00af90c: chore: update init scaffold template (#1072) (@liu-hm19)
- 06a8570: feat: automatically download kusion modules in the
mod add
(#1150) (@SparkYuan) - db5886a: feat: update the init and stack create scaffolding templates (#1149) (@liu-hm19)
- 01e877d: fix: delete an empty line in mod list (#1146) (@SparkYuan)
- 1728745: fix: improved the documentation description (#1147) (@wolfcode111)
- 6c426ce: fix: init target project name (#1068) (@liu-hm19)
- c31e1f7: fix: probe type judgment in conversion from kusion probe to k8s probe (#1144) (@Liuxingyu1111111)
- ed07c4e: fix: secret store doesn't work (#1142) (@SparkYuan)
- 389d3ee: fix: set the release phase as failed when exit apply prompt (#1148) (@liu-hm19)
- 08b40e2: fix: watch context timeout and display text for apply (#1153) (@liu-hm19)
Docker Images
kusionstack/kusion:0.12.0-rc.2
Dependent version
- kcl-go: ``
- kcl-plugin: ``
v0.12.0-rc.1
Changelog
- 6da5948: chore: clean up the exposing of mysql table (#1108) (@healthjyk)
- f258f51: chore: optimize some err messages (#1141) (@SparkYuan)
- 5b8ef9f: feat: add Release type which is triggered by kusion apply (#1099) (@healthjyk)
- fc20b33: feat: add a command 'mod add' (#1136) (@SparkYuan)
- be37829: feat: add context in the module grpc (#1118) (@SparkYuan)
- 2bc1c28: feat: add context in the workspace (#1113) (@SparkYuan)
- 78cbbbd: feat: add pod labels/annotations in the workload patcher (#1123) (@SparkYuan)
- 2aa9fdb: feat: add release validation (#1122) (@healthjyk)
- 8ed1c20: feat: add the release storage interface (#1107) (@healthjyk)
- 6b08fab: feat: change workload type to adapt to the new module (#1110) (@SparkYuan)
- 272ee0d: feat: clean the usage of deprecated state and its storage (#1133) (@healthjyk)
- c7455b0: feat: do not support mysql backend anymore (#1100) (@healthjyk)
- 113ffdf: feat: expose the CopyDependentModules method (#1111) (@SparkYuan)
- 45336c8: feat: ignore workloads as modules when generating the spec (#1125) (@SparkYuan)
- f9c000c: feat: merge branch 0.12.0 (#1109) (@SparkYuan)
- 5ca1c82: feat: move internal.kusion.io to api.kusion.io (#1119) (@SparkYuan)
- ed65e3a: feat: no support of phase in the release metadata (#1135) (@healthjyk)
- aabbb5e: feat: optimize kusion apply with by default watching (#1139) (@liu-hm19)
- bd90c5a: feat: optimize platform module config logic (#1129) (@SparkYuan)
- a444589: feat: realize release storage of local, oss and s3 (#1112) (@healthjyk)
- 70e6c6a: feat: realize release storage using backend (#1120) (@healthjyk)
- 46465fc: feat: skip to move built-in workloads to KUSION_HOME during generating the Spec (#1128) (@SparkYuan)
- 7feee90: feat: support json patch in the module generate method (#1127) (@SparkYuan)
- e8b7124: feat: update kusion cli descriptions (#1103) (@liu-hm19)
- 7765bc1: feat: use release to update state usage in preview/apply/destroy (#1130) (@healthjyk)
- 519b8c3: feat: validate module path and version in the workspace (#1131) (@SparkYuan)
- 57dcede: fix: customize namespace issue to get correct k8s namespace name (#1132) (@adohe)
- 036e44a: fix: normalize the k8s workload to fix a deep-copy int error (#1138) (@SparkYuan)
Docker Images
kusionstack/kusion:0.12.0-rc.1
Dependent version
- kcl-go: ``
- kcl-plugin: ``
v0.11.1
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
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
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 tokusion generate
. - The
AppConfiguration
andWorkload
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
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...
v0.10.0
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 usingkusion init
. - Fix NPE bug when using
kusion apply --watch
.
Deprecations
- No longer support
kusion compile
, usekusion build
to replace it. - Deprecate core concept
Spec
, useIntent
to replace it. - The state file is stored in the
kusion_state.yaml
, notkusion_state.json
.
Docker Images
kusionstack/kusion:v0.10.0
v0.10.0-rc.1
Changelog
- e5d5f06: chore: cleanup useless io util code (#707) (@adohe)
- 019f51e: chore: delete useless gitutil types (#679) (@adohe)
- cccee10: chore: secret generator add more comments (#712) (@adohe)
- dbf37e0: chore: secret generator add more test cases (#740) (@adohe)
- 4a15a1e: feat: add alicloud secrets manager based secret store provider (#665) (@liu-hm19)
- de583e7: feat: add azure keyvault based secret store (#652) (@adohe)
- 9141195: feat: add fake secret store provider for test (#739) (@adohe)
- 1b178f6: feat: add func of getting specified type from workspace genericConfig (#708) (@healthjyk)
- 089068e: feat: add kubeConfig from workspace in extensions when kusion build (#675) (@healthjyk)
- 2385045: feat: add mysql/oss/s3 as new backends (#662) (@healthjyk)
- 11807b4: feat: add workspace CURD by default operator, and the default workspace dir is not hidden folder (#668) (@healthjyk)
- a91a525: feat: add workspace cli (#718) (@healthjyk)
- 61f7798: feat: do not create the kcl.mod.lock file when building config (#720) (@SparkYuan)
- cc705cc: feat: getting workspace when running kusion build (#653) (@healthjyk)
- fe2ce94: feat: opsRule supports workspace config (#711) (@SparkYuan)
- f10f3c6: feat: refactor module port with config from workspace (#723) (@healthjyk)
- f1722d9: feat: secret generator add external secret type support (#737) (@adohe)
- 1dd8aa2: feat: state backend using workspace, and upgrade of state (#669) (@healthjyk)
- 401821c: feat: support customize namespace through workspace config (#704) (@adohe)
- 2cba13e: feat: update command constructor and enable profiling (#680) (@adohe)
- a2d162d: feat: update kpm to 0.6.0 to support assign kpm pkg version by commit (#744) (@healthjyk)
- e92cd0d: feat: update the latest version when releasing formal version (#726) (@healthjyk)
- 8dce43b: feat: update workspace type add secret store config (#724) (@adohe)
- efa145e: feat: use kubeConfig in extensions to init kubernetes runtime (#672) (@healthjyk)
- 1ef33b8: feat: use workspace config when build service and job (#717) (@healthjyk)
- c7dfc82: fix: a bug of the map assertion (#743) (@healthjyk)
- c1f0455: fix: customize namespace generator issue (#721) (@adohe)
- 3386d90: fix: e2e tests (#664) (@SparkYuan)
- 207ebeb: fix: misuse of env KUSION_PATH (#716) (@healthjyk)
- 816225b: fix: opsRule doesn't work in CollaSet (#706) (@SparkYuan)
- 5eb12a8: refactor: monitoring generator with workspace configuration (#741) (@ffforest)
- e101055: refactor: re-pack basic api types for susitable iteration (#710) (@adohe)
- 687408f: refactor: rename SecretStoreFactory to SecretStoreProvider (#738) (@adohe)
- 9c44776: refactor: update database generator and related unit tests (#731) (@liu-hm19)
- b65129f: refactor: update secret store providers implementation (#677) (@adohe)
- 3d09a64: refactor: update the struct of ModuleConfig (#671) (@healthjyk)
- 7531425: refactor: update the struct of TerraformConfig (#670) (@healthjyk)
- d09fa12: refactor: use api types in status and core pkg (#719) (@adohe)
- 8165d7a: refactor: use project&stack types in core v1 pkg (#715) (@adohe)
- 0413e0c: refactor: use secret types in core v1 pkg (#714) (@adohe)
- d9db45a: refactor: use workspace types with v1 pkg (#713) (@adohe)
Docker Images
kusionstack/kusion:0.10.0-rc.1
Dependent version
- kcl-go: ``
- kcl-plugin: ``
v0.9.1
What's Changed
Feature
- Introduce the new command
kusion build
and deprecate thekusion compile
to build the single-source-of-truth (Intent) by @SparkYuan - Support declaring the
kubeconfig
file path instack.yaml
by @liu-hm19 - The unit test framework of kusion has been upgraded from
monkey
tomockey
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 withkusion build
to generate theIntent
- Use
AppConfiguration
generator as the default generator instead ofKCL
generator
New Contributors
- @Mrcopytuo made their first contribution in #561
- @Wenfeng-GAO made their first contribution in #574
- @cr7258 made their first contribution in #615
Full Changelog: v0.9.0...v0.9.1