add doc for users to migrate from oam-runtime to kubevela (#697)

* add doc for users to migrate from oam-runtime to kubevela

* Update design/vela-core/migrate-from-oam-runtime.md

Co-authored-by: Zheng Xi Zhou <zzxwill@gmail.com>

* Update design/vela-core/migrate-from-oam-runtime.md

Co-authored-by: Zheng Xi Zhou <zzxwill@gmail.com>

* Update design/vela-core/migrate-from-oam-runtime.md

Co-authored-by: Zheng Xi Zhou <zzxwill@gmail.com>

* Update design/vela-core/migrate-from-oam-runtime.md

Co-authored-by: Zheng Xi Zhou <zzxwill@gmail.com>

* Update design/vela-core/migrate-from-oam-runtime.md

Co-authored-by: Zheng Xi Zhou <zzxwill@gmail.com>

* Update design/vela-core/migrate-from-oam-runtime.md

Co-authored-by: Zheng Xi Zhou <zzxwill@gmail.com>

* Update design/vela-core/migrate-from-oam-runtime.md

Co-authored-by: Lei Zhang (Harry) <resouer@gmail.com>

* Update design/vela-core/migrate-from-oam-runtime.md

Co-authored-by: Lei Zhang (Harry) <resouer@gmail.com>

* add disable webhook

* Update design/vela-core/migrate-from-oam-runtime.md

Co-authored-by: Lei Zhang (Harry) <resouer@gmail.com>

* Update design/vela-core/migrate-from-oam-runtime.md

Co-authored-by: Lei Zhang (Harry) <resouer@gmail.com>

* Update design/vela-core/migrate-from-oam-runtime.md

Co-authored-by: Lei Zhang (Harry) <resouer@gmail.com>

* Update design/vela-core/migrate-from-oam-runtime.md

Co-authored-by: Lei Zhang (Harry) <resouer@gmail.com>

* address comments

* Update design/vela-core/migrate-from-oam-runtime.md

Co-authored-by: Lei Zhang (Harry) <resouer@gmail.com>

* Update design/vela-core/migrate-from-oam-runtime.md

Co-authored-by: Hongchao Deng <hongchaodeng1@gmail.com>

Co-authored-by: Zheng Xi Zhou <zzxwill@gmail.com>
Co-authored-by: Lei Zhang (Harry) <resouer@gmail.com>
Co-authored-by: Hongchao Deng <hongchaodeng1@gmail.com>
This commit is contained in:
Jianbo Sun
2020-12-03 15:29:56 +08:00
committed by GitHub
co-authored by Zheng Xi Zhou Lei Zhang Hongchao Deng
parent b45b9dd6c7
commit a4e68dd604
@@ -0,0 +1,152 @@
# How to upgrade to KubeVela
What if I want to upgrade from [oam-kubernetes-runtime](https://github.com/crossplane/oam-kubernetes-runtime) to KubeVela? Here's a detailed guide!
## For users who are using OAM runtime as standalone controller
If you are using OAM Runtime as Standalone Controller, upgrading to KubeVela to KubeVela is very straight forward.
Server-side KubeVela(We call it `vela-core` for convenience) now includes following **BUILT-IN** CRDs and controllers.
| Type | CRD | Controller | From |
| ---- | ---- | ---- | ---- |
| Control Plane Object | `applicationconfigurations.core.oam.dev` | Yes | OAM Runtime |
| Control Plane Object | `components.core.oam.dev` | Yes | OAM Runtime |
| Workload Type | `containerizedworklaods.core.oam.dev` | Yes | OAM Runtime |
| Scope | `healthscope.core.oam.dev` | Yes | OAM Runtime |
| Trait | `manualscalertraits.core.oam.dev` | Yes | OAM Runtime |
| Control Plane Object | `scopedefinitions.core.oam.dev` | No | OAM Runtime |
| Control Plane Object | `traitdefinitions.core.oam.dev` | No | OAM Runtime |
| Control Plane Object | `workloaddefinitions.core.oam.dev` | No | OAM Runtime |
| Trait | `autoscalers.standard.oam.dev` | Yes | New in KubeVela |
| Trait | `metricstraits.standard.oam.dev` | Yes | New in KubeVela |
| Workload Type | `podspecworkloads.standard.oam.dev` | Yes | New in KubeVela |
| Trait | `route.standard.oam.dev` | Yes | New in KubeVela |
CRDs and Controllers in the table from 'OAM Runtime' are exactly the same to those in `oam-kubernetes-runtime`.
So in KubeVela we have added 4 more new CRDs with controller.
### Option 1: I only want to have OAM control plane objects only, no additional traits and workload types.
1. Find you deployment
```shell script
$ kubectl -n oam-system get deployment -l app.kubernetes.io/name=oam-kubernetes-runtime
NAME READY UP-TO-DATE AVAILABLE AGE
oam-kubernetes-runtime-oam 1/1 1 1 62s
```
2. Update the deployment
In this case, the deployment name of OAM runtime is `oam-kubernetes-runtime-oam`, let's edit it to update the image:
```shell script
$ kubectl -n oam-system edit deployment oam-kubernetes-runtime-oam
```
There are two changes:
- update the image from `crossplane/oam-kubernetes-runtime:latest` to `oamdev/vela-core:latest`
- add an args `- "--disable-caps=all"`, which will disable all additional workloads and traits built in vela-core described in the following table.
| Type | Current KubeVela Additional CRD |
| ---- | ---- |
| Trait | `autoscalers.standard.oam.dev` |
| Trait | `metricstraits.standard.oam.dev` |
| Workload | `podspecworkloads.standard.oam.dev` |
| Trait | `route.standard.oam.dev` |
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: oam-kubernetes-runtime-oam
...
containers:
- name: oam
args:
- "--metrics-addr=:8080"
- "--enable-leader-election"
+ - "--disable-caps=all"
- image: crossplane/oam-kubernetes-runtime:latest
+ image: oamdev/vela-core:latest
imagePullPolicy: "Always"
...
```
### Option 2: I want full featured KubeVela, including its built-in workload types and traits.
1. Install Additional CRDs
```shell script
$ kubectl apply -f charts/vela-core/crds
```
2. Install Definition files
```shell script
$ kubectl apply -f charts/vela-core/templates/defwithtemplate
```
3. Create namespace, vela-core use `vela-system` as default
```shell script
$ kubectl create ns vela-system
```
4. Install Cert Manager
```shell script
$ kubectl apply -f charts/vela-core/templates/cert-manager.yaml
```
5. Install Vela Dependency ConfigMap
```shell script
$ kubectl apply -f charts/vela-core/templates/velaConfig.yaml
```
6. Delete your old oam-runtime deployment
Find the running deployment.
```shell script
$ kubectl -n oam-system get deployment -l app.kubernetes.io/name=oam-kubernetes-runtime
NAME READY UP-TO-DATE AVAILABLE AGE
oam-kubernetes-runtime-oam 1/1 1 1 62s
```
Delete the deployment found.
```shell script
$ kubectl -n oam-system delete deployment oam-kubernetes-runtime-oam
```
7. Install Certificate and Webhook for the new controller
```shell script
$ helm template --release-name kubevela -n vela-system -s templates/webhook.yaml charts/vela-core/ | kubectl apply -f -
```
8. Install the new controller
```shell script
$ helm template --release-name kubevela -n vela-system -s templates/kubevela-controller.yaml charts/vela-core/ | kubectl apply -f -
```
> TIPS: If you want to disable webhook, change 'useWebhook' to be 'false' in `charts/vela-core/values.yaml`
Then you have successfully migrate from oam-kubernetes-runtime to KubeVela.
## For users who are importing OAM runtime as library
If you are importing `oam-kubernetes-runtime` as library, you can update your import headers.
Files are refactored as below:
| OLD | NEW | Usage |
| ---- | ---- | ---- |
| `github.com/crossplane/oam-kubernetes-runtime/apis/core` | `github.com/oam-dev/kubevela/apis/core.oam.dev` | API Spec Code |
| `github.com/crossplane/oam-kubernetes-runtime/pkg/controller` | `github.com/oam-dev/kubevela/pkg/controller/core.oam.dev` | OAM Controller Code |
| `github.com/crossplane/oam-kubernetes-runtime/pkg/oam` | `github.com/oam-dev/kubevela/pkg/oam` | OAM Common Lib Code |
| `github.com/crossplane/oam-kubernetes-runtime/pkg/webhook` | `github.com/oam-dev/kubevela/pkg/webhook/core.oam.dev` | OAM Webhook Code |