Skip to main content
Version: v1.1

Custom Installation

Install KubeVela with cert-manager#

By default, KubeVela will use a self-signed certificate provided by 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.

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:

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.

helm search repo kubevela/vela-core -l --devel
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.

helm install --create-namespace -n vela-system kubevela kubevela/vela-core --version <next_version>-rc-master --wait
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!

  1. Install and set up Krew on your machine.
  2. Discover plugins available on Krew:
kubectl krew update
  1. install kubectl vela:
kubectl krew install vela

For more usage please reference kubectl plugin.

Upgrade#

Step 1. Update Helm repo#

You can explore the newly released chart versions of KubeVela by run:

helm repo update
helm search repo kubevela/vela-core -l

Step 2. Upgrade KubeVela CRDs#

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.

kubectl delete crd \
scopedefinitions.core.oam.dev \
traitdefinitions.core.oam.dev \
workloaddefinitions.core.oam.dev

Step 3. Upgrade KubeVela Helm chart#

helm upgrade --install --create-namespace --namespace vela-system kubevela kubevela/vela-core --version <the_new_version> --wait

Addons#

NameDescriptioncapabilityOpen Source Project Reference
terraformBasic addon to Provide Cloud Resources(installed by default)-https://github.com/oam-dev/terraform-controller
fluxcdSupport Deployment of Helm and Kustomize componentskustomize、helmhttps://fluxcd.io/
kruiseSupport more powerful workload featureclonesethttps://openkruise.io/
prometheusSupport basic observability from Promethus-https://prometheus.io/
kedaSupport event driven auto scaling-https://keda.sh/
ocmSupport Multi-cluster Application Deployment-http://open-cluster-management.io/
observabilitySupport KubeVela core observability--
  1. Search all addons
vela addon list
  1. Install addons (use fluxcd as example)
vela addon enable fluxcd
  1. 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:

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

Verify that multi-cluster is enabled:

> 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:

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):

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
Last updated on by Somefive