The overall architecture of KubeVela is shown as below:
KubeVela is a Control Plane System
KubeVela orchestrates application components, cloud resources and pipeline over multiple clusters and hybrid environments. It is designed to be an application delivery and operation control plane instead of a runtime plugin.
The Application concept is the main KubeVela API, it's designed as declarative and application-centric which can be integrated with upstream CI pipelines and GitOps tools easily.
In implementation, KubeVela relies on a dedicated Kubernetes cluster to achieve above goals. We chose to rely on Kubernetes as the control plane implementation because this approach is battle tested and brings determinism, convergence and automation to application management at scale. In detail, KubeVela is composed by several parts:
- KubeVela Core Controller that provides the core control logic of the entire system. For example, handling KubeVela API resources, orchestrating workflow, storing revisions, parsing and executing CUE code, garbage collecting, etc.
- Addons that register and manage definitions along with extended CRD controllers that KubeVela needed to work. For example, Flux and Terraform addons. The UI console called "App Delivery Platform" in the architecture is also one of the addon.
This control plane Kubernetes cluster will be referenced as the "control plane cluster" in the following documentation.
The runtime infrastructure is where the applications are actually running on. KubeVela itself is fully runtime infrastructure agnostic and hence allows you to deploy application to both Kubernetes based infrastructure and non-Kubernetes environments such as cloud platforms and edge devices.
KubeVela is Programmable
In real world, application deployment tends to be complex and varies from teams, environments and scenarios. Hence, KubeVela introduced the Definition Mechanism which is a fully programmable approach to implement its deployment model so it can adapt to every need of your application delivery use case in-place.
Who should use KubeVela?
- Platform builders for PaaS, Serverless, Application Management/Delivery systems
- KubeVela works as an application delivery engine that you could build your advanced platform with.
- ISV, SaaS owners, and Application Architects who need to distribute software to anywhere
- KubeVela has full extension and integration capabilities to allow users to distribute applications with customized addons easily. Think about an App Store but on Kubernetes and clouds.
- Application Developers, Operators, DevOps Engineers
- VelaUX is an addon of KubeVela, with this addon enabled, it provides an out-of-box modern application Continuous Delivery (CD) and Management platform with an easy-to-use UI console.
- OAM(Open Application Model) is the model behind KubeVela, it provides a platform-agnostic application model including the best practices and methodology for different vendors to follow. The evolution of the model depends primarily on the practices of KubeVela currently.
- KubeVela is the control plane running on Kubernetes, it works as a CRD controller and brings OAM model into your Cloud Native PaaS along with lots of addon capabilities.
- VelaUX is the app delivery platform, it's also one of the KubeVela addons, which provides out-of-box application delivery and management capabilities with restful API and UI console.
The KubeVela team will mainly focus on the control plane. By building VelaUX, we aim to provide out-of-box solutions for small and medium sized companies, and also eat our own dog food and make the extension, integration and the addon system capabilities of KubeVela better.
- View User Guide to look on more of what you can achieve with KubeVela.