We're excited to announce the release of KubeVela 1.0.0! 🎉🎉🎉🎉
Thanks to all the new and existing contributors who helped make this release happen!
You may already noticed the awesome community has shipped a brand new KubeVela website https://kubevela.io ! 🎉🎉
If you're new to KubeVela, feel free to start with its getting started page and learning about its core concepts. The full feature of vela is explained in platform builder guide.
For existing adopters, please follow the installing or upgrading KubeVela to version 1.0.0.
Acknowledgements ❤️
Thanks to everyone who made this release possible!
@captainroy-hy @sunny0826 @leejanee @yangsoon @wangyikewxgm @hongchaodeng @zzxwill @ryanzhang-oss @resouer @wonderflow @hprotzek @vnzongzna @majian159 @Cweiping @mengjiao-liu @kushthedude @unknwon @Ghostbaby @mosesyou @dylandee @wangkai1994 @LeoLiuYan @just-do1 @hoopoe61 @Incubator4th @TomorJM @hahchenchen @zeed-w-beez @allenhaozi @mason1kwok @kinsolee @shikanon @96RadhikaJadhav
What's New
API version upgraded to v1beta1
All user facing APIs have been upgraded to v1beta1
, you could learn more details in the API Changes section below.
ComponentDefinition
The ComponentDefinition
now takes the responsibility of defining encapsulation and abstraction for your app components. And you are free to choose to use Helm chart or CUE to define them. This leaves WorkloadDefinition
focusing on declaring workload characteristic such as replicable
, childResource
etc, so the spec.schematic
field in WorkloadDefinition
could be deprecated in next few releases.
Application Versioning and Progressive Rollout
- A rolling style upgrade was supported by the object called
AppRollout
. It can help you to upgrade an Application from source revision to the target and support Blue/Green, Canary and A/B testing rollout strategy. - Multi-Version, Multi-Cluster Application Deployment was supported by the object called
AppDeployment
. It can help you to deploy multiple revision apps to multiple clusters with leverage of Service Mesh.
Visualization Enhancement
KubeVela now automatically generates Open-API-v3 Schema for all the definition abstractions including CUE, Helm and raw Kubernetes resource templates. You can integrate KubeVela with your own dashboard and generate forms from definitions at ease!
Application Abstraction
There're several major updates on the Application
abstraction itself:
- Helm based abstraction was supported with few limitations. In other words, you can now declare any existing Helm chart as an app component in KubeVela. The most exciting part is the trait system of KubeVela works seamlessly with the Helm based components, yes, just attach trait to it!
- Raw Kubernetes resource templates was still supported, that's simpler but less powerful comparing to the CUE way. Of course, the trait system also works seamless with it.
CUE Template Enhancement
- Runtime information context was supported, you could use this information to render the resources in CUE template.
- Data passing was supported during CUE rendering. Specifically, the
context.output
contains the rendered workload API resource and thecontext.outputs.<xx>
contains all the other rendered API resources. - K8s API resources are now built-in packages: the K8s built-in API including CRD will be discovered by KubeVela and automatically built as CUE packages, you can use it in your CUE template. This is very helpful in validation especially on writing new CUE templates.
- Dry-run Application was supported along with a debug and test guide for building CUE template. You can create CUE based definitions with confidence now!
- Deploy resources in different namespaces was supported now, you can specify namespace in your CUE template.
Declare and Consume Cloud Resources
- Declare and consume cloud resources were supported now in KubeVela, you can easily register cloud resources by
ComponentDefinition
and bind the service into the applications.
A brand new website
We have upgraded our website kubevela.io based on "Docusaurus". All docs is automatically generated from KubeVela while the blogs are on kubevela.io/blogs.
Changes
API Changes
- Change definition from cluster scope to namespace scope #1085 the cluster scope CRD was still compatible.
- Application Spec changes.
spec.components[x].settings
in v1alpha2 was changed tospec.components[x].properties
in v1beta1spec.components[x].traits[x].name
in v1alpha2 was changed tospec.components[x].traits[x].type
in v1beta1
Example of the v1alpha2 Spec:
apiVersion: core.oam.dev/v1alpha2
kind: Application
metadata:
name: first-vela-app
spec:
components:
- name: express-server
type: webservice
settings:
...
traits:
- name: ingress
properties:
...
Example of the v1beta1 Spec:
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: first-vela-app
spec:
components:
- name: express-server
type: webservice
properties:
...
traits:
- type: ingress
properties:
...
Deprecation
- route/autoscaler/metrics these three traits and their controllers were moved out from the vela core. #1172 You could still find and use them from https://github.com/oam-dev/catalog.
- the dashboard was deprecated in KubeVela and we will merge these features and create a new in velacp soon.
- vela CLI will only support run/modify an app from appfile by using
vela up
, so some other commands related were deprecated, such asvela svc deploy
,vela <trait> ...
Other Notable changes
prometheus
andcertmanager
CRD are not required in installation #1005- Parent overrides child when annotation/labels conflicts && one revision will apply once only in force mode && AC.status CRD updated #1109
ApplicationRevision
CRD Object was introduced as revision of Application #1214- KubeVela chart image pull policy was changed to
Always
fromIfNotPresent
#1228
5.Application
Controller will useAppContext
to manage the resources generation #1245, in other word, you can run KubeVelaApplication Controller
without anyv1apha2 Object
. - The regular time for all events automatically sync changed from 5min to 1 hour #1285
vela system dry-run
will print raw K8s resources in a better format #1246
Known Issues
- Built-in CUE package was not supported now for K8s Cluster v1.20, we will support in the next release. #1313
- Resources created in different namespace from application will only be garbage collected (GC) when the application deleted, an update will not trigger GC for now, we will fix it in the next release. #1339
Thanks again to all the contributors!