Skip to main content
Version: v1.1

Installation

For upgrading existing KubeVela, please read the upgrade guide.

the 1.2 version is released, go to install

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.

Follow this guide to install kind.

Then spins up a kind cluster:

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

Install ingress to enable service route:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/kind/deploy.yaml

2. Install KubeVela

Before install, you have to make sure the Helm is available. Follow this guide to install helm.

If you find it hard to install Helm, Click this
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

    helm repo add kubevela https://charts.kubevela.net/core
    helm repo update
  2. Install KubeVela

    helm install --create-namespace -n vela-system kubevela kubevela/vela-core --set multicluster.enabled=true --wait

    You can refer to advanced installation guide for more custom ways.

  3. Verify chart installed successfully

    helm test kubevela -n vela-system
    Click to see the expected output of helm test
    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!

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, or install as standalone binary.

macOS/Linux

curl -fsSl https://kubevela.io/script/install.sh | bash

Windows

powershell -Command "iwr -useb https://kubevela.io/script/install.ps1 | iex"

4. [Optional] Enable Addons

KubeVela support a dozen of out-of-box addons, please at least enable following addons to make sure KubeVela functioning well:

  • Helm and Kustomize Components addons

    vela addon enable fluxcd
  • Terraform addon

    vela addon enable terraform
  • Terraform Provider addon for Alibaba Cloud

    Enable Terraform Alibaba Cloud Provider as below to provision and/or consume cloud resources.

    Here is how to get access key. Set the value for ALICLOUD_REGION by picking one RegionId from Alibaba Cloud region list. You can also set the value for parameter ALICLOUD_SECURITY_TOKEN, which is optional, per this doc.

    vela addon enable terraform/provider-alibaba ALICLOUD_ACCESS_KEY=<xxx> ALICLOUD_SECRET_KEY=<yyy> ALICLOUD_REGION=<region>
  • Terraform Provider addon for Azure

    Enable Terraform Azure Provider as below to provision and/or consume cloud resources.

    Set these parameters below per Authenticate Terraform to Azure.

    vela addon enable terraform/provider-azure ARM_CLIENT_ID=<aaa> ARM_CLIENT_SECRET=<bbb> ARM_SUBSCRIPTION_ID=<ccc> ARM_TENANT_ID=<ddd>
  • Terraform Provider addon for AWS

    Enable Terraform AWS Provider as below to provision and/or consume cloud resources.

    Set these parameters below per Authenticate Terraform to AWS.

    vela addon enable terraform/provider-aws AWS_ACCESS_KEY_ID=<aaa> AWS_SECRET_ACCESS_KEY=<bbb> AWS_DEFAULT_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:

    vela components
    Outputs
    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.
  • Get built-in traits by vela CLI:

    vela traits
    Outputs
    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'.

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