357 lines
15 KiB
Plaintext
357 lines
15 KiB
Plaintext
---
|
||
title: Installation
|
||
---
|
||
|
||
import Tabs from '@theme/Tabs';
|
||
import TabItem from '@theme/TabItem';
|
||
|
||
> For upgrading existing KubeVela, please read the [upgrade guide](./platform-engineers/advanced-install/#upgrade).
|
||
|
||
## 1. Choose Control Plane Cluster
|
||
|
||
Requirements:
|
||
- Kubernetes cluster >= v1.18.0
|
||
- `kubectl` installed and configured
|
||
|
||
KubeVela relies on Kubernetes as control plane. The control plane could be any managed Kubernetes offering or your own cluster.
|
||
|
||
For local deployment and test, you could use `kind` or `minikube`. For production usage, you could use Kubernetes services provided by cloud providers.
|
||
|
||
<Tabs
|
||
className="unique-tabs"
|
||
defaultValue="kind"
|
||
values={[
|
||
{label: 'Kind', value: 'kind'},
|
||
{label: 'RKE', value: 'rke'},
|
||
{label: 'Minikube', value: 'minikube'},
|
||
{label: 'Cloud Provider', value: 'cloudprovider'},
|
||
]}>
|
||
<TabItem value="minikube">
|
||
|
||
Follow the minikube [installation guide](https://minikube.sigs.k8s.io/docs/start/).
|
||
|
||
Then spins up a minikube cluster
|
||
|
||
```shell script
|
||
minikube start
|
||
```
|
||
|
||
<details> <summary> Install ingress to enable service route </summary>
|
||
|
||
```shell script
|
||
minikube addons enable ingress
|
||
```
|
||
|
||
</details>
|
||
</TabItem>
|
||
|
||
<TabItem value="rke">
|
||
|
||
<b>(1)Install docker:</b>
|
||
|
||
The rke depend on docker, Follow the docker [installation guide](https://docs.docker.com/engine/install/).
|
||
|
||
<b>(2)Install rke:</b>
|
||
|
||
|
||
Download rke binary from [rke release page](https://github.com/rancher/rke/releases).
|
||
|
||
If you have limited Internet access:
|
||
```
|
||
wget https://static.kubevela.net/binary/rke/rke_linux-amd64 -O /usr/bin/rke
|
||
chmod +x /usr/bin/rke
|
||
```
|
||
|
||
<b>(3)Install kubernetes cluster:</b>
|
||
|
||
```shell script
|
||
mkdir ~/rkeinit && cd ~/rkeinit
|
||
# Wizard-style configuration
|
||
rke config
|
||
# Kubernetes Cluster Installation
|
||
rke up
|
||
# Install kubectl Command
|
||
mkdir ~/.kube
|
||
cp kube_config_cluster.yml ~/.kube/config
|
||
docker cp kubelet:/usr/local/bin/kubectl /usr/local/bin/kubectl
|
||
```
|
||
</TabItem>
|
||
|
||
<TabItem value="kind">
|
||
|
||
Follow [this guide](https://kind.sigs.k8s.io/docs/user/quick-start/#installation) to install kind.
|
||
|
||
Then spins up a kind cluster:
|
||
|
||
```shell script
|
||
cat <<EOF | kind create cluster --image=kindest/node:v1.18.15 --config=-
|
||
kind: Cluster
|
||
apiVersion: kind.x-k8s.io/v1alpha4
|
||
nodes:
|
||
- role: control-plane
|
||
kubeadmConfigPatches:
|
||
- |
|
||
kind: InitConfiguration
|
||
nodeRegistration:
|
||
kubeletExtraArgs:
|
||
node-labels: "ingress-ready=true"
|
||
extraPortMappings:
|
||
- containerPort: 80
|
||
hostPort: 80
|
||
protocol: TCP
|
||
- containerPort: 443
|
||
hostPort: 443
|
||
protocol: TCP
|
||
EOF
|
||
```
|
||
|
||
<details> <summary> Install ingress to enable service route </summary>
|
||
|
||
```shell script
|
||
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/kind/deploy.yaml
|
||
```
|
||
|
||
</details>
|
||
</TabItem>
|
||
|
||
<TabItem value="cloudprovider">
|
||
|
||
* Alibaba Cloud [ACK Service](https://www.aliyun.com/product/kubernetes)
|
||
* AWS [EKS Service](https://aws.amazon.com/cn/eks)
|
||
* Azure [AKS Service](https://azure.microsoft.com/en-us/services/kubernetes-service)
|
||
* Google [GKE Service](https://cloud.google.com/kubernetes-engine)
|
||
|
||
> Please ensure [ingress-nginx](https://kubernetes.github.io/ingress-nginx/deploy/) is installed and enabled.
|
||
|
||
</TabItem>
|
||
</Tabs>
|
||
|
||
|
||
## 2. Install KubeVela
|
||
|
||
Before install, you have to make sure the helm is available. Follow [this guide](https://helm.sh/docs/intro/install/) to install helm.
|
||
|
||
If you have limited Internet access
|
||
|
||
```shell script
|
||
wget https://static.kubevela.net/binary/helm/helm-v3.7.0-linux-amd64 -O /usr/bin/helm
|
||
chmod +x /usr/bin/helm
|
||
```
|
||
|
||
1. Add and update helm chart repo for KubeVela
|
||
```shell script
|
||
helm repo add kubevela https://charts.kubevela.net/core
|
||
helm repo update
|
||
```
|
||
|
||
2. Install KubeVela
|
||
```shell script
|
||
helm install --create-namespace -n vela-system kubevela kubevela/vela-core --set multicluster.enabled=true --wait
|
||
```
|
||
You can refer to [advanced installation guide](./platform-engineers/advanced-install) for more custom ways.
|
||
|
||
3. Verify chart installed successfully
|
||
```shell script
|
||
helm test kubevela -n vela-system
|
||
```
|
||
|
||
<details> <summary> Click to see the expected output of helm test </summary>
|
||
|
||
```shell
|
||
Pod kubevela-application-test pending
|
||
Pod kubevela-application-test pending
|
||
Pod kubevela-application-test running
|
||
Pod kubevela-application-test succeeded
|
||
NAME: kubevela
|
||
LAST DEPLOYED: Tue Apr 13 18:42:20 2021
|
||
NAMESPACE: vela-system
|
||
STATUS: deployed
|
||
REVISION: 1
|
||
TEST SUITE: kubevela-application-test
|
||
Last Started: Fri Apr 16 20:49:10 2021
|
||
Last Completed: Fri Apr 16 20:50:04 2021
|
||
Phase: Succeeded
|
||
TEST SUITE: first-vela-app
|
||
Last Started: Fri Apr 16 20:49:10 2021
|
||
Last Completed: Fri Apr 16 20:49:10 2021
|
||
Phase: Succeeded
|
||
NOTES:
|
||
Welcome to use the KubeVela! Enjoy your shipping application journey!
|
||
```
|
||
|
||
</details>
|
||
|
||
## 3. [Optional] Get KubeVela CLI
|
||
|
||
KubeVela CLI gives you a simplified workflow to manage applications with optimized output. It is not mandatory though.
|
||
|
||
KubeVela CLI could be [installed as kubectl plugin](./platform-engineers/advanced-install#install-kubectl-vela-plugin), or install as standalone binary.
|
||
|
||
<Tabs
|
||
className="unique-tabs"
|
||
defaultValue="script"
|
||
values={[
|
||
{label: 'Script', value: 'script'},
|
||
{label: 'Homebrew', value: 'homebrew'},
|
||
{label: 'Download directly from releases', value: 'download'},
|
||
]}>
|
||
<TabItem value="script">
|
||
|
||
** macOS/Linux **
|
||
|
||
```shell script
|
||
curl -fsSl https://kubevela.io/script/install.sh | bash
|
||
```
|
||
|
||
**Windows**
|
||
|
||
```shell script
|
||
powershell -Command "iwr -useb https://kubevela.io/script/install.ps1 | iex"
|
||
```
|
||
</TabItem>
|
||
<TabItem value="homebrew">
|
||
|
||
**macOS/Linux**
|
||
|
||
Update your brew firstly.
|
||
```shell script
|
||
brew update
|
||
```
|
||
Then install kubevela client.
|
||
|
||
```shell script
|
||
brew install kubevela
|
||
```
|
||
</TabItem>
|
||
<TabItem value="download">
|
||
|
||
- Download the latest `vela` binary from the [releases page](https://github.com/oam-dev/kubevela/releases).
|
||
- Unpack the `vela` binary and add it to `$PATH` to get started.
|
||
|
||
```shell script
|
||
sudo mv ./vela /usr/local/bin/vela
|
||
```
|
||
|
||
> Known Issue(https://github.com/oam-dev/kubevela/issues/625):
|
||
> If you're using mac, it will report that “vela” cannot be opened because the developer cannot be verified.
|
||
>
|
||
> The new version of MacOS is stricter about running software you've downloaded that isn't signed with an Apple developer key. And we haven't supported that for KubeVela yet.
|
||
> You can open your 'System Preference' -> 'Security & Privacy' -> General, click the 'Allow Anyway' to temporarily fix it.
|
||
|
||
</TabItem>
|
||
</Tabs>
|
||
|
||
## 4. [Optional] Enable Addons
|
||
|
||
KubeVela support a dozen of [out-of-box addons](./platform-engineers/advanced-install#Addons),
|
||
please at least enable following addons to make sure KubeVela functioning well:
|
||
|
||
* Helm and Kustomize Components addons
|
||
```shell
|
||
vela addon enable fluxcd
|
||
```
|
||
|
||
* Terraform addon
|
||
```shell
|
||
vela addon enable terraform
|
||
```
|
||
|
||
* Terraform Provider addon
|
||
|
||
Enable Terraform Alibaba Cloud Provider as below to [provision and/or consume cloud resources](./end-user/components/cloud-services/provider-and-consume-cloud-services).
|
||
|
||
Here is how to get [access key](https://help.aliyun.com/knowledge_detail/38738.html). Set the value for `ALICLOUD_REGION` by picking one `RegionId` from [Alibaba Cloud region list](https://www.alibabacloud.com/help/doc-detail/72379.htm).
|
||
|
||
```shell
|
||
vela addon enable terraform/provider-alibaba ALICLOUD_ACCESS_KEY=<xxx> ALICLOUD_SECRET_KEY=<yyy> ALICLOUD_SECURITY_TOKEN=<zzz> ALICLOUD_REGION=<region>
|
||
```
|
||
|
||
## 5. Verify
|
||
|
||
> You can also using `kubectl get comp -A` and `kubectl get trait -A` instead if you haven't installed CLI.
|
||
|
||
* Get built-in component types by `vela` CLI:
|
||
```shell script
|
||
vela components
|
||
```
|
||
<details> <summary> Outputs </summary>
|
||
|
||
```console
|
||
NAME NAMESPACE WORKLOAD DESCRIPTION
|
||
alibaba-ack vela-system configurations.terraform.core.oam.dev Terraform configuration for Alibaba Cloud ACK cluster
|
||
alibaba-oss vela-system configurations.terraform.core.oam.dev Terraform configuration for Alibaba Cloud OSS object
|
||
alibaba-rds vela-system configurations.terraform.core.oam.dev Terraform configuration for Alibaba Cloud RDS object
|
||
helm vela-system autodetects.core.oam.dev helm release is a group of K8s resources from either git
|
||
repository or helm repo
|
||
kustomize vela-system autodetects.core.oam.dev kustomize can fetching, building, updating and applying
|
||
Kustomize manifests from git repo.
|
||
raw vela-system autodetects.core.oam.dev raw allow users to specify raw K8s object in properties
|
||
task vela-system jobs.batch Describes jobs that run code or a script to completion.
|
||
webservice vela-system deployments.apps Describes long-running, scalable, containerized services
|
||
that have a stable network endpoint to receive external
|
||
network traffic from customers.
|
||
worker vela-system deployments.apps Describes long-running, scalable, containerized services
|
||
that running at backend. They do NOT have network endpoint
|
||
to receive external network traffic.
|
||
```
|
||
|
||
</details>
|
||
|
||
* Get built-in traits by `vela` CLI:
|
||
```shell script
|
||
vela traits
|
||
```
|
||
<details> <summary> Outputs </summary>
|
||
|
||
```console
|
||
NAME NAMESPACE APPLIES-TO CONFLICTS-WITH POD-DISRUPTIVE DESCRIPTION
|
||
annotations vela-system * true Add annotations on K8s pod for your workload which follows
|
||
the pod spec in path 'spec.template'.
|
||
configmap vela-system * true Create/Attach configmaps on K8s pod for your workload which
|
||
follows the pod spec in path 'spec.template'.
|
||
cpuscaler vela-system deployments.apps false Automatically scale the component based on CPU usage.
|
||
env vela-system * false add env on K8s pod for your workload which follows the pod
|
||
spec in path 'spec.template.'
|
||
expose vela-system false Expose port to enable web traffic for your component.
|
||
hostalias vela-system * false Add host aliases on K8s pod for your workload which follows
|
||
the pod spec in path 'spec.template'.
|
||
ingress vela-system false Enable public web traffic for the component.
|
||
ingress-1-20 vela-system false Enable public web traffic for the component, the ingress API
|
||
matches K8s v1.20+.
|
||
init-container vela-system deployments.apps true add an init container and use shared volume with pod
|
||
kustomize-json-patch vela-system false A list of JSON6902 patch to selected target
|
||
kustomize-patch vela-system false A list of StrategicMerge or JSON6902 patch to selected
|
||
target
|
||
kustomize-strategy-merge vela-system false A list of strategic merge to kustomize config
|
||
labels vela-system * true Add labels on K8s pod for your workload which follows the
|
||
pod spec in path 'spec.template'.
|
||
lifecycle vela-system * true Add lifecycle hooks for the first container of K8s pod for
|
||
your workload which follows the pod spec in path
|
||
'spec.template'.
|
||
node-affinity vela-system * true affinity specify node affinity and toleration on K8s pod for
|
||
your workload which follows the pod spec in path
|
||
'spec.template'.
|
||
pvc vela-system deployments.apps true Create a Persistent Volume Claim and mount the PVC as volume
|
||
to the first container in the pod
|
||
resource vela-system * true Add resource requests and limits on K8s pod for your
|
||
workload which follows the pod spec in path 'spec.template.'
|
||
rollout vela-system false rollout the component
|
||
scaler vela-system * false Manually scale K8s pod for your workload which follows the
|
||
pod spec in path 'spec.template'.
|
||
service-binding vela-system webservice,worker false Binding secrets of cloud resources to component env
|
||
sidecar vela-system * true Inject a sidecar container to K8s pod for your workload
|
||
which follows the pod spec in path 'spec.template'.
|
||
volumes vela-system deployments.apps true Add volumes on K8s pod for your workload which follows the
|
||
pod spec in path 'spec.template'.
|
||
```
|
||
|
||
</details>
|
||
|
||
These capabilities are built-in so they are ready to use if showed up. KubeVela is designed to be programmable and fully self-service, so the assumption is more capabilities will be added later per your own needs.
|
||
|
||
## What's Next
|
||
|
||
* Start to [deploy our first application](./quick-start).
|
||
* See the [advanced installation guide](./platform-engineers/advanced-install) to learn more about installation details.
|
||
|