236 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			236 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
---
 | 
						|
title:  Custom Installation
 | 
						|
---
 | 
						|
import Tabs from '@theme/Tabs';
 | 
						|
import TabItem from '@theme/TabItem';
 | 
						|
 | 
						|
## Install KubeVela with cert-manager
 | 
						|
 | 
						|
By default, KubeVela will use a self-signed certificate provided by [kube-webhook-certgen](https://github.com/jet/kube-webhook-certgen) for admissionWebhooks.
 | 
						|
You can also use cert-manager if it's available. Note that you need to install cert-manager **before** the KubeVela chart.
 | 
						|
 | 
						|
```shell script
 | 
						|
helm repo add jetstack https://charts.jetstack.io
 | 
						|
helm repo update
 | 
						|
helm install cert-manager jetstack/cert-manager --namespace cert-manager --version v1.2.0 --create-namespace --set installCRDs=true
 | 
						|
```
 | 
						|
 | 
						|
Install kubevela with enabled certmanager:
 | 
						|
```shell script
 | 
						|
helm install --create-namespace -n vela-system --set admissionWebhooks.certManager.enabled=true kubevela kubevela/vela-core --wait
 | 
						|
```
 | 
						|
 | 
						|
## Install Pre-release
 | 
						|
    
 | 
						|
Add flag `--devel` in command `helm search` to choose a pre-release
 | 
						|
version in format `<next_version>-rc-master`. It means a release candidate version build on `master` branch,
 | 
						|
such as `0.4.0-rc-master`.
 | 
						|
 | 
						|
```shell script
 | 
						|
helm search repo kubevela/vela-core -l --devel
 | 
						|
```
 | 
						|
```console
 | 
						|
    NAME                      CHART VERSION         APP VERSION           DESCRIPTION
 | 
						|
    kubevela/vela-core        0.4.0-rc-master         0.4.0-rc-master         A Helm chart for KubeVela core
 | 
						|
    kubevela/vela-core        0.3.2                   0.3.2                   A Helm chart for KubeVela core
 | 
						|
    kubevela/vela-core        0.3.1                 0.3.1                 A Helm chart for KubeVela core
 | 
						|
```
 | 
						|
 | 
						|
And try the following command to install it.
 | 
						|
 | 
						|
```shell script
 | 
						|
helm install --create-namespace -n vela-system kubevela kubevela/vela-core --version <next_version>-rc-master --wait
 | 
						|
```
 | 
						|
```console
 | 
						|
NAME: kubevela
 | 
						|
LAST DEPLOYED: Thu Apr  1 19:41:30 2021
 | 
						|
NAMESPACE: vela-system
 | 
						|
STATUS: deployed
 | 
						|
REVISION: 1
 | 
						|
NOTES:
 | 
						|
Welcome to use the KubeVela! Enjoy your shipping application journey!
 | 
						|
```
 | 
						|
## Install Kubectl Vela Plugin
 | 
						|
 | 
						|
Install vela kubectl plugin can help you to ship applications more easily!
 | 
						|
 | 
						|
<Tabs
 | 
						|
className="unique-tabs"
 | 
						|
defaultValue="krew"
 | 
						|
values={[
 | 
						|
{label: 'Krew', value: 'krew'},
 | 
						|
{label: 'Script', value: 'script'},
 | 
						|
]}>
 | 
						|
<TabItem value="krew">
 | 
						|
 | 
						|
1. [Install and set up](https://krew.sigs.k8s.io/docs/user-guide/setup/install/) Krew on your machine.
 | 
						|
2. Discover plugins available on Krew:
 | 
						|
```shell
 | 
						|
kubectl krew update
 | 
						|
```
 | 
						|
3. install kubectl vela:
 | 
						|
```shell script
 | 
						|
kubectl krew install vela
 | 
						|
```
 | 
						|
 | 
						|
</TabItem>
 | 
						|
<TabItem value="script">
 | 
						|
 | 
						|
**macOS/Linux**
 | 
						|
```shell script
 | 
						|
curl -fsSl https://kubevela.io/script/install-kubectl-vela.sh | bash
 | 
						|
```
 | 
						|
 | 
						|
You can also download the binary from [release pages ( >= v1.0.3)](https://github.com/oam-dev/kubevela/releases) manually.
 | 
						|
Kubectl will discover it from your system path automatically.
 | 
						|
 | 
						|
</TabItem>
 | 
						|
</Tabs>
 | 
						|
 | 
						|
For more usage please reference [kubectl plugin](../kubectlplugin).
 | 
						|
## Upgrade
 | 
						|
 | 
						|
### Step 1. Update Helm repo
 | 
						|
 | 
						|
 | 
						|
You can explore the newly released chart versions of KubeVela by run:
 | 
						|
 | 
						|
```shell
 | 
						|
helm repo update
 | 
						|
helm search repo kubevela/vela-core -l
 | 
						|
```
 | 
						|
 | 
						|
### Step 2. Upgrade KubeVela CRDs
 | 
						|
 | 
						|
```shell
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_appdeployments.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_applicationcontexts.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_applicationrevisions.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_applications.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_approllouts.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_clusters.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_componentdefinitions.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_containerizedworkloads.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_definitionrevisions.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_envbindings.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_healthscopes.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_initializers.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_manualscalertraits.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_policydefinitions.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_resourcetrackers.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_scopedefinitions.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_traitdefinitions.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_workflowstepdefinitions.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/core.oam.dev_workloaddefinitions.yaml
 | 
						|
kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.1/charts/vela-core/crds/standard.oam.dev_rollouts.yaml
 | 
						|
```
 | 
						|
 | 
						|
> Tips: If you see errors like `* is invalid: spec.scope: Invalid value: "Namespaced": filed is immutable`. Please delete the CRD which reports error and re-apply the kubevela crds.
 | 
						|
 | 
						|
```shell
 | 
						|
 kubectl delete crd \
 | 
						|
  scopedefinitions.core.oam.dev \
 | 
						|
  traitdefinitions.core.oam.dev \
 | 
						|
  workloaddefinitions.core.oam.dev
 | 
						|
```
 | 
						|
 | 
						|
### Step 3. Upgrade KubeVela Helm chart
 | 
						|
 | 
						|
```shell
 | 
						|
helm upgrade --install --create-namespace --namespace vela-system  kubevela kubevela/vela-core --version <the_new_version> --wait
 | 
						|
```
 | 
						|
 | 
						|
## Addons
 | 
						|
 | 
						|
| Name                  | Description                                             | capability        | Open Source Project Reference                                        |
 | 
						|
|---------------------|-------------------------------------------------|----------------|-------------------------------------------------|
 | 
						|
| terraform           | Basic addon to Provide Cloud Resources(installed by default)                                    | -              | https://github.com/oam-dev/terraform-controller |
 | 
						|
| fluxcd              | Support Deployment of Helm and Kustomize components                       | kustomize、helm | https://fluxcd.io/                              |
 | 
						|
| kruise              | Support more powerful workload feature                     | cloneset       | https://openkruise.io/                          |
 | 
						|
| prometheus          | Support basic observability from Promethus                           | -              | https://prometheus.io/                          |
 | 
						|
| keda                | Support event driven auto scaling                            | -              | https://keda.sh/                                |
 | 
						|
| ocm                 | Support Multi-cluster Application Deployment                                  | -              | http://open-cluster-management.io/              |
 | 
						|
| observability       | Support KubeVela core observability     | -              | -                                               |
 | 
						|
 | 
						|
1. Search all addons 
 | 
						|
 | 
						|
```shell
 | 
						|
vela addon list
 | 
						|
```
 | 
						|
 | 
						|
2. Install addons (use fluxcd as example)
 | 
						|
 | 
						|
```shell
 | 
						|
vela addon enable fluxcd
 | 
						|
```
 | 
						|
 | 
						|
3. Disable addons
 | 
						|
 | 
						|
```
 | 
						|
vela addon disable fluxcd
 | 
						|
```
 | 
						|
 | 
						|
Please remove all application using this addon before disable it.
 | 
						|
 | 
						|
 | 
						|
## Multi-Cluster Management
 | 
						|
 | 
						|
KubeVela can orchestrate applications across multiple Kubernetes clusters. This capability is enabled by default, but you can enable it manually by running the following command:
 | 
						|
 | 
						|
```shell
 | 
						|
helm upgrade --install kubevela kubevela/vela-core -n vela-system --set multicluster.enabled=true --create-namespace --wait
 | 
						|
```
 | 
						|
 | 
						|
Verify that multi-cluster is enabled:
 | 
						|
 | 
						|
```shell
 | 
						|
> kubectl get APIService v1alpha1.cluster.core.oam.dev
 | 
						|
NAME                            SERVICE                                        AVAILABLE   AGE
 | 
						|
v1alpha1.cluster.core.oam.dev   vela-system/kubevela-cluster-gateway-service   True        7h40m
 | 
						|
```
 | 
						|
 | 
						|
 | 
						|
## Clean Up
 | 
						|
 | 
						|
Run:
 | 
						|
 | 
						|
```shell script
 | 
						|
helm uninstall -n vela-system kubevela
 | 
						|
rm -r ~/.vela
 | 
						|
```
 | 
						|
 | 
						|
This will uninstall KubeVela server component and its dependency components.
 | 
						|
This also cleans up local CLI cache.
 | 
						|
 | 
						|
Then clean up CRDs (CRDs are not removed via helm by default):
 | 
						|
 | 
						|
```shell script
 | 
						|
 kubectl delete crd \
 | 
						|
  appdeployments.core.oam.dev \
 | 
						|
  applicationconfigurations.core.oam.dev \
 | 
						|
  applicationcontexts.core.oam.dev \
 | 
						|
  applicationrevisions.core.oam.dev \
 | 
						|
  applications.core.oam.dev \
 | 
						|
  approllouts.core.oam.dev \
 | 
						|
  clusters.core.oam.dev \
 | 
						|
  componentdefinitions.core.oam.dev \
 | 
						|
  components.core.oam.dev \
 | 
						|
  containerizedworkloads.core.oam.dev \
 | 
						|
  definitionrevisions.core.oam.dev \
 | 
						|
  envbindings.core.oam.dev \
 | 
						|
  healthscopes.core.oam.dev \
 | 
						|
  initializers.core.oam.dev \
 | 
						|
  manualscalertraits.core.oam.dev \
 | 
						|
  podspecworkloads.standard.oam.dev \
 | 
						|
  policydefinitions.core.oam.dev \
 | 
						|
  resourcetrackers.core.oam.dev \
 | 
						|
  rollouts.standard.oam.dev \
 | 
						|
  rollouttraits.standard.oam.dev \
 | 
						|
  scopedefinitions.core.oam.dev \
 | 
						|
  traitdefinitions.core.oam.dev \
 | 
						|
  workflows.core.oam.dev \
 | 
						|
  workflowstepdefinitions.core.oam.dev \
 | 
						|
  workloaddefinitions.core.oam.dev 
 | 
						|
```
 | 
						|
 |