mirror of
https://github.com/kubevela/kubevela.git
synced 2026-05-06 09:27:16 +00:00
Align with doc site (#1545)
This commit is contained in:
committed by
GitHub
parent
ef0888f256
commit
00a4e4ca01
@@ -4,7 +4,7 @@
|
||||
|
||||
# KubeVela
|
||||
|
||||
KubeVela is a modern application engine that adapts to your application's needs, not the other way around.
|
||||
KubeVela is a modern application platform that adapts to your application's needs, not the other way around.
|
||||
|
||||
## Community
|
||||
|
||||
|
||||
@@ -2,27 +2,27 @@
|
||||
title: How it Works
|
||||
---
|
||||
|
||||
*"KubeVela is a scalable way to create PaaS-like experience on Kubernetes"*
|
||||
|
||||
In this documentation, we will explain the core idea of KubeVela and clarify some technical terms that are widely used in the project.
|
||||
|
||||
## Overview
|
||||
|
||||
First of all, KubeVela introduces a workflow with separate of concerns as below:
|
||||
- **Platform Team**
|
||||
- Defining templates for deployment environments and reusable capability modules to compose an application, and registering them into the cluster.
|
||||
- Model deployment environments and platform capabilities as reusable templates, then register them into the platform.
|
||||
- **End Users**
|
||||
- Choose a deployment environment, model and assemble the app with available modules, and deploy the app to target environment.
|
||||
- Choose a deployment environment, assemble the app with available templates per needs, and then deploy the app to target environment.
|
||||
|
||||
Below is how this workflow looks like:
|
||||
|
||||

|
||||
|
||||
This template based workflow make it possible for platform team enforce best practices and deployment confidence with a set of Kubernetes CRDs, and give end users a *PaaS-like* experience (*i.e. app-centric, higher level abstractions, self-service operations etc*) by natural.
|
||||
This design make it possible for platform team to enforce best practices by *coding* platform capabilities into templates, and leverage them to expose end users with a *PaaS-like* experience (*i.e. app-centric abstractions, self-service workflow etc*).
|
||||
|
||||
Also, as programmable components, these templates can be updated or extended easily per your needs at any time.
|
||||
|
||||

|
||||
|
||||
Below are the core concepts in KubeVela that make this happen.
|
||||
In the model layer, KubeVela leverages [Open Application Model (OAM)](https://oam.dev) to make above design happen.
|
||||
|
||||
## `Application`
|
||||
The *Application* is the core API of KubeVela. It allows developers to work with a single artifact to capture the complete application deployment with simplified primitives.
|
||||
@@ -62,13 +62,11 @@ spec:
|
||||
image: "fluentd"
|
||||
```
|
||||
|
||||
## Building the Abstraction
|
||||
|
||||
The `Application` resource in KubeVela is a LEGO-style object and does not even have fixed schema. Instead, it is composed by building blocks (app components and traits etc.) that allow you to on-board platform capabilities to this application definition via your own abstractions.
|
||||
|
||||
The building blocks to abstraction and model platform capabilities named `ComponentDefinition` and `TraitDefinition`.
|
||||
The building blocks to model platform capabilities named `ComponentDefinition` and `TraitDefinition`.
|
||||
|
||||
### ComponentDefinition
|
||||
### `ComponentDefinition`
|
||||
|
||||
`ComponentDefinition` is a pre-defined *template* for the deployable workload. It contains template, parametering and workload characteristic information as a declarative API resource.
|
||||
|
||||
@@ -76,7 +74,7 @@ Hence, the `Application` abstraction essentially declares how the user want to *
|
||||
|
||||
Some typical component definitions are *Long Running Web Service*, *One-time Off Task* or *Redis Database*. All component definitions expected to be pre-installed in the platform, or provided by component providers such as 3rd-party software vendors.
|
||||
|
||||
### TraitDefinition
|
||||
### `TraitDefinition`
|
||||
|
||||
Optionally, each component has a `.traits` section that augments the component instance with operational behaviors such as load balancing policy, network ingress routing, auto-scaling policies, or upgrade strategies, etc.
|
||||
|
||||
@@ -95,6 +93,14 @@ The main concepts of KubeVela could be shown as below:
|
||||
|
||||

|
||||
|
||||
Essentially:
|
||||
- Components - deployable/provisionable entities that composed your application deployment
|
||||
- e.g. a Kubernetes workload, a MySQL database, or a AWS S3 bucket
|
||||
- Traits - attachable operational features per your needs
|
||||
- e.g. autoscaling rules, rollout strategies, ingress rules, sidecars, security policies etc
|
||||
- Application - full description of your application deployment assembled with components and traits.
|
||||
- Environment - the target environments to deploy this application
|
||||
|
||||
## Architecture
|
||||
|
||||
The overall architecture of KubeVela is shown as below:
|
||||
|
||||
Reference in New Issue
Block a user