编排部署应用

更新时间:
2024-12-25

编排部署应用

ECMP 实现了对容器化、微服务化应用的统一抽象,支持物理板卡的批量部署和应用运行数据的归集分析。用户可以通过 ECMP 将应用部署到多个由 ECSM 管理的集群节点上进行集成测试和正式版本发布,支持不中断业务的滚动更新。本节重点介绍如何在 ECMP 中上传镜像、新建应用、接入集群、编排集群以及部署应用。

操作须知

只有处于“在线”状态的集群,才可以部署或更新应用。

前提条件

操作步骤

步骤 1:上传镜像

  1. 在翼辉软件工厂门户页,单击 ECMP,进入 ECMP 欢迎页。

  2. 在 ECMP 欢迎页,单击镜像仓库,在镜像仓库页面,单击上传,打开上传镜像窗口。

  3. 在上传镜像窗口,单击选择文件,选择本地已经准备好的镜像文件,或者将镜像文件拖拽到对应区域,支持批量选择多个镜像文件,然后单击上传,系统会校验镜像文件并上传。

  4. 上传完成后,显示如下界面表示上传成功。单击关闭,返回镜像仓库主页面。

  5. 在镜像仓库主页面的镜像资源列表中,可以看到新上传的镜像,相同名称的镜像会归属于同一个镜像资源。

步骤 2:新建应用

  1. 在左侧导航栏中,单击应用管理 > 应用列表,在应用列表页面,单击左上角的新建,打开新建应用对话框。

  2. 在新建应用对话框,设置应用名称和描述信息,然后单击确定,进入应用详情页面。

  3. 在应用详情页面,单击页面左上角或中间区域的新建版本,打开新建版本对话框。

  4. 在新建应用版本对话框中,参考表 1 设置应用的版本号和服务来源等信息。因为是首次为应用新建第一个版本,故此处服务来源选择“新建”。然后单击确定,完成应用版本新建。

    表 1 新建应用版本参数说明

    参数描述示例
    版本号应用的版本号,建议版本号遵循 Semantic Versioning open in new window 语义化版本规范,以确保版本管理的清晰和一致性。长度不能超过 64 个字符1.0.0
    1.0.0-alpha
    1.0.0-alpha+20130313144700
    服务来源设置应用版本的服务来源,支持新建服务或从已有版本克隆服务信息。当选择“克隆已有版本”时,需要设置待克隆的源版本信息新建
    已有版本选择当前要克隆服务的源版本信息,以便进行服务信息复制。该参数仅在服务来源设置为“克隆已有版本”时显示-
  5. 在新建的版本区域,单击服务列表右上方的新建服务,打开新建服务窗口。

  6. 在新建服务窗口,参考表 2 设置服务基本信息,并根据选择的镜像类型,参考表 3 和表 4 完成服务高级选项参数设置。

    表 2 基本信息参数说明
    参数描述示例
    服务名称服务的名称,支持自定义,名称不能重复example
    选择镜像选择部署服务需要的镜像,包括 Linux 镜像和 SylixOS 镜像,两种镜像对应的节点和容器资源配置不同。选择镜像时,单击镜像后的可以查看镜像的基础信息和资源配置参数-
    自动更新设置与当前镜像名称相同的新镜像被上传或 Push 到 ECMP 镜像仓库时,是否自动更新服务,并将服务镜像替换为新镜像。此参数仅在镜像 Tag 为“latest”时可设置,默认不自动更新 -
    实例数服务需要部署的容器实例数3
    表 3 高级选项参数说明(Linux 镜像)
    参数类型 参数 描述 示例
    基础配置容器名称(必填)容器的名称,可由大小写字母、数字及特殊字符“-”“_”“.”组成,且不能以特殊字符“-”“_”“.”开头,如果包含“/”,则必须以“/”开头,且不能出现两个“/”。同一节点的容器名称不能重复example
    主机名称(必填) 容器显示的主机名example
    启动参数(必填)镜像文件中“config.json”中指定的“cmd”的值,如果没有“cmd”,需自定义["/usr/sbin/nginx","-g","daemon off;"] 或 /bin/echo "hello ecsm"
    环境变量(必填)容器启动时需要设置的环境变量,以 Key 和 Value 形式输入,用分号间隔PATH=/usr/local/sbin:
    /usr/local/bin:/usr/sbin:
    /usr/bin:/sbin:/bin;NGINX
    _VERSION=1.21.5;NJS_VE
    RSION=0.7.1;PKG_RELEAS
    E=1~bullseye
    重启策略(必填)no当容器停止运行时,不重启no
    on-failure当容器非正常停止运行时,自动重启。当选择该选项时,会显示“重试次数”参数,可以按需设置重试次数on-failure
    always当容器停止运行时,自动重启always
    unless-stopped 当容器停止运行时,自动重启,除了在 Docker 守护进程启动时就已经停止的容器unless-stopped
    网络类型(必填)bridge当选择 bridge 类型时,系统会为每一个容器分配、设置 IP 地址,并将容器连接到一个 docker0 虚拟网桥,通过 docker0 网桥以及 Iptables nat 表配置与宿主机通信bridge
    host当选择 host 类型时,容器会使用宿主机的 IP 和端口host
    container当选择 container 类型时,创建的容器不会创建网卡并配置 IP 地址,而是和一个指定的容器共享 IP 地址和端口范围,此时需要指定目标容器container
    none当选择 none 类型时,系统会关闭容器的网络功能,宿主机和其他容器不通信none
    端口映射(可选)
    此参数仅在网络类型为“bridge”时显示,可以设置多组端口映射
    协议(必填)选择容器的网络传输协议,可选择 TCP 或 UDP,TCP 传输准确性较高,UDP 传输实时性更优TCP
    主机端口(必填)从容器映射到主机的端口,可通过访问主机端口访问容器80
    容器端口(必填)路由服务建立的 TCP 或 UDP 代理,用于容器间路由通信80
    DNS(可选)
    此参数仅在网络类型为“host”或“container”时显示,可以设置多组
    DNS(可选)指定 DNS 服务器地址-
    DNS 搜索域名(可选)当容器访问一个不包括完全域名的主机名时,在该主机名后面添加 dns-search 指定的域名后缀,例如容器访问 centos-1,dns-search 配置的是 example.com,则会解析成 centos-1.example.comexample.com
    VSOA(可选)服务密码(选填)VSOA 服务的密码-
    端口映射(必填)VSOA 服务映射端口80
    健康检查地址(选填)VSOA 健康检查地址/health
    健康检查超时时间(选填)启动健康检查最大超时时间3000 毫秒
    重试次数(选填)启动健康检查最大重试次数3
    启动时间(选填)健康检查启动时间5000 毫秒
    间隔时间(选填)每次健康检查间隔时间5000 毫秒
    CPUCPU 数(选填)为容器配置最大使用限制的 CPU 核数1
    允许执行的 CPU(选填)为容器配置可使用的 CPU,可以指定范围区间,如 1-3 表示允许核数为 1 到 3 区间的所有 CPU;也可以列举,如 1,2,3 表示允许核数为 1、2、3 的 CPU1-3 或 1,2,3
    CPU 份额(选填)容器所占总 CPU 核数的比例10
    内存(选填)容器可用内存1
    文件系统(可选)容器内的路径(必填)容器的虚拟路径/qt
    宿主机的路径(必填)宿主系统的真实物理路径/qt
    权限(必填)挂载时的权限,包括:只读挂载,读、可执行挂载,读写挂载只读
    设备(可选)主机地址(必填)宿主系统的设备地址(增加主机的一个设备到容器,即让容器拥有访问这个设备的权限)-
    容器地址(必填)容器内设备挂载的地址-
    权限(必填)容器内该设备的读写权限,read 代表只读,write 代表只写,mknod 代表创建块或字符设备等特殊文件的权限read
    健康检查检查命令(选填)健康检查命令HEALTHCHECK [选项] CMD [命令] 或 HEALTHCHECK NONE
    间隔时间(选填)健康检查间隔时间30 秒
    重试次数(选填)健康检查重试次数3 次
    启动时间(选填)健康检查启动时间30 秒
    超时时间(选填)健康检查超时时间30 秒
    特权运行(选填)打开特权运行,会直接赋予容器全部权限-
    表 4 高级选项参数说明(SylixOS 镜像)
    参数类型 参数 描述 示例
    CPU最高线程优先级(必填)容器内允许的线程最高优先级,当容器内期望创建的线程优先级高于 highestPrio 时,实际创建的线程优先级会被设定为 highestPrio160
    最低线程优先级(必填)容器内允许的线程最低优先级,当容器内期望创建的线程优先级低于 lowestPrio 时,实际创建的线程优先级会被设定为 lowestPrio250
    磁盘用量限制(必填)容器允许使用的磁盘空间最大用量,单位 MB2048
    内存内存堆限制(必填)容器内的内存堆占用字节数2097152
    物理内存限制(必填)容器内的物理内存占用字节数2097152
    启动参数(选填)为容器支持的默认启动参数配置,其格式如 spawnl 函数的参数列表/apps/ecs_demo
    主机名称(必填)容器显示的主机名sylixos_ecs
    网络(必填)TELNETD 服务TELNETD 端口开启
    FTPD 服务FTPD 端口开启
    环境变量(选填)容器启动时需要设置的环境变量,以 Key 和 Value 形式输入,用分号间隔PATH=/usr/bin:/bin:/usr/pkg/sbin:
    /sbin:/usr/local/bin;TERM=vt100
    文件系统(可选)容器内的路径(必填)容器的虚拟路径,当宿主环境的真实路径不存在时,容器内的路径会显示为无权限访问状态/qt
    宿主机的路径(必填)宿主系统的真实物理路径/qt
    权限(必填)挂载时的权限,包括:只读挂载,读、可执行挂载,读写挂载只读
    设备(可选)路径(必填)宿主系统的设备路径/dev/fb0
    权限(必填)读、写和执行权限,可多选。容器设备的权限配置遵循“最后有效”原则,即若多条规则覆盖到同一设备,则以最后一条规则为有效规则
    VSOA(可选)服务密码(选填)VSOA 服务的密码-
    自动映射端口(必填)设置是否开启自动映射端口。打开自动映射端口开关,则服务会自动识别节点上的可用端口并动态分配映射端口;关闭自动映射端口开关,则需要手动填写固定的映射端口80
    健康检查地址(选填)VSOA 健康检查地址/health
    健康检查超时时间(选填)启动健康检查最大超时时间3000 毫秒
    重试次数(选填)启动健康检查最大重试次数3
    启动时间(选填)健康检查启动时间5000 毫秒
    间隔时间(选填)每次健康检查间隔时间5000 毫秒
    内核对象线程数量(必填)容器内允许的最大线程数量300
    线程池数量(必填)容器内允许的最大线程池数量1
    事件数量(必填)容器内允许的最大事件数量800
    事件集数量(必填)容器内允许的最大事件集数量50
    定长内存分区数量(必填)容器内允许的最大定长分区数量5
    变量内存区数量(必填)容器内允许的最大变长分区数量5
    消息队列数量(必填)容器内允许的最大消息队列数量50
    定时器数量(必填)容器内允许的最大定时器数量5
  7. 设置完成后,单击保存,完成服务新建。重复步骤 6 ~ 7 可以新建多个服务,并对服务进行修改和删除操作。

    • 修改服务:选择要修改的服务,单击其操作列的修改,可以参考步骤 7 中的参数说明表,修改已设置的服务参数信息。
    • 删除服务:选择要删除的服务,单击其操作列的删除,可删除新建的服务。
  8. 所有应用信息设置完成后,单击顶部导航栏中的应用列表,返回应用列表主页面,新建的应用会显示在应用列表中。

步骤 3:接入集群

  1. 在左侧导航栏中,单击集群管理 > 集群列表,进入集群列表页面。

  2. 在集群列表页面,通过如下方式接入集群。

    • 接入单个集群:单击左上角的接入,在接入集群对话框中,参考表 5 设置集群的基本信息。

      表 5 集群参数说明

      参数描述示例
      编号集群在 ECMP 中的唯一标识,用于区分和识别不同的集群。支持自动生成或手动输入,长度不能超过 50 个字符5O28GYM252_1
      名称集群的名称,支持自定义。名称只能由汉字、英文字母、数字和特殊字符“-”、“_”组成,长度不能超过 50 个字符演示集群
      描述设置应用的描述信息,如功能、用途或重要提醒等,以便更好地标识或管理应用该集群用于产品演示
      应用编排选择该集群要添加的应用及版本,仅支持添加已发布的版本,且可添加多个-
    • 批量接入集群:单击左上角的批量接入,在批量接入集群对话框中,输入待接入的集群编号,多个集群编号之间用英文逗号分隔(单个编号长度不能超过 50 个字符),或输入编号数量后单击生成,自动生成集群编号,然后在应用编排下拉列表框中,选择要加入该集群的应用,仅支持添加已发布的应用版本,且可添加多个。

  3. 集群信息设置完成后,单击保存,完成集群接入。新接入的集群会显示在集群列表中。

  4. 在浏览器中访问要接入 ECMP 的 ECSM 服务对应的 IP 地址和端口号,在 ECSM 左侧导航栏中单击系统设置,在系统设置页面,参考表 6 配置 ECSM 接入 ECMP 的基础信息,并单击保存

    表 6 ECMP 接入配置参数说明

    参数描述示例
    服务地址ECMP 与 ECSM 进行 HTTP 通讯的 IP 地址和端口号,其中端口号固定为 400010.XX.XX.XX:4000
    位置服务地址当前 ECMP 位置服务的 IP 地址和端口号,其中端口号固定为 1901510.XX.XX.XX:19015
    集群编码ECMP 分配给 ECSM 的唯一标识码5O28GYM252_1
  5. 返回 ECMP 集群列表页面,可以看到对应集群变更为“在线”状态。

步骤 4:编排集群

在接入集群后,可以通过集群编排功能来添加新的应用,以便在目标集群中部署单个或多个应用。下面详细介绍如何利用集群编排功能在接入集群后添加应用。

  1. 在集群列表页面,选择要添加应用的集群,单击其操作列的管理,进入管理集群页面的集群编排界面。

  2. 在集群编排界面的应用编排页签,单击右上角的添加应用,打开添加应用对话框。

  3. 在添加应用对话框中,选择要在该集群中添加的应用及其版本,仅支持添加已发布的版本,且可添加多个。

  4. 单击添加,将应用添加至当前集群。新添加的应用会显示在应用编排的应用列表中,单击应用名称,可以查看应用详情,包括基本信息和其所包含的服务。

步骤 5:部署应用

ECMP 支持部署单个应用或批量部署应用。其中部署单个应用时,可以通过应用管理模块部署单个应用至单个或多个集群,或通过集群管理模块部署单个应用至某一个特定集群。

批量部署应用

  1. 在管理集群页面的应用编排页签中,单击右上角的批量部署,弹出批量部署确认框。

  2. 在批量部署确认框中,单击部署,开始部署此集群中添加的所有应用,此时会打开部署结果窗口。

  3. 在部署结果窗口,可以查看应用的部署进度。如果有一个应用版本或版本中的某个服务部署失败,则结果为“批量部署失败”,单击应用名称前后的,可以查看失败原因;否则,部署结果为“批量部署成功”。单击关闭,完成本地应用部署。

部署单个应用

ECMP 支持通过多种方式将某一个应用版本部署到目标集群。下面重点介绍如何通过集群编排将特定应用版本部署至指定集群。此外,您也可以在应用管理模块中选择在应用列表部署,或在应用详情页面通过“部署版本”功能,将应用版本部署到单个或多个集群,详情请参见 部署应用部署应用版本

  1. 在管理集群页面的应用编排页签中,选择要部署的应用,单击应用详情区域的部署应用,弹出部署应用确认框。

  2. 在部署应用确认框中,单击部署,开始部署应用,此时会打开部署结果窗口。

  3. 在部署结果窗口,可以查看应用的部署进度,显示如下界面,表示应用部署成功,单击关闭,完成单个应用部署。

步骤 6:自动更新服务

下面我们以通过 Armory 发布软件包至 ECMP 镜像仓库为例,介绍应中的服务自动更新流程。

  1. 参考 快速发布制品 完成仓库配置、登录,以及软件包创建。

  2. 将新版本的 thermal_server 和 qt_client_sylixos 镜像放置在创建好的“ecs-image”根目录下,并参考 软件包规范 定义 armory.json 文件。

  3. 执行如下命令,将镜像包发布至 Armory 和 ECMP 仓库。

    armory publish @software_factory/ecs-image/armory.json -s ECMP
    

    其中 @software_factory/ecs-image/armory.json 为发布配置文件 armory.json 的相对路径,发布软件包时请替换为 armory.json 文件所在的实际路径。

  4. 因为 新建应用 时 thermal_server 和 qt_client_sylixos 服务设置了自动更新策略,故新镜像上传至 ECMP 仓库时,服务会自动更新,并将使用镜像替换为新上传的镜像。此时,在左侧菜单栏中单击部署管理 > 部署记录,在部署记录页面,会新增一条自动更新部署的部署记录。

文档内容是否对您有所帮助?
有帮助
没帮助