--- 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 `-beta.`. It means a beta version of ``, such as `1.2.0-rc.2`. ```shell script helm search repo kubevela/vela-core -l --devel ``` ```console NAME CHART VERSION APP VERSION DESCRIPTION kubevela/vela-core 1.2.0-rc.1 1.2.0-rc.1 A Helm chart for KubeVela core kubevela/vela-core 1.2.0-beta.3 1.2.0-beta.3 A Helm chart for KubeVela core kubevela/vela-core 1.2.0-beta.2 1.2.0-beta.2 A Helm chart for KubeVela core kubevela/vela-core 1.2.0-beta.1 1.2.0-beta.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 -beta. --set multicluster.enabled=true --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! 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 ``` **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. 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/master/charts/vela-core/crds/core.oam.dev_applicationrevisions.yaml kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_applications.yaml kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_clusters.yaml kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_componentdefinitions.yaml kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_definitionrevisions.yaml kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_healthscopes.yaml kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_manualscalertraits.yaml kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_policydefinitions.yaml kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_resourcetrackers.yaml kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_scopedefinitions.yaml kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_traitdefinitions.yaml kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_workflowstepdefinitions.yaml kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_workloaddefinitions.yaml kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/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 --set multicluster.enabled=true --wait ``` ## Addons | Name | Description | capability | Open Source Project Reference | | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------------- | ----------------------------------------------- | | terraform | Basic addon to Provide Cloud Resources | - | https://github.com/oam-dev/terraform-controller | | fluxcd | Support Deployment of Helm and Kustomize components | kustomize态helm | https://fluxcd.io/ | | ocm-cluster-manager | Support Multi-cluster Application Deployment | - | http://open-cluster-management.io/ | | velaux | The KubeVela User Experience (UX ). Dashboard Designed as an extensible, application-oriented delivery and management control panel | - | | terraform-alibaba | Kubernetes Terraform Controller for Alibaba Cloud | - | - | | terraform-azure | Kubernetes Terraform Controller for Azure | - | - | | terraform-aws | Kubernetes Terraform Controller for AWS | - | - | 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 ```