Releases: KusionStack/kusion
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 initby @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
ProjectNamewhen usingkusion init. - Fix NPE bug when using
kusion apply --watch.
Deprecations
- No longer support
kusion compile, usekusion buildto replace it. - Deprecate core concept
Spec, useIntentto 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 buildand deprecate thekusion compileto build the single-source-of-truth (Intent) by @SparkYuan - Support declaring the
kubeconfigfile path instack.yamlby @liu-hm19 - The unit test framework of kusion has been upgraded from
monkeytomockeyby @Mrcopytuo - The implementation framework of
AppConfigurationgenerator has been upgraded by @Wenfeng-GAO
Bug Fixes
- Fix some problems with setting remote state backend in
project.yamlby @liu-hm19 - Fix missing pod
restartPolicyissue in the job generator by @adohe - Fix a nil pointer error when executing
kusion applywith--watchby @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 compilehas been deprecated and replaced withkusion buildto generate theIntent- Use
AppConfigurationgenerator as the default generator instead ofKCLgenerator
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
v0.9.1-rc
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 buildand 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
spectointentby @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
What’s Changed
Feature
Framework Upgrades
- The unit test framework of kusion has been upgraded from
monkeytomockeyby @Mrcopytuo - The implementation framework of
AppConfigurationgenerator has been upgraded by @Wenfeng-GAO
KubeConfig Configuration
- Support declaring the
kubeconfigfile path instack.yamlby @liu-hm19
Bug Fixes
- Fix some problems of setting remote state backend in
project.yamlby @liu-hm19
New Contributors
- @Mrcopytuo made their first contribution in #561
- @Wenfeng-GAO made their first contribution in #574
Docker Images
kusionstack/kusion:v0.9.1-beta
v0.9.0
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
Konfigrepository has now been revamped into a samples repository. The schemas for AppConfiguration model will be managed in theCatalogrepository. - The output of
kusion compileis now in the completespecformat.
Docker Images
kusionstack/kusion:v0.9.0
Dependent version
- kcl-go:
v0.6.0-alpha.1 - kcl-plugin:
v0.5.0
v0.9.0-rc.2
What's Changed
- fix: wrong e2e ut for kusion deps and apply by @elliotxx in #532
- fix: occasional ut failures for generator by @elliotxx in #531
- chore: bump kcl-go version to v0.6.0-alpha.1 by @elliotxx in #533
- chore: update pr title max length by @SparkYuan in #536
- chore(deps): bump github.com/docker/docker from 23.0.1+incompatible to 23.0.3+incompatible by @dependabot in #535
- fix: fix aws database generator by @liu-hm19 in #542
- fix: compile error with -w flag in kpm mode by @SparkYuan in #538
Full Changelog: v0.9.0-rc.1...v0.9.0-rc.2
v0.9.0-rc.1
What's Changed
- feat: support spec as input by @panshuai-ps in #400
- doc: Add design documentation for Istio support in kusion by @ffforest in #399
- add more details when runtime init failed by @SparkYuan in #409
- update compile output to a complete spec by @SparkYuan in #413
- chore: bump kcl version to v0.5.1 by @Peefy in #414
- refactor: move pkg/engine/models to pkg/models by @SparkYuan in #434
- style: normalize some annotations by @healthjyk in #430
- feat: add AppConfiguration, Deploy, and Job models by @SparkYuan in #451
- doc: Add design documentation for Prometheus support in kusion by @ffforest in #412
- refactor: Use mock as the function name instead of monkey by @panshuai-ps in #449
- feat: remove mandatory validation of settings.yaml during kusion compile by @panshuai-ps in #448
- fix: confuse config of commitlint by @elliotxx in #452
- test: add generator and namespace tests by @SparkYuan in #454
- feat: modify the generators to adapt to the new model's adjustments by @elliotxx in #453
- refactor: use generic optimization code by @elliotxx in #455
- feat: customize workload deserialization and serialization by type by @elliotxx in #456
- fix: missing labels and annotations injection logic by @elliotxx in #457
- feat: customize workload deserialization and serialization for yaml by type by @elliotxx in #458
- refactor: reorg generators packages and simplify namings by @SparkYuan in #459
- feat: add stack name as part of workload's name by @SparkYuan in #460
- feat: support unmarshal KCL union to AppConfiguration by @panshuai-ps in #462
- feat: add the CollaSet generator by @SparkYuan in #463
- feat: support watching the collaset by @SparkYuan in #464
- test: complete workload unit tests by @elliotxx in #475
- fix: avoid generating duplicate namespaces by @liu-hm19 in #477
- feat: support some magic env parsers by @elliotxx in #473
- test: complete generator unit test by @elliotxx in #476
- test: complete appconfiguartion model unit tests by @elliotxx in #484
- feat: support default order of kubernetes resource by @elliotxx in #485
- feat: add probe types and encoding/decoding support by @adohe in #487
- chore: upgrade the goveralls by @SparkYuan in #488
- feat: add lifecycle type and encoding/decoding support by @adohe in #491
- refactor: replace cmd arguments from string array to map by @SparkYuan in #492
- fix: type mismatch in replacing implicit dependencies by @SparkYuan in #493
- feat: add a ruleset generator to support the maxavailable deploy strategy. by @panshuai-ps in #494
- feat: only support kcl schema type in the AppConfig generator by @SparkYuan in #496
- fix: error messages are ignored when executing resource nodes by @SparkYuan in #498
- feat: update workload generator support probe&lifecycle by @adohe in #495
- feat: support creating files with configmap in container by @liu-hm19 in #479
- fix: fix a coding mistake by @liu-hm19 in #499
- fix: port in probe url now gets parsed properly by @ffforest in #501
- feat: add Prometheus support by @ffforest in #490
- feat: add database generator by @liu-hm19 in #435
- feat: add network port generator by @healthjyk in #500
- fix: incorrect dag walk log messages by @SparkYuan in #508
- fix: a npe panic when deleting a resource failed by @SparkYuan in #507
- chore: update the version of alicloud provider by @SparkYuan in #506
- feat: support config maxunavaliable in deployment by @panshuai-ps in #504
- fix: add maxUnavailable in OpsRule by @SparkYuan in #509
- fix: set host to empty when url parse get localhost or 127.0.0.1 by @adohe in #512
- fix: don't generate a ruleset when the ops rule is empty by @SparkYuan in #513
- fix: add a kusion-control label in svc labels by @SparkYuan in #510
- feat: update kusion workflow and arch by @SparkYuan in #515
- feat: update scaffold template with kpm by @elliotxx in #505
- feat: update readme and workflow img by @SparkYuan in #516
- fix: invalidate dependency replacement in preview by @SparkYuan in #518
New Contributors
Full Changelog: v0.8.2...v0.9.0-rc.1
v0.8.2
What's Changed
Feature
- Optimize the output format and style control for better integration with other systems,
kusion init templatesandkusion previewnow support outputs in JSON format @healthjyk @liu-hm19 - Support listing templates for project initialization @healthjyk
- Support live-updated progress bar @howieyuen
- Bump KCL version to
v0.5.0@Peefy - Handle incompatible K8s ingress api change @SparkYuan
Bug or Regression
- Fix some incorrect error messages @SparkYuan
- Fix some bugs with the ignore-fields flag in
kusion apply@SparkYuan - Fix some bugs with the ignored paths in
kusion deps@amyXia1994
New Contributors
Docker Images
kusionstack/kusion:v0.8.2
Dependent version
- kcl-go:
v0.5.0 - kcl-plugin:
v0.5.0
Full Changelog: v0.8.1...v0.8.2