从旧版本进行迁移

本文档旨在提供在不会干扰正在运行的业务的情况下从旧版本到新版本的迁移指南。但是考虑到场景彼此不同,我们强烈建议你在实际迁移之前使用模拟环境对迁移进行测试。

从 v1.3.x 版本 到 v1.4.x 版本

⚠️ 注意: 在从 v1.2.x 或更早版本升级到 v1.4.x 之前,你必须先升级到 v1.3.x。

  1. 升级 CRD,请确保在升级 helm chart 之前先升级 CRD。
  1. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.4/charts/vela-core/crds/core.oam.dev_applicationrevisions.yaml
  2. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.4/charts/vela-core/crds/core.oam.dev_applications.yaml
  3. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.4/charts/vela-core/crds/core.oam.dev_resourcetrackers.yaml
  4. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.4/charts/vela-core/crds/core.oam.dev_componentdefinitions.yaml
  5. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.4/charts/vela-core/crds/core.oam.dev_definitionrevisions.yaml
  1. 升级 kubevela chart
  1. helm repo add kubevela https://charts.kubevela.net/core
  2. helm repo update
  3. helm upgrade -n vela-system --install kubevela kubevela/vela-core --version 1.4.2 --wait
  1. 下载并升级对应的CLI
  1. curl -fsSl https://kubevela.io/script/install.sh | bash -s 1.4.2
  1. 升级 VelaUX 或其他插件
  1. vela addon upgrade velaux --version 1.4.2

请注意,如果你使用的是 terraform 插件,你应该将 terraform 插件升级到 1.0.6+ 版本以及 vela-core 升级,你可以按照以下步骤进行操作:

  1. 升级 vela-core 到 v1.3.4+,所有现有的 Terraform 类型的应用程序在此过程中不会受到影响。
  2. 升级 terrorform 插件,否则新配置的 Terraform 类型的应用程序不会成功。

从 v1.2.x 版本 到 v1.3.x 版本

  1. 升级 CRD,请确保在升级 helm chart 之前先升级 CRD。
  1. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.3/charts/vela-core/crds/core.oam.dev_applicationrevisions.yaml
  2. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.3/charts/vela-core/crds/core.oam.dev_applications.yaml
  3. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.3/charts/vela-core/crds/core.oam.dev_resourcetrackers.yaml
  4. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.3/charts/vela-core/crds/core.oam.dev_componentdefinitions.yaml
  5. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.3/charts/vela-core/crds/core.oam.dev_definitionrevisions.yaml
  1. 升级 kubevela chart
  1. helm repo add kubevela https://charts.kubevela.net/core
  2. helm repo update
  3. helm upgrade -n vela-system --install kubevela kubevela/vela-core --version 1.3.6 --wait
  1. 下载并升级对应的CLI
  1. curl -fsSl https://kubevela.io/script/install.sh | bash -s 1.3.6
  1. 升级 VelaUX 或其他插件
  1. vela addon upgrade velaux --version 1.3.6

请注意,如果你使用的是 terraform 插件,你应该将 terraform 插件升级到 1.0.6+ 版本以及 vela-core 升级,你可以按照以下步骤操作:

  1. 将 vela-core 升级到 v1.3.4+,所有现有的 Terraform 类型应用程序将不会在此过程中受到影响。
  2. 升级 terrorform 插件,否则新配置的 Terraform 类型的应用程序不会成功。

从 v1.1.x 版本到 v1.2.x 版本

  1. 检查服务是否正常运行

迁移前请确保你的所有服务都正常运行。

  1. $ kubectl get all -n vela-system
  2. NAME READY STATUS RESTARTS AGE
  3. pod/kubevela-cluster-gateway-5bff6d564d-rhkp7 1/1 Running 0 16d
  4. pod/kubevela-vela-core-b67b87c7-9w7d4 1/1 Running 1 16d
  5. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  6. service/kubevela-cluster-gateway-service ClusterIP 172.16.236.150 <none> 9443/TCP 16d
  7. service/vela-core-webhook ClusterIP 172.16.54.195 <none> 443/TCP 284d
  8. NAME READY UP-TO-DATE AVAILABLE AGE
  9. deployment.apps/kubevela-cluster-gateway 1/1 1 1 16d
  10. deployment.apps/kubevela-vela-core 1/1 1 1 284d

此外,还需要检查所有 KubeVela 应用的状态,包括正常运行的插件。

  1. 将 CRD 更新到 v1.2.x 版本

将集群中的 CRD 更新到 v1.2.x 版本,CRD 列表如下,如果在之前没有的部分则可以省略:

  1. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.2/charts/vela-core/crds/core.oam.dev_applicationrevisions.yaml
  2. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.2/charts/vela-core/crds/core.oam.dev_applications.yaml
  3. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.2/charts/vela-core/crds/core.oam.dev_componentdefinitions.yaml
  4. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.2/charts/vela-core/crds/core.oam.dev_definitionrevisions.yaml
  5. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.2/charts/vela-core/crds/core.oam.dev_envbindings.yaml
  6. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.2/charts/vela-core/crds/core.oam.dev_healthscopes.yaml
  7. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.2/charts/vela-core/crds/core.oam.dev_manualscalertraits.yaml
  8. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.2/charts/vela-core/crds/core.oam.dev_policydefinitions.yaml
  9. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.2/charts/vela-core/crds/core.oam.dev_resourcetrackers.yaml
  10. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.2/charts/vela-core/crds/core.oam.dev_scopedefinitions.yaml
  11. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.2/charts/vela-core/crds/core.oam.dev_traitdefinitions.yaml
  12. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.2/charts/vela-core/crds/core.oam.dev_workflowstepdefinitions.yaml
  13. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.2/charts/vela-core/crds/core.oam.dev_workloaddefinitions.yaml
  14. kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/release-1.2/charts/vela-core/crds/standard.oam.dev_rollouts.yaml
  1. 执行升级命令

升级系统到新版本:

  1. helm upgrade -n vela-system --install kubevela kubevela/vela-core --version 1.2.6 --wait

将 CLI 升级到与核心版本对应的 v1.2.x 版本:

  1. curl -fsSl https://kubevela.io/script/install.sh | bash -s 1.2.6
  1. 启用插件

升级成功后,如果需要启用插件,用户可以通过以下方式启用插件:

  1. # View the list of addons
  2. vela addon list
  3. # Enable addon
  4. vela addon enable <addon name>

⚠️注意: 如果插件在升级前的版本中已经启用并且在使用中,则不需要此步骤

  1. 更新 Custom Definition

检查你的 Custom Definition 是否在新版本中正常工作,如果有任何问题,请尝试升级它们。如果你没有定义任何内容,则升级过程已经完成!

  1. 迁移的常见问题
  • Q:从1.1.x 版本升级到 1.2.x 版本后,申请状态变成workflowsuspending,使用vela workflow resume不起作用。
    • A:关于资源跟踪器机制的迁移。一般可以删除已有的 resourcetracker,之后可以使用vela workflow resume命令。
  • Q:为什么我的应用在升级后变成了 suspend 状态?
    • A:如果你的应用程序在升级后暂停,请不要担心,这不会影响正在运行的业务应用。应用会在下次部署后变为正常状态。你还可以手动更改应用的任何注解来解决这个问题。