Version: v1.0

安装

如果你之前已经安装了 KubeVela chart,请直接阅读升级步骤。

1. 设置 Kubernetes 集群

要求:

  • Kubernetes 集群版本 >= v1.15.0
  • 安装并配置 kubectl

KubeVela是一个简单的自定义控制器,可以安装在任何 Kubernetes 集群上,包括托管产品或你自己的集群。唯一的要求是请确保已安装并启用了 ingress-nginx

注意:如果你没有使用 minikube 或 kind,请确保安装或启用 ingress-nginx

  • Minikube
  • KinD

遵循 minikube 安装指南

安装 minikube 后,创建一个集群:

  1. minikube start

安装 ingress:

  1. minikube addons enable ingress

请按照本指南进行安装。

然后拉起一个 kind 集群:

  1. cat <<EOF | kind create cluster --image=kindest/node:v1.18.15 --config=-
  2. kind: Cluster
  3. apiVersion: kind.x-k8s.io/v1alpha4
  4. nodes:
  5. - role: control-plane
  6. kubeadmConfigPatches:
  7. - |
  8. kind: InitConfiguration
  9. nodeRegistration:
  10. kubeletExtraArgs:
  11. node-labels: "ingress-ready=true"
  12. extraPortMappings:
  13. - containerPort: 80
  14. hostPort: 80
  15. protocol: TCP
  16. - containerPort: 443
  17. hostPort: 443
  18. protocol: TCP
  19. EOF

然后安装 ingress for kind:

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

2. 安装 KubeVela 控制器

这些步骤将安装 KubeVela 控制器及其依赖项。

  1. 添加 KubeVela helm chart 仓库
  1. helm repo add kubevela https://charts.kubevela.net/core
  1. 更新 chart 仓库
  1. helm repo update
  1. 安装 KubeVela
  1. helm install --create-namespace -n vela-system kubevela kubevela/vela-core

默认情况下,它将使用自签名证书来启用 webhook kube-webhook-certgen

如果你想尝试最新的 master 分支, 在命令 helm search 中添加标志 --devel 以选择预发布版本 格式为 <下个版本号>-rc-master 的版本, 表示这是建立在 master 分支上的下一个候选发行版应, 例如 0.4.0-rc-master

  1. helm search repo kubevela/vela-core -l --devel
  1. NAME CHART VERSION APP VERSION DESCRIPTION
  2. kubevela/vela-core 0.4.0-rc-master 0.4.0-rc-master A Helm chart for KubeVela core
  3. kubevela/vela-core 0.3.2 0.3.2 A Helm chart for KubeVela core
  4. kubevela/vela-core 0.3.1 0.3.1 A Helm chart for KubeVela core

尝试使用以下命令进行安装。

  1. helm install --create-namespace -n vela-system kubevela kubevela/vela-core --version <next_version>-rc-master
  1. NAME: kubevela
  2. LAST DEPLOYED: Thu Apr 1 19:41:30 2021
  3. NAMESPACE: vela-system
  4. STATUS: deployed
  5. REVISION: 1
  6. NOTES:
  7. Welcome to use the KubeVela! Enjoy your shipping application journey!
  1. (可选)使用 cert-manager 安装 Kubevela

如果已经安装了 cert-manager,则可以使用它来生成证书。

你需要在 KubeVela chart 安装之前安装 cert-manager。

  1. helm repo add jetstack https://charts.jetstack.io
  2. helm repo update
  3. helm install cert-manager jetstack/cert-manager --namespace cert-manager --version v1.2.0 --create-namespace --set installCRDs=true

安装 KubeVela,启用 certmanager:

  1. helm install --create-namespace -n vela-system --set admissionWebhooks.certManager.enabled=true kubevela kubevela/vela-core

3. (可选)安装 flux2

这个安装步骤是可选的,如果你想将 Helm Chart 作为 KubeVela 的能力,那么这一步是必需的。

KubeVela 依赖于 fluxcd/flux2 的几个 CRD 和控制器。

CRDController Image
helmrepositories.source.toolkit.fluxcd.iofluxcd/source-controller:v0.9.0
helmcharts.source.toolkit.fluxcd.io-
buckets.source.toolkit.fluxcd.io-
gitrepositories.source.toolkit.fluxcd.io-
helmreleases.helm.toolkit.fluxcd.iofluxcd/helm-controller:v0.8.0

你可以从其官方网站上安装整个 flux2,也可以安装由 KubeVela 提供的近包含最小集的 helm chart:

  1. $ helm install --create-namespace -n flux-system helm-flux http://oam.dev/catalog/helm-flux2-0.1.0.tgz

4. (可选)安装 KubeVela CLI 命令行工具

这里有三种获取 KubeVela Cli 的方法:

  • Script
  • Homebrew
  • Download directly from releases

macOS/Linux

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

Windows

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

macOS/Linux

首先更新你的 brew 缓存。

  1. brew update

安装 KubeVela 客户端.

  1. brew install kubevela
  • 版本发布页面下载最新的 vela 二进制版本.
  • 解压缩 vela 二进制文件并将其添加到 $PATH 开始使用.
  1. sudo mv ./vela /usr/local/bin/vela

已知问题(https://github.com/oam-dev/kubevela/issues/625): 如果你使用 mac,它会报告 “vela” 无法打开,因为开发者无法验证。

新版 MacOS 在运行你下载的没有使用苹果开发者密钥的软件方面更加严格,我们还没有为 KubeVela 做这方面支持。 你可以打开你的’系统首选项’ -> ‘安全与隐私’ ->一般,点击’允许无论如何’暂时修复它。

5. (可选)从群集同步功能

如果要从 vela cli 运行应用程序,则应首先同步功能,如下所示:

  1. vela components
  1. NAME NAMESPACE WORKLOAD DESCRIPTION
  2. task vela-system jobs.batch Describes jobs that run code or a script to completion.
  3. webservice vela-system deployments.apps Describes long-running, scalable, containerized services
  4. that have a stable network endpoint to receive external
  5. network traffic from customers.
  6. worker vela-system deployments.apps Describes long-running, scalable, containerized services
  7. that running at backend. They do NOT have network endpoint
  8. to receive external network traffic.

6. (可选)清理

运行:

  1. helm uninstall -n vela-system kubevela
  2. rm -r ~/.vela

这将卸载 KubeVela 服务器组件及其依赖组件。 这也会清理本地 CLI 缓存。

然后清除 CRDs (CRDs 默认不会通过 helm 移除):

  1. kubectl delete crd \
  2. appdeployments.core.oam.dev \
  3. applicationconfigurations.core.oam.dev \
  4. applicationcontexts.core.oam.dev \
  5. applicationdeployments.core.oam.dev \
  6. applicationrevisions.core.oam.dev \
  7. applications.core.oam.dev \
  8. approllouts.core.oam.dev \
  9. componentdefinitions.core.oam.dev \
  10. components.core.oam.dev \
  11. containerizedworkloads.core.oam.dev \
  12. healthscopes.core.oam.dev \
  13. manualscalertraits.core.oam.dev \
  14. podspecworkloads.standard.oam.dev \
  15. scopedefinitions.core.oam.dev \
  16. traitdefinitions.core.oam.dev \
  17. workloaddefinitions.core.oam.dev

升级

如果你已经安装了 KubeVela,并希望升级到新版本,可以按照以下说明进行操作。

步骤 1. 更新 helm 仓库

  1. helm repo update

你可以通过运行以下命令获取新版本的 KubeVela 图表:

  1. helm search repo kubevela/vela-core -l

Step 2. 升级 KubeVela CRDs

  1. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_componentdefinitions.yaml
  2. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_workloaddefinitions.yaml
  3. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_traitdefinitions.yaml
  4. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_applications.yaml
  5. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_approllouts.yaml
  6. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_applicationrevisions.yaml
  7. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_scopedefinitions.yaml
  8. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_appdeployments.yaml
  9. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_applicationcontexts.yaml
  10. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_definitionrevisions.yaml

Tips: 如果你碰到类似 * is invalid: spec.scope: Invalid value: "Namespaced": filed is immutable问题. 请删除带有错误的 crd 并重新应用 KubeVela crds。

  1. kubectl delete crd \
  2. scopedefinitions.core.oam.dev \
  3. traitdefinitions.core.oam.dev \
  4. workloaddefinitions.core.oam.dev

Step 3. 升级 KubeVela helm chart

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