Files
kubevela/docs/examples/kubecondemo/README.md
2021-03-26 19:14:07 +08:00

82 lines
3.7 KiB
Markdown

# Kubecon 2020 NA Kubevela Tutorial
> :warning: This is an outdated tutorial only applies to the old version of kubevela.
Before you read, you need to know what you are doing.
## Pre-requisites
* Kubernetes cluster version >1.16
(minikube or kind are fine)
* Verify with `kubectl config current-context` and `kubectl version`
* One of the crossplane supported public cloud (AWS, Azure, Alibaba Cloud, GCK) access key and secret
* Install Crossplane(later)
* Download KubeVela release from [release page](https://github.com/oam-dev/kubevela/releases/tag/v0.0.9)
* Unpack the package and add it to `PATH` by running `sudo mv ./vela /usr/local/bin/vela`
* Run `vela install`
## Lab 1: Use vela to deploy a simple application
### Purpose: Showcase the simple to use, application centric vela user interfaces.
* Sync with cluster `vela system update`
* List installed workloads `vela workloads`
* List installed traits `vela traits`
* Deploy a simple application with
```
vela svc deploy back -t worker --image crccheck/hello-world --app lab1
vela svc deploy front -t webservice --image crccheck/hello-world --port 8000 --app lab1
```
* Show application status `vela app show lab1`
## Lab 2: Add and apply KubeWatch
### Purpose: Showcase the steps to add and use capacity from community
* Create a [slack bot](https://api.slack.com/apps?new_app=1)
* Add a cap center `vela cap center config mycap https://github.com/oam-dev/catalog/tree/master/registry`
* Check capabilities `vela cap ls`
* Install the kubewatch capability `vela cap add mycap/kubewatch`
* Create an application `vela comp deploy mycomp -t webservice --image crccheck/hello-world --port 8000 --app lab2`
* Add kubewatch trait to the application `vela kubewatch mycomp --app lab2 --webhook https://hooks.slack.com/<yourid>`
* Check the slack channel to verify the notifications
## Lab 3: Manage cloud resource and applications in application centric way
### Purpose: Showcase the application centric view of appfile
### Install Crossplane (This lab uses crossplane version 0.13)
Also the examples are based on Alibaba Cloud settings
* Create crossplane namespace: `kubectl create ns crossplane-system`
* Install crossplane helm chart: `helm install crossplane charts/crossplane/ --namespace crossplane-system`
* Install crossplane cli: `curl -sL https://raw.githubusercontent.com/crossplane/crossplane/release-0.13/install.sh | sh`
* Add crossplane to `PATH`: `sudo mv kubectl-crossplane /usr/local/bin`
* Configure cloud provider(Alibaba Cloud)
* Add cloud provider: `kubectl crossplane install provider crossplane/provider-alibaba:v0.3.0`
* Create provider secret: `kubectl create secret generic alibaba-creds --from-literal=accessKeyId=<change here> --from-literal=accessKeySecret=<change here> -n crossplane-system`
* Configure the provider: `kubectl apply -f script/provider.yaml`
* Configure infrastructure: `kubectl crossplane install configuration crossplane/getting-started-with-alibaba:v0.13`
### Import the database workload definition
First, register the db workload definition:
`kubectl apply -f script/def_db.yaml`
The webservice workload is customized a little.
`kubectl apply -f script/webservice.yaml`
Don't forget to update vela:
`vela system update`
### Apply the appfile
`vela up`
### Access the web-ui
If you have a cluster supporting Ingress, the route trait will work.
`kubectl get ingress` command will show the ip address of the web-ui. Copy that service and add the `<ip address> kubevela.kubecon.demo ` record to your local machine's `/etc/hosts`. Then you may access the GUI from web browser.
If you don't have Ingress installed, the eaisest way to access the demo app is through port forwarding :`kubectl port-forward <your webui pod name> 8080` and access it from browser using `http://localhost:8080`.