Align with doc site (#1545)

This commit is contained in:
Lei Zhang (Harry)
2021-04-21 00:49:10 -07:00
committed by GitHub
parent ef0888f256
commit 00a4e4ca01
3 changed files with 31 additions and 27 deletions

View File

@@ -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

View File

@@ -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:
![alt](resources/how-it-works.png)
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.
![alt](resources/what-is-kubevela.png)
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:
![alt](resources/concepts.png)
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: