文档

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

更新时间:
一键部署

前提条件

  • 已安装 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