更新应用部署
功能介绍
更新应用部署相关信息。
URI
PUT /v3/{project_id}/ai-mgr/deployments/{deployment_id}
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| deployment_id | 是 | String | 部署ID |
| project_id | 是 | String | 项目ID,获取方法请参见获取项目ID |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| provider | 否 | String | 平台提供者,分别为hilens及ief。当为hilens时,请求部署在hilens平台的相关数据。 |
请求参数
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| X-Auth-Token | 是 | String | 用户Token。获取方法请参见获取Token |
| X-Expired-Time | 否 | Integer | 离线场景超期时间,单位分钟,范围在1-86400 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| deployment | 否 | DeploymentRequest object | 应用部署全量替换修改,应用更新时调用 |
| description | 否 | String | 应用部署描述修改,只修改描述不需要传deployment参数。最大长度255,不允许^ ~ # $ % & * < > ( ) [ ] { } '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' " \ |
| tags | 否 | Array of DeploymentTag objects | 部署标签 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| replicas | 是 | Integer | 应用部署副本数,小于100。 |
| template | 是 | PodRequest object | 应用部署模板 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| affinity | 否 | PodAffinity object | 应用部署亲和性规则 |
| apps | 是 | Array of AppDef objects | 应用部署业务容器或RPM程序包 |
| configs | 是 | PodConfig object | 应用实例配置 |
| init_containers | 否 | Array of AppDef objects | 应用部署初始化业务容器,容器部署有效。预留,暂不支持 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| node_affinity | 否 | Array of MatchExpression objects | 节点亲和规则 |
| pod_affinity | 否 | Array of MatchExpression objects | Pod亲和规则 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| key | 否 | String | 规则的标签 |
| operator | 否 | String | 操作符,取值如下: In:标签值需要在values的列表中 NotIn:标签的值不在某个列表中 Exists:某个标签存在 DoesNotExist:某个标签不存在 Gt:标签的值大于某个值(字符串比较) Lt:标签的值小于某个值(字符串比较) |
| values | 否 | Array of strings | 一组标签值。 如果运算符为In或NotIn,则值数组必须非空。 如果运算符为Exists 或DoesNotExist,则值数组必须为空。 如果运算符是Gt或Lt,则值数组必须具有单个元素,该元素将被解释为整数 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| host_network | 是 | Boolean | 应用实例是否启用主机网络,不启用则使用端口映射,默认值false |
| host_pid | 否 | Boolean | 应用实例是否与主机共PID命名空间,默认值false |
| migration | 否 | Boolean | 应用实例故障是否迁移,指定节点组部署时必选,默认值false |
| restart_policy | 是 | String | 应用实例重启策略,可选值Always、OnFailure、Never |
| toleration_seconds | 否 | Integer | 应用实例故障容忍时间,容忍时间到达后迁移应用实例,只在指定节点组部署时生效 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| 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 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| 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必须三选一使用 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| configmap | 否 | ConfigsMap object | 环境变量引用配置项时使用。使用ValueFrom时,secret与configmap必须二选一 |
| secret | 否 | DeploymentSecrets object | 环境变量引用密钥时使用。使用ValueFrom时,secret与configmap必须二选一 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| key | 是 | String | 配置项的名称,以英文字母或中划线开头,由英文字母、数字、点号、中划线和下划线组成,长度1到63个字符。 |
| name | 是 | String | 配置项的属性名,以英文小写字母开头,由中文字符,英文字母,数字,下划线和中划线组成,不能以中划线结尾,长度4-64位。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| name | 否 | String | 密钥的名称,以英文小写字母开头,由中文字符,英文字母,数字,下划线和中划线组成,不能以中划线结尾,长度4-64位 |
| key | 否 | String | 密钥的属性名,以英文字母和中划线开头,由英文字母、数字、点号、中划线和下划线组成,长度1-63位 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| container_port | 是 | Long | 容器端口,1到65535之间的整数 |
| host_ip | 否 | String | 对应主机网卡地址,形如192.168.0.1 |
| host_port | 否 | Long | 主机端口,1到65535之间的整数,与主机端口范围二选一 |
| host_port_range | 否 | HostPortRange object | 主机端口范围,在范围内为应用实例自动分配主机端口;与主机端口参数二选一 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| max_port | 是 | Long | 主机端口上限值,1到65535之间的整数;max_port需大于min_port |
| min_port | 是 | Long | 主机端口下限制,1到65535之间的整数 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| exec | 否 | Exec object | 执行命令检查,与http_get二选一 |
| http_get | 否 | HttpGet object | 执行http探测 |
| initial_delay_seconds | 否 | Long | 表示从工作负载启动后从多久开始探测,大于0且不大于3600的整数,默认为10 |
| timeout_seconds | 否 | Long | 表示探测超时时间,大于0且不大于3600的整数,默认为1 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| host | 否 | String | 请求的主机地址,默认为容器IP |
| path | 是 | String | 必须要以/开头,构造结果为:协议类型://主机地址:端口路径 |
| port | 是 | Integer | 探测的http端口,1到65535之间的整数 |
| scheme | 否 | String | 协议类型,HTTP或HTTPS,默认HTTP |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| 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 |
响应参数
状态码: 200
| 参数 | 参数类型 | 描述 |
|---|---|---|
| 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 | 应用部署的指定节点,与cluster_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_FAILED:删除失败 HIBERNATED:休眠 |
| node_num | Integer | 部署的节点数,最小为1,集群部署也为1 |
| result | Array of NodeResult objects | 每个节点的部署结果 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| host_network | Boolean | 应用实例是否启用主机网络,不启用则使用端口映射,默认值false |
| host_pid | Boolean | 应用实例是否与主机共PID命名空间,默认值false |
| migration | Boolean | 应用实例故障是否迁移,指定节点组部署时必选,默认值false |
| restart_policy | String | 应用实例重启策略,可选值Always、OnFailure、Never |
| toleration_seconds | Integer | 应用实例故障容忍时间,容忍时间到达后迁移应用实例,只在指定节点组部署时生效 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| 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 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| 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必须三选一使用 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| configmap | ConfigsMap object | 环境变量引用配置项时使用。使用ValueFrom时,secret与configmap必须二选一 |
| secret | DeploymentSecrets object | 环境变量引用密钥时使用。使用ValueFrom时,secret与configmap必须二选一 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| key | String | 配置项的名称,以英文字母或中划线开头,由英文字母、数字、点号、中划线和下划线组成,长度1到63个字符。 |
| name | String | 配置项的属性名,以英文小写字母开头,由中文字符,英文字母,数字,下划线和中划线组成,不能以中划线结尾,长度4-64位。 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| name | String | 密钥的名称,以英文小写字母开头,由中文字符,英文字母,数字,下划线和中划线组成,不能以中划线结尾,长度4-64位 |
| key | String | 密钥的属性名,以英文字母和中划线开头,由英文字母、数字、点号、中划线和下划线组成,长度1-63位 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| container_port | Long | 容器端口,1到65535之间的整数 |
| host_ip | String | 对应主机网卡地址,形如192.168.0.1 |
| host_port | Long | 主机端口,1到65535之间的整数,与主机端口范围二选一 |
| host_port_range | HostPortRange object | 主机端口范围,在范围内为应用实例自动分配主机端口;与主机端口参数二选一 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| max_port | Long | 主机端口上限值,1到65535之间的整数;max_port需大于min_port |
| min_port | Long | 主机端口下限制,1到65535之间的整数 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| exec | Exec object | 执行命令检查,与http_get二选一 |
| http_get | HttpGet object | 执行http探测 |
| initial_delay_seconds | Long | 表示从工作负载启动后从多久开始探测,大于0且不大于3600的整数,默认为10 |
| timeout_seconds | Long | 表示探测超时时间,大于0且不大于3600的整数,默认为1 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| host | String | 请求的主机地址,默认为容器IP |
| path | String | 必须要以/开头,构造结果为:协议类型://主机地址:端口路径 |
| port | Integer | 探测的http端口,1到65535之间的整数 |
| scheme | String | 协议类型,HTTP或HTTPS,默认HTTP |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| 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 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| cpu | String | cpu数量,字符串所对应的数值在0.01到1000之间 |
| gpu | String | gpu数量,值在0到1000 |
| memory | String | 内存数量,如果是资源限制,其值范围在4到1024000之间,否则在0.01到1024000之间 |
| npu | String | npu数量,字符串所对应的数值在0.到1000之间 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| node_id | String | 部署的节点ID |
| error_message | String | 部署到该节点失败时,返回的错误信息 |
| error_code | String | 部署到该节点失败时,返回的错误码 |
状态码: 401
| 参数 | 参数类型 | 描述 |
|---|---|---|
| request_id | String | 请求ID |
| error_code | String | 错误码 |
| error_message | String | 错误信息 |
状态码: 403
| 参数 | 参数类型 | 描述 |
|---|---|---|
| request_id | String | 请求ID |
| error_code | String | 错误码 |
| error_message | String | 错误信息 |
状态码: 404
| 参数 | 参数类型 | 描述 |
|---|---|---|
| request_id | String | 请求ID |
| error_code | String | 错误码 |
| error_message | String | 错误信息 |
状态码: 500
| 参数 | 参数类型 | 描述 |
|---|---|---|
| request_id | String | 请求ID |
| error_code | String | 错误码 |
| error_message | String | 错误信息 |
请求示例
更新自定义技能
https://{endpoint}/v3/8c79e1e7ff39437680a67783feb0e815/ai-mgr/deployments/8c79e1e7ff39437680a67783feb0e811
{
"deployment" : {
"replicas" : 1,
"template" : {
"configs" : {
"restart_policy" : "Always",
"host_network" : false
},
"apps" : [ {
"privileged" : false,
"resources" : {
"limits" : {
"cpu" : "0.25",
"memory" : "128"
},
"requests" : { }
},
"name" : "image",
"app_url" : "xxx"
} ]
}
}
} 响应示例
状态码: 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 | 服务器内部错误 |
错误码
请参见错误码。