更新时间:2023-04-24 GMT+08:00
分享

创建应用部署

功能介绍

创建应用部署。

URI

POST /v3/{project_id}/ai-mgr/deployments

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目ID,获取方法请参见获取项目ID

表2 Query参数

参数

是否必选

参数类型

描述

provider

String

平台提供者,分别为hilens及ief。当为hilens时,请求部署在hilens平台的相关数据

请求参数

表3 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token。获取方法请参见获取Token

X-Expired-Time

Integer

离线场景超期时间,单位分钟,范围在1-86400

表4 请求Body参数

参数

是否必选

参数类型

描述

cluster_id

String

应用部署到指定集群,与node_ids二选一

deployment

DeploymentRequest object

部署参数配置

description

String

应用部署描述,最大长度255,不允许^ ~ # $ % & * < > ( ) [ ] { } ' " \

license_quota

Integer

本次部署所使用的license额度,配合订单中的计费量纲的实际计费类型,如:视频路数/实例数/QPS。

name

String

应用部署名称,只允许英文小写字母、数字、中划线,最大长度32, 英文小写字母或数字开头和结尾

node_ids

Array of strings

应用部署到指定节点,与cluster_id二选一

source

String

应用部署来源: HiLens市场(hlm) or aigallery(aig) or 自定义(userdefined)

svc_order_id

String

购买应用管理服务的订单ID。

tags

Array of DeploymentTag objects

部署标签

node_tags

Array of TagRequest objects

部署节点标签列表,当通过节点标签进行部署的时候,需要下发该字段。

node_num

Integer

标签部署的设备数量

表5 DeploymentRequest

参数

是否必选

参数类型

描述

replicas

Integer

应用部署副本数,小于100。

template

PodRequest object

应用部署模板

表6 PodRequest

参数

是否必选

参数类型

描述

affinity

PodAffinity object

应用部署亲和性规则

apps

Array of AppDef objects

应用部署业务容器或RPM程序包

configs

PodConfig object

应用实例配置

init_containers

Array of AppDef objects

应用部署初始化业务容器,容器部署有效。预留,暂不支持

表7 PodAffinity

参数

是否必选

参数类型

描述

node_affinity

Array of MatchExpression objects

节点亲和规则

pod_affinity

Array of MatchExpression objects

Pod亲和规则

表8 MatchExpression

参数

是否必选

参数类型

描述

key

String

规则的标签

operator

String

操作符,取值如下: In:标签值需要在values的列表中 NotIn:标签的值不在某个列表中 Exists:某个标签存在 DoesNotExist:某个标签不存在 Gt:标签的值大于某个值(字符串比较) Lt:标签的值小于某个值(字符串比较)

values

Array of strings

一组标签值。 如果运算符为In或NotIn,则值数组必须非空。 如果运算符为Exists 或DoesNotExist,则值数组必须为空。 如果运算符是Gt或Lt,则值数组必须具有单个元素,该元素将被解释为整数

表9 PodConfig

参数

是否必选

参数类型

描述

host_network

Boolean

应用实例是否启用主机网络,不启用则使用端口映射,默认值false

host_pid

Boolean

应用实例是否与主机共PID命名空间,默认值false

migration

Boolean

应用实例故障是否迁移,指定节点组部署时必选,默认值false

restart_policy

String

应用实例重启策略,可选值Always、OnFailure、Never

toleration_seconds

Integer

应用实例故障容忍时间,容忍时间到达后迁移应用实例,只在指定节点组部署时生效

表10 AppDef

参数

是否必选

参数类型

描述

app_order_id

String

app应用的订单ID,技能来源是市场时,如果不填,则自动选择默认订单。

app_url

String

app应用的地址,可以是镜像地址或者OBS地址

channel_limit

Integer

路数限制,添加作业的时候,摄像头和VCN的最大路数不超过该值,范围是0到1000

channel_upper_limit

Integer

用户可以指定的路数限制上限,范围是0到1000

args

Array of strings

容器启动参数,字符总长度最大为65536,不允许^#~^$|%&*<>()'"[]{}]等特殊字符

command

Array of strings

容器启动命令,字符总长度最大为65536。 command支持使用数组定义多条命令,但在IEF控制台界面只会显示第一条命令。不允许^#~^$|%&*<>()'"[]{}]等特殊字符

envs

Array of Env objects

环境变量

is_modelbox

Boolean

是否是modelbox镜像

liveness_probe

Probe object

探针配置

msgs

Array of Env objects

消息变量

name

String

应用名字,只允许英文小写字母、数字、中划线,最大长度32, 英文小写字母或数字开头和结尾。该名称同时对应技能名称,当不传订单id的时候,默认通过该名称和版本号version字段,选择指定技能版本,进行部署,并选择可用的订单(默认订单优先)扣除份额。

npu_type

String

npu类型,支持D310类型和D910类型。D310表示D310类型。

D910表示D910类型。不填表示为D310类型

ports

Array of HostContainerPortMapping objects

容器端口映射值

privileged

Boolean

是否启用特权容器,默认值false

readiness_probe

Probe object

探针配置

resources

ResQuest object

创建应用时使用的资源

version

String

版本号,长度不操作128,支持大小写数字,下划线,点,中划线

volumes

Array of Volume objects

卷配置

start_resources

ResQuest object

创建部署所需要的起始资源

channel_resources

ResQuest object

每增加一路所需要资源

skill_project_id

String

技能管理ID,技能来源source是skill的时候,需要传入该ID

表11 Env

参数

是否必选

参数类型

描述

name

String

环境变量的key,由大小写字母或下划线开头,由数字、大小写字母、下划线组成,最大长度2048个字符,不允许重复

value

String

环境变量的value,最大长度20480个字符。value、value_from和field_path必须三选一使用

value_from

ValueFrom object

环境变量可使用配置项和密钥导入。value、value_from和field_path必须三选一使用

field_path

String

该参数目前只支持赋值"status.hostIP",即引用边缘节点的IP地址作为环境变量。value、value_from和field_path必须三选一使用

表12 ValueFrom

参数

是否必选

参数类型

描述

configmap

ConfigsMap object

环境变量引用配置项时使用。使用ValueFrom时,secret与configmap必须二选一

secret

DeploymentSecrets object

环境变量引用密钥时使用。使用ValueFrom时,secret与configmap必须二选一

表13 ConfigsMap

参数

是否必选

参数类型

描述

key

String

配置项的名称,以英文字母或中划线开头,由英文字母、数字、点号、中划线和下划线组成,长度1到63个字符。

name

String

配置项的属性名,以英文小写字母开头,由中文字符,英文字母,数字,下划线和中划线组成,不能以中划线结尾,长度4-64位。

表14 DeploymentSecrets

参数

是否必选

参数类型

描述

name

String

密钥的名称,以英文小写字母开头,由中文字符,英文字母,数字,下划线和中划线组成,不能以中划线结尾,长度4-64位

key

String

密钥的属性名,以英文字母和中划线开头,由英文字母、数字、点号、中划线和下划线组成,长度1-63位

表15 HostContainerPortMapping

参数

是否必选

参数类型

描述

container_port

Long

容器端口,1到65535之间的整数

host_ip

String

对应主机网卡地址,形如192.168.0.1

host_port

Long

主机端口,1到65535之间的整数,与主机端口范围二选一

host_port_range

HostPortRange object

主机端口范围,在范围内为应用实例自动分配主机端口;与主机端口参数二选一

表16 HostPortRange

参数

是否必选

参数类型

描述

max_port

Long

主机端口上限值,1到65535之间的整数;max_port需大于min_port

min_port

Long

主机端口下限制,1到65535之间的整数

表17 Probe

参数

是否必选

参数类型

描述

exec

Exec object

执行命令检查,与http_get二选一

http_get

HttpGet object

执行http探测

initial_delay_seconds

Long

表示从工作负载启动后从多久开始探测,大于0且不大于3600的整数,默认为10

timeout_seconds

Long

表示探测超时时间,大于0且不大于3600的整数,默认为1

表18 Exec

参数

是否必选

参数类型

描述

command

String

探针执行命令,最大长度10240个字符。不允许^#~^$|%&*<>()'"[]{}这些特殊字符

表19 HttpGet

参数

是否必选

参数类型

描述

host

String

请求的主机地址,默认为容器IP

path

String

必须要以/开头,构造结果为:协议类型://主机地址:端口路径

port

Integer

探测的http端口,1到65535之间的整数

scheme

String

协议类型,HTTP或HTTPS,默认HTTP

表20 Volume

参数

是否必选

参数类型

描述

destination

String

卷挂载路径,必须是合法的路径

key

String

卷的类型,支持configMap,secret,emptyDir,hostPath

name

String

卷名称,小写字母或数字,最长63个字符

read_only

Boolean

读写权限,configMap和secret类型只支持读权限

source

String

卷来源,type为hostPath时输入路径,要求以/开头,后面可包含中划线,反斜杠,下划线,点号,字母,数字; secret时输入secret名称,configMap时输入configMap名称,emptyDir时输入disk或memory

type

String

卷的类型,支持configMap,secret,emptyDir,hostPath

表21 ResQuest

参数

是否必选

参数类型

描述

limits

Res object

允许容器使用的最大资源

requests

Res object

容器需要使用的最小资源

表22 Res

参数

是否必选

参数类型

描述

cpu

String

cpu数量,字符串所对应的数值在0.01到1000之间

gpu

String

gpu数量,值在0到1000

memory

String

内存数量,如果是资源限制,其值范围在4到1024000之间,否则在0.01到1024000之间

npu

String

npu数量,字符串所对应的数值在0.到1000之间

表23 DeploymentTag

参数

是否必选

参数类型

描述

key

String

部署标签的key值,长度取值范围为1~36,由英文字母,数字,中划线和下划线组成,长度1到36个字符

value

String

部署标签的value值,长度取值范围为1~43,由英文字母,数字,下划线,点号和中划线组成,长度0到43个字符

表24 TagRequest

参数

是否必选

参数类型

描述

key

String

部署节点标签的key值,长度取值范围为1~36,由英文字母,数字,中划线和下划线组成,长度1到36个字符

value

String

部署节点标签的value值,长度取值范围为1~43,由英文字母,数字,下划线,点号和中划线组成,长度0到43个字符

响应参数

状态码: 200

表25 响应Body参数

参数

参数类型

描述

template

template object

部署模板信息

reason

String

部署成功失败的理由

ready_replicas

Integer

已经就绪的实例节点数

replicas

Integer

实例节点节点数

description

String

应用部署描述,最大长度255,不允许^ ~ # $ % & * < > ( ) [ ] { } ' " \

created_at

String

创建时间

source

String

应用部署来源: HiLens市场(hlm) or aigallery(aig) or 自定义(userdefined)

api_version

String

应用部署版本

node_ids

Array of strings

应用部署的指定节点,与clouster_id二选一

cluster_id

String

应用部署的集群ID,与node_id二选一

updated_at

String

更新时间

project_id

String

项目ID

name

String

部署名称

id

String

部署ID

state

String

RUNNING:运行, FREEZE:冻结, UNFREEZE: 解冻, CREATING:创建中, CREATE_FAILED:创建失败, STARTING:启动中, START_FAILED:启动失败, STOPPING:停止中 STOP_FAILED:停止失败 DELETING:删除中 DELETE_FIALED:删除失败 HIBERNATED:休眠

node_num

Integer

部署的节点数,最小为1,集群部署也为1

result

Array of NodeResult objects

每个节点的部署结果

表26 template

参数

参数类型

描述

configs

PodConfig object

应用实例配置

apps

Array of AppDef objects

部署应用列表

表27 PodConfig

参数

参数类型

描述

host_network

Boolean

应用实例是否启用主机网络,不启用则使用端口映射,默认值false

host_pid

Boolean

应用实例是否与主机共PID命名空间,默认值false

migration

Boolean

应用实例故障是否迁移,指定节点组部署时必选,默认值false

restart_policy

String

应用实例重启策略,可选值Always、OnFailure、Never

toleration_seconds

Integer

应用实例故障容忍时间,容忍时间到达后迁移应用实例,只在指定节点组部署时生效

表28 AppDef

参数

参数类型

描述

app_order_id

String

app应用的订单ID,技能来源是市场时,如果不填,则自动选择默认订单。

app_url

String

app应用的地址,可以是镜像地址或者OBS地址

channel_limit

Integer

路数限制,添加作业的时候,摄像头和VCN的最大路数不超过该值,范围是0到1000

channel_upper_limit

Integer

用户可以指定的路数限制上限,范围是0到1000

args

Array of strings

容器启动参数,字符总长度最大为65536,不允许^#~^$|%&*<>()'"[]{}]等特殊字符

command

Array of strings

容器启动命令,字符总长度最大为65536。 command支持使用数组定义多条命令,但在IEF控制台界面只会显示第一条命令。不允许^#~^$|%&*<>()'"[]{}]等特殊字符

envs

Array of Env objects

环境变量

is_modelbox

Boolean

是否是modelbox镜像

liveness_probe

Probe object

探针配置

msgs

Array of Env objects

消息变量

name

String

应用名字,只允许英文小写字母、数字、中划线,最大长度32, 英文小写字母或数字开头和结尾。该名称同时对应技能名称,当不传订单id的时候,默认通过该名称和版本号version字段,选择指定技能版本,进行部署,并选择可用的订单(默认订单优先)扣除份额。

npu_type

String

npu类型,支持D310类型和D910类型。D310表示D310类型。

D910表示D910类型。不填表示为D310类型

ports

Array of HostContainerPortMapping objects

容器端口映射值

privileged

Boolean

是否启用特权容器,默认值false

readiness_probe

Probe object

探针配置

resources

ResQuest object

创建应用时使用的资源

version

String

版本号,长度不操作128,支持大小写数字,下划线,点,中划线

volumes

Array of Volume objects

卷配置

start_resources

ResQuest object

创建部署所需要的起始资源

channel_resources

ResQuest object

每增加一路所需要资源

skill_project_id

String

技能管理ID,技能来源source是skill的时候,需要传入该ID

表29 Env

参数

参数类型

描述

name

String

环境变量的key,由大小写字母或下划线开头,由数字、大小写字母、下划线组成,最大长度2048个字符,不允许重复

value

String

环境变量的value,最大长度20480个字符。value、value_from和field_path必须三选一使用

value_from

ValueFrom object

环境变量可使用配置项和密钥导入。value、value_from和field_path必须三选一使用

field_path

String

该参数目前只支持赋值"status.hostIP",即引用边缘节点的IP地址作为环境变量。value、value_from和field_path必须三选一使用

表30 ValueFrom

参数

参数类型

描述

configmap

ConfigsMap object

环境变量引用配置项时使用。使用ValueFrom时,secret与configmap必须二选一

secret

DeploymentSecrets object

环境变量引用密钥时使用。使用ValueFrom时,secret与configmap必须二选一

表31 ConfigsMap

参数

参数类型

描述

key

String

配置项的名称,以英文字母或中划线开头,由英文字母、数字、点号、中划线和下划线组成,长度1到63个字符。

name

String

配置项的属性名,以英文小写字母开头,由中文字符,英文字母,数字,下划线和中划线组成,不能以中划线结尾,长度4-64位。

表32 DeploymentSecrets

参数

参数类型

描述

name

String

密钥的名称,以英文小写字母开头,由中文字符,英文字母,数字,下划线和中划线组成,不能以中划线结尾,长度4-64位

key

String

密钥的属性名,以英文字母和中划线开头,由英文字母、数字、点号、中划线和下划线组成,长度1-63位

表33 HostContainerPortMapping

参数

参数类型

描述

container_port

Long

容器端口,1到65535之间的整数

host_ip

String

对应主机网卡地址,形如192.168.0.1

host_port

Long

主机端口,1到65535之间的整数,与主机端口范围二选一

host_port_range

HostPortRange object

主机端口范围,在范围内为应用实例自动分配主机端口;与主机端口参数二选一

表34 HostPortRange

参数

参数类型

描述

max_port

Long

主机端口上限值,1到65535之间的整数;max_port需大于min_port

min_port

Long

主机端口下限制,1到65535之间的整数

表35 Probe

参数

参数类型

描述

exec

Exec object

执行命令检查,与http_get二选一

http_get

HttpGet object

执行http探测

initial_delay_seconds

Long

表示从工作负载启动后从多久开始探测,大于0且不大于3600的整数,默认为10

timeout_seconds

Long

表示探测超时时间,大于0且不大于3600的整数,默认为1

表36 Exec

参数

参数类型

描述

command

String

探针执行命令,最大长度10240个字符。不允许^#~^$|%&*<>()'"[]{}这些特殊字符

表37 HttpGet

参数

参数类型

描述

host

String

请求的主机地址,默认为容器IP

path

String

必须要以/开头,构造结果为:协议类型://主机地址:端口路径

port

Integer

探测的http端口,1到65535之间的整数

scheme

String

协议类型,HTTP或HTTPS,默认HTTP

表38 Volume

参数

参数类型

描述

destination

String

卷挂载路径,必须是合法的路径

key

String

卷的类型,支持configMap,secret,emptyDir,hostPath

name

String

卷名称,小写字母或数字,最长63个字符

read_only

Boolean

读写权限,configMap和secret类型只支持读权限

source

String

卷来源,type为hostPath时输入路径,要求以/开头,后面可包含中划线,反斜杠,下划线,点号,字母,数字; secret时输入secret名称,configMap时输入configMap名称,emptyDir时输入disk或memory

type

String

卷的类型,支持configMap,secret,emptyDir,hostPath

表39 ResQuest

参数

参数类型

描述

limits

Res object

允许容器使用的最大资源

requests

Res object

容器需要使用的最小资源

表40 Res

参数

参数类型

描述

cpu

String

cpu数量,字符串所对应的数值在0.01到1000之间

gpu

String

gpu数量,值在0到1000

memory

String

内存数量,如果是资源限制,其值范围在4到1024000之间,否则在0.01到1024000之间

npu

String

npu数量,字符串所对应的数值在0.到1000之间

表41 NodeResult

参数

参数类型

描述

node_id

String

部署的节点ID

error_message

String

部署到该节点失败时,返回的错误信息

error_code

String

部署到该节点失败时,返回的错误码

状态码: 401

表42 响应Body参数

参数

参数类型

描述

request_id

String

请求ID

error_code

String

错误码

error_message

String

错误信息

状态码: 403

表43 响应Body参数

参数

参数类型

描述

request_id

String

请求ID

error_code

String

错误码

error_message

String

错误信息

状态码: 404

表44 响应Body参数

参数

参数类型

描述

request_id

String

请求ID

error_code

String

错误码

error_message

String

错误信息

状态码: 500

表45 响应Body参数

参数

参数类型

描述

request_id

String

请求ID

error_code

String

错误码

error_message

String

错误信息

请求示例

创建部署,来源于自定义技能

https://{endpoint}/v3/{project_id}/ai-mgr/deployments

{
  "name" : "create-deployment-from-market",
  "description" : "",
  "tags" : [ {
    "key" : "key",
    "value" : "value"
  } ],
  "source" : "userdefined",
  "deployment" : {
    "replicas" : "1",
    "template" : {
      "configs" : {
        "restart_policy" : "Always",
        "host_network" : false
      },
      "apps" : [ {
        "skill_project_id" : "0c0e1e0f42e54119bf50d8b98aa3d71c",
        "app_url" : "https://test-sdk.obs.cn-north-x.myhuaweicloud.com/xxxx",
        "version" : "0.0.2",
        "name" : "skill-test-reject",
        "envs" : [ {
          "name" : "xxx",
          "value" : "xxx"
        } ],
        "privileged" : "false",
        "volumes" : [ {
          "type" : "configMap",
          "source" : "config001",
          "read_only" : true,
          "name" : "vol001",
          "key" : "key",
          "destination" : "xxx/xxxx"
        } ],
        "msgs" : [ {
          "name" : "xxx",
          "value" : "xxx"
        } ],
        "resources" : {
          "limits" : {
            "cpu" : "0.25",
            "memory" : "128"
          },
          "requests" : { }
        }
      } ]
    }
  },
  "node_ids" : [ "hilens-8c79e1e7ff39437680a67783feb0e815" ],
  "license_quota" : 1
}

响应示例

状态码: 200

请求成功,当批量部署节点个数小于20个的时候,返回结果result字段非空,当大于20个的时候,result字段为空,此时可通过回调机制获取部署结果。

{
  "template" : {
    "configs" : {
      "migration" : false,
      "host_network" : false,
      "host_pid" : false,
      "restart_policy" : "Always",
      "toleration_seconds" : 0
    },
    "apps" : [ {
      "name" : "example1-skill-name",
      "args" : [ ],
      "command" : [ "--log_dir=/train --learning_rate=0.01 --batch_size=150" ],
      "resources" : {
        "limits" : {
          "cpu" : "0.25",
          "memory" : "128"
        },
        "requests" : { }
      },
      "envs" : [ {
        "name" : "IVA_SVC_CONFIG",
        "value" : "{\"algorithm\":{\"multiTask\":\"no\",\"algType\":\"hilens\"},\"cloud\":{\"disEndpoint\":\"https://dis.cn-north-7.myhuaweicloud.com\",\"region\":\"cn-north-7\"},\"svcInstanceId\":\"modelbox-instance-xxxx\"}"
      } ],
      "msgs" : [ ],
      "ports" : [ {
        "container_port" : 10,
        "host_port" : 23,
        "host_ip" : "10.10.10.10"
      } ],
      "privileged" : false,
      "volumes" : [ {
        "name" : "tmp",
        "type" : "emptyDir",
        "source" : "memory",
        "destination" : "/tmp",
        "read_only" : false
      }, {
        "name" : "run",
        "type" : "emptyDir",
        "source" : "memory",
        "destination" : "/run",
        "read_only" : false
      }, {
        "name" : "cgroup",
        "type" : "hostPath",
        "source" : "/sys/fs/cgroup",
        "destination" : "/sys/fs/cgroup",
        "read_only" : true
      } ],
      "app_url" : "xxx",
      "is_modelbox" : true
    } ]
  },
  "reason" : null,
  "ready_replicas" : 0,
  "replicas" : 1,
  "description" : "",
  "created_at" : "2022-01-25 15:57:07 GMT+08:00",
  "source" : "userdefined",
  "api_version" : null,
  "node_ids" : [ "hilens-e17b497c3a00406f89f605e5c16b40d7" ],
  "result" : [ {
    "node_id" : "hilens-e17b497c3a00406f89f605e5c16b40d7"
  } ],
  "cluster_id" : "",
  "updated_at" : "2022-01-25 15:57:07 GMT+08:00",
  "project_id" : "fff47e1722f94c4e98531bae56821372",
  "name" : "example1",
  "id" : "hilens-9eebd2c03a2e48a6a47949fcb4f3f66f",
  "state" : "CREATING"
}

状态码

状态码

描述

200

请求成功,当批量部署节点个数小于20个的时候,返回结果result字段非空,当大于20个的时候,result字段为空,此时可通过回调机制获取部署结果。

401

认证不通过

403

拒绝执行请求

404

请求的资源不存在

500

服务器内部错误

错误码

请参见错误码

相关文档