通过命令行离线部署和升级插件

更新时间:
复制 MD 格式

前提条件

  • 已安装 GoLand 2021.2 及以上版本。

  • 已安装 mosn-intellij-1.0.4-all.jar 及以上版本。

  • 开发环境 JDK 已升级至 JDK 11 及以上版本。

    下载地址请参见 JDK 11。

  • 已配置 mosn-intellij 命令行。

    ~/.zshrc 或者 ~/.bashrc 配置
    # 指定 JDK 11 的本地配置
    export JAVA_11_HOME="/Library/Java/JavaVirtualMachines/jdk-11.0.15.jdk/Contents/Home"
    
    # 设置 mosn-intellij 别名,/path/to 用于替换本地实际目录名
    alias mecha="$JAVA_11_HOME/bin/java -jar /path/to/mosn-intellij-1.0.4-all.jar"
  • 升级 Cloudmesh 至 1.15.0 及以上版本(2023 年 7 月发布)。

    当前版本有部分功能无法使用,升级之后可以使用全部功能。

离线部署

离线部署解决的是全量插件部署问题,您可以将待部署的所有插件全量包含在特定结构中。离线部署允许批量上传,尤其在研发环境和测试环境网络隔离时,允许我们在跳板机或者其他机器与控制面互通执行操作。操作步骤如下:

步骤一:初始化结构。

  1. 创建初始化目录。

    在首次进行离线部署时,需要创建插件结构。您可以通过 vs code 命令行创建初始化目录:

    mecha offline-deploy -d <project dir> --init <bool>
    • project dir:指定插件存放的文件夹。

    • bool:是否初始化目录,取值如下:

      • true:执行初始化目录。

      • false:不执行初始化目录。

    命令示例如下:

    mecha offline-deploy -d /Users/****/go/src/code.alipay.com/zong/go-plugin-quickstart/build/test/offline --init true
    image..png

    命令创建的目录分别存放特定类型插件:

    • codecs:存放插件包。

    • stream_filters:存放拦截器插件包。

    • traces:存放可观测插件包,目前支持 Zipkin、SkyWalking。

    • transcoders:存放协议转换包。

  2. 将全量离线部署的插件包放置在对应目录。

    说明

    测试场景,将 xRPC 和 SkyWalking 插件1.0.3-dev进行全量离线部署(假设目前仅使用这 2 个插件):

    • xRPC 插件包复制到offline/codecs目录中。

    • SkyWalking 插件包复制到offline/traces目录中。

    user@user-4 test % tree
    .
    └── offline
        ├── codecs
        │   └── xrpc-1.0.3-dev.zip
        ├── stream_filters
        ├── traces
        │   └── skywalking-1.0.3-dev.zip
        └── transcoders
    
    5 directories, 2 files

步骤二:部署插件

  1. 创建配置文件。

    在部署前,您需要提供一份配置(假设文件名env_conf),指明要连接的环境 ACVIP、AccessKey 信息。配置文件中必须包含以下字段:

    # 设置 ACVIP 的地址,不包括端口号
    SOFA_ANTVIP_ENDPOINT=  
    # 租户实例 Id,中间件租户默认为 000001
    SOFA_INSTANCE_ID=
    # 鉴权使用的 AccessKey ID
    SOFA_ACCESS_KEY=
    # 鉴权使用的 AccessKey Secret
    SOFA_SECRET_KEY=

    使用以下命令部署插件:

    mecha offline-deploy -d <project dir> -c <conf file>
    • project dir:指向包含全量插件的根目录,例如步骤一示例中使用的offline文件夹。

    • conf file:包含环境配置信息,用来寻址上传的服务网格地址。例如刚刚创建的env_conf文件。

    说明

    如果不使用-c参数指定配置文件位置,则需要保证-d参数指定的目标文件夹中存在配置文件。

    命令示例如下:

    mecha offline-deploy -d /Users/***/go/src/code.alipay.com/zong/go-plugin-quickstart/build/test/offline -c /Users/**/go/src/code.alipay.com/zong/go-plugin-quickstart/etc/ant/env_conf

    执行结果如下:

    image..png

步骤三:在服务网格控制台确认插件包正确部署

通过命令行部署完成后,您需要登录服务网格控制台的 插件管理 页面查看部署包版本是否正确。

image..pngimage..png

插件包部署后,您可以通过 Sidecar 注入规则进行关联。关联完成后,当应用注入 Sidecar 时,会自动激活插件。如何使用 Sidecar 注入规则请参见 HTTP 插件的上传和部署 课程中,Sidecar 注入规则关联插件部分介绍。

离线升级

离线升级解决的是全量插件兼容升级问题,您可以将待升级的所有插件全量包含在特定结构中。允许批量上传,尤其在研发环境和测试环境网络隔离时,允许我们在跳板机或者其他机器与控制面互通执行操作。

前提条件

已在服务网格控制台的 Sidecar 版本管理 页面录入需要升级的 Sidecar 镜像。

image..png

步骤一:初始化结构

  1. 创建初始化目录。

    在首次进行离线升级时,您需要创建插件结构。您可以通过 vs code 命令行创建初始化目录:

    mecha offline-upgrade -d <project dir> --init <bool>
    • project dir:指定插件存放的文件夹。

    • bool:是否初始化目录,取值如下:

      • true:执行初始化目录。

      • false:不执行初始化目录。

    示例如下:

    mecha offline-upgrade -d /Users/****/go/src/code.alipay.com/zong/go-plugin-quickstart/build/test/upgrade --init true
    image..png

    命令创建的目录分别存放特定类型插件:

    • codecs:存放插件包。

    • stream_filters:存放拦截器插件包。

    • traces:存放可观测插件包,目前支持 Zipkin、SkyWalking。

    • transcoders:存放协议转换包。

  2. 将全量离线部署的插件包放置在对应目录。

    说明

    测试场景,将 xRPC 和 SkyWalking 插件1.0.3-dev进行全量离线升级到1.0.4-dev(假设目前仅使用这 2 个插件):

    • xRPC 插件包的 1.0.4 版本复制到upgrade/codecs目录中。

    • SkyWalking 插件包的 1.0.4 版本复制到upgrade/traces目录中。

    user@user-4 test % tree
    .
    └── offline
        ├── codecs
        │   └── xrpc-1.0.4-dev.zip
        ├── stream_filters
        ├── traces
        │   └── skywalking-1.0.4-dev.zip
        └── transcoders
    
    5 directories, 2 files

步骤二:升级插件

  1. 创建配置文件。

    在升级前,您需要提供一份配置(假设文件名env_conf),指明要连接的环境 ACVIP、AccessKey 信息。配置文件中必须包含以下字段:

    # 设置 ACVIP 的地址,不包括端口号
    SOFA_ANTVIP_ENDPOINT=  
    # 设置租户实例 Id,中间件租户默认为 000001
    SOFA_INSTANCE_ID=
    # 设置鉴权使用的 AccessKey ID
    SOFA_ACCESS_KEY=
    # 设置鉴权使用的 AccessKey Secret
    SOFA_SECRET_KEY=

    使用以下命令部署插件:

    mecha offline-upgrade -d <project dir> -c <conf file>
    • project dir:指向包含全量插件的根目录,例如步骤一示例中使用的upgrade文件夹。

    • conf file:包含环境配置信息,用来寻址上传的服务网格地址。例如刚刚创建的env_conf文件。

    说明

    如果不使用-c参数指定配置文件位置,则需要保证-d参数指定的目标文件夹中存在配置文件。

    命令示例如下:

    mecha offline-upgrade -d /Users/****/go/src/code.alipay.com/zong/go-plugin-quickstart/build/test/upgrade -c /Users/****/go/src/code.alipay.com/zong/go-plugin-quickstart/etc/ant/env_conf
  2. 确认 Sidecar 注入规则和新版本的 Sidecar 镜像序号。

    执行升级命令后,会提示您输入使用的 Sidecar 注入规则(获取关联插件)和新版本的 Sidecar 镜像序号,确认无误选择后回车即可。

    image..pngimage..png

步骤三:在服务网格控制台确认插件包正确升级

  1. 确认插件包正确升级。

    通过命令行升级完成后,您需要登录服务网格控制台的 插件管理 页面查看部署包版本已正确升级。

  2. 触发 Sidecar 升级规则。

    1. 在 Sidecar 注入规则 页面找到升级的 Sidecar 注入规则,单击 升级。

      image..png
    2. 在 参数配置 步骤选择和命令行相同的镜像版本,并确认插件和 Trace 升级的版本是否正确。

      image..png
  3. 重新注入 Sidecar。

    如果需要插件生效,您需要在 服务目录 页面单击应用名进入应用详情。如果已经注入 Sidecar,单击 下线 后,再单击 注入,应用会使用新版本的插件。

    image..png