# 升级

    本文将为您介绍如何基于 Helm Chart 升级版本。

    提示

    v1.0.x 版本不支持升级。

    # 升级准备

    开始 Erda 升级前,您需要完成如下准备:

    • 数据备份

      建议您在升级前对 Erda 使用的 MySQL 数据库进行备份,以防升级失败造成数据丢失。

    • 准备私有化配置参数或文件

      • 升级前需准备好 Erda Helm Chart 的私有化配置,可以是通过 --set 设置的参数或私有化配置文件。
      • 关于参数相关内容,请参见 安装操作
      • 关于私有化配置文件相关内容,请参见 如何保存私有化配置
    • 更新 Erda Helm Chart 仓库

      helm repo add erda https://charts.erda.cloud/erda
      helm repo update
      
    • 部分版本升级需涉及额外操作,请提前确认

      • [1.4.0 以下版本升级](upgrade.md#1.4.0 以下版本升级)

    # 升级 Erda

    # 标准升级

    提示

    • 您需要提供 Erda 所部署的 Namespace,例如 erda-system。
    • 您可以通过 --version 参数升级至指定版本的 Erda,未指定则默认升级至最新版本。
    • 使用指定私有化配置文件升级 Erda,例如 custom_values.yaml

      helm upgrade erda erda/erda -f custom_values.yaml -n erda-system
      
    • 使用私有化配置参数升级 Erda,建议通过 私有配置文件的方式 管理配置。

      helm upgrade erda erda/erda --set param1=value1,param2=value2.... -n erda-system
      

    # 1.4.0 以下版本升级

    1.4.0 版本已完成集群管控及监控链路认证优化,需执行如下操作进行适配。

    升级 Master 集群

    1. 配置当前 Erda 所在的 Namespace,例如 erda-system。

      export ERDA_NAMESPACE="erda-system" 
      
    2. 升级前在集群中执行如下命令,创建默认 Secret。

      kubectl create secret generic erda-cluster-credential --from-literal=CLUSTER_ACCESS_KEY="init" -n $ERDA_NAMESPACE
      
    3. 执行 标准升级 流程。

    4. 完成 Erda 升级后,进入 多云管理平台 > 集群资源 > 集群 > 操作 > Token 管理 > 创建 Token,申请 Master 集群的管控凭证。

    5. 执行如下命令以替换默认凭证。

      # 请填写申请的管控凭证
      export CLUSTER_ACCESS_KEY=""
      
      sh -c "kubectl patch secret -n $ERDA_NAMESPACE erda-cluster-credential --type='json' -p='[{"op" : "replace" ,"path" : "/data/CLUSTER_ACCESS_KEY" ,"value" : $(echo $CLUSTER_ACCESS_KEY | base64)}]'"
      

    升级 Worker 集群

    1. 下载 Erda 1.4.0 及以上版本 压缩包 (opens new window) 并解压。

    2. 确认可通过 kubectl 访问 Worker 集群,且已安装 Helm 3,具体请参见 准备工作

    3. 进入 多云管理平台 > 集群资源 > 集群 > 操作 > Token 管理 > 创建 Token,申请 Worker 集群的管控凭证。

    4. 执行如下命令,并根据提示完成边缘集群升级。

      # 请填写申请的管控凭证
      bash erda-release/erda-helm/scripts/upgrade_1.4.sh --cluster_access_key=""
      

    # 升级验证

    完成 Erda 升级后,您可以通过以下方式查看升级是否成功。

    • 查看 Erda 自定义资源状态是否为 Running

      kubectl get erda erda -n erda-system
      
    • 查看当前集群版本是否与目标版本一致。

      kubectl get cm dice-cluster-info -o yaml -n erda-system | grep -i dice_version