创建应用部署
功能介绍
该API用于创建一个应用部署。
URI
POST /v3/{project_id}/edgemgr/deployments
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
project_id |
是 |
String |
项目ID,获取方法请参见获取项目ID。 |
请求参数
请求参数
|
参数 |
是否必选 |
类型 |
描述 |
|---|---|---|---|
|
Content-Type |
是 |
String |
消息体的类型(格式) 推荐您使用默认值application/json。 |
|
X-Auth-Token |
是 |
String |
用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 |
|
ief-instance-id |
否 |
String |
铂金版实例ID,专业版实例为空值 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
name |
是 |
String |
应用部署名称,只允许英文小写字母、数字、中划线,最大长度32,英文小写字母或数字开头和结尾 |
|
description |
否 |
String |
应用部署描述,最大长度255,不允许^ ~ # $ % & * < > ( ) [ ] { } ' " \ |
|
source |
否 |
String |
应用部署来源:自定义(userdefined) |
|
group_id |
否 |
String |
应用部署到指定节点组,与node_ids二选一 |
|
node_ids |
是 |
Array of strings |
应用部署到指定节点,当前只支持一个边缘节点 |
|
tags |
否 |
Array of 表17 objects |
应用部署标签 |
|
deployment |
是 |
表4 object |
部署参数配置 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
replicas |
是 |
Integer |
应用部署副本数,专业版只允许为1,铂金版副本数只允许小于100。 |
|
template |
是 |
表5 object |
应用部署模板 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
configs |
是 |
表16 object |
应用实例配置 |
|
affinity |
否 |
表41 object |
应用部署亲和性规则,仅铂金版支持 |
|
init_containers |
否 |
Array of 表6 objects |
应用部署init业务容器 |
|
containers |
是 |
Array of 表6 objects |
应用部署业务容器 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
name |
是 |
String |
容器名称,只允许英文小写字母、数字、中划线,最大长度32,英文小写字母或数字开头和结尾 |
|
image_url |
是 |
String |
容器镜像URL |
|
args |
否 |
Array of strings |
容器启动参数,字符总长度最大为65536 |
|
command |
否 |
Array of strings |
容器启动命令,字符总长度最大为65536。 command支持使用数组定义多条命令,但在IEF控制台界面只会显示第一条命令。 |
|
resources |
否 |
表14 object |
容器资源量 |
|
envs |
否 |
Array of 表13 objects |
容器环境变量键值对 |
|
ports |
否 |
Array of 表11 objects |
容器端口映射 |
|
privileged |
否 |
Boolean |
是否启用特权容器,默认值false |
|
readiness_probe |
否 |
表8 object |
工作负载业务探针配置 |
|
liveness_probe |
否 |
表8 object |
工作负载存活探针配置 |
|
version |
否 |
String |
容器版本,最大长度128个字符 |
|
volumes |
否 |
Array of 表7 objects |
容器挂载卷 |
|
npu_type |
否 |
String |
npu类型,支持D310类型。
|
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
name |
是 |
String |
卷名称,小写字母或数字,最长63个字符 |
|
type |
是 |
String |
卷的类型,支持configMap、secret、emptyDir、hostPath |
|
read_only |
是 |
Boolean |
读写权限,configMap和secret类型只支持读权限 |
|
source |
是 |
String |
卷来源,type为hostPath时输入路径,要求以/开头,后面可包含中划线、反斜杠、下划线、点号、字母、数字。 secret时输入secret名称,configMap时输入configMap名称,emptyDir时输入disk或memory。 |
|
destination |
是 |
String |
卷挂载路径,必须是合法的路径 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
http_get |
否 |
表10 object |
http健康检查,与exec二选一 |
|
exec |
否 |
表9 object |
执行命令检查,与http_get二选一 |
|
initial_delay_seconds |
否 |
Long |
表示从工作负载启动后从多久开始探测,大于0且不大于3600的整数,默认为10 |
|
timeout_seconds |
否 |
Long |
表示探测超时时间,大于0且不大于3600的整数,默认为1 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
path |
是 |
String |
必须要以/开头,构造结果为:协议类型://主机地址:端口路径 |
|
port |
是 |
Integer |
探测的http端口,1到65535之间的整数 |
|
host |
否 |
String |
请求的主机地址,默认为容器IP |
|
scheme |
否 |
String |
协议类型,HTTP或HTTPS,默认HTTP |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
container_port |
是 |
Long |
容器端口,1到65535之间的整数 |
|
host_port |
否 |
Long |
主机端口,1到65535之间的整数;与主机端口范围参数二选一 |
|
host_ip |
否 |
String |
对应主机网卡地址 |
|
host_port_range |
否 |
表12 object |
主机端口范围,在范围内为应用实例自动分配主机端口;与主机端口参数二选一;仅铂金版可用 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
min_port |
是 |
Long |
主机端口下限值,1到65535之间的整数 |
|
max_port |
是 |
Long |
主机端口上限值,1到65535之间的整数;max_port需大于min_port |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
name |
是 |
String |
环境变量的key,由大小写字母或下划线开头,由数字、大小写字母、下划线组成,最大长度2048个字符,不允许重复 |
|
value |
否 |
String |
环境变量的value,最大长度20480个字符。value、value_from和field_path必须三选一使用。 |
|
value_from |
否 |
表18 object |
环境变量可使用配置项和密钥导入 |
|
field_path |
否 |
String |
该参数目前只支持赋值“status.hostIP”,即引用边缘节点的IP地址作为环境变量。 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
cpu |
否 |
String |
cpu核数,大于等于0.01,最大1000;请求不需要带单位 |
|
memory |
否 |
String |
内存大小,单位兆,大于等于0.01,最大1024000。注意:内存的limits值最小为4;请求不需要带单位 |
|
gpu |
否 |
String |
Gpu显存大小,单位兆,大于等于0.01,最大1024000;请求不需要带单位 |
|
npu |
否 |
String |
Npu个数,大于0,最大1000;请求不需要带单位。 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
host_network |
是 |
Boolean |
应用实例是否启用主机网络,不启用则使用端口映射,默认值false |
|
host_pid |
否 |
Boolean |
应用实例是否与主机共PID命名空间,默认值false |
|
migration |
否 |
Boolean |
应用实例故障是否迁移,指定节点组部署时必选,默认值false |
|
restart_policy |
是 |
String |
应用实例重启策略,可选值Always、OnFailure、Never |
|
toleration_seconds |
否 |
Integer |
应用实例故障容忍时间,容忍时间到达后迁移应用实例,只在指定节点组部署时生效 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
key |
否 |
String |
数量不超过10个;不允许重复;只允许大小写字母、数字、下划线和中划线,不允许为空,最大长度为36个字符 |
|
value |
否 |
String |
只允许大小写字母、数字、下划线、中划线和点,最大长度为43个字符 |
响应参数
状态码为 200 时:
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
id |
String |
应用部署uuid |
|
name |
String |
应用部署名称,只允许英文小写字母、数字、中划线,最大长度32,英文小写字母或数字开头和结尾 |
|
replicas |
Integer |
应用部署总副本数 |
|
ready_replicas |
Integer |
应用部署正常副本数 |
|
description |
String |
应用部署描述,最大长度255,不允许^ ~ # $ % & * < > ( ) [ ] { } ' " \ |
|
group_id |
String |
应用部署到指定节点组,与node_ids二选一 |
|
node_ids |
Array of strings |
应用部署到指定节点,当前只支持一个边缘节点 |
|
tags |
Array of 表36 objects |
应用部署标签 |
|
api_version |
String |
应用部署版本 |
|
source |
String |
应用部署来源 |
|
project_id |
String |
项目ID |
|
created_at |
String |
应用部署创建时间 |
|
updated_at |
String |
应用部署更新时间 |
|
template |
表22 object |
应用部署模板 |
|
state |
String |
应用状态,仅包括冻结(FREEZE)、删除中(PENDING_DELETE)、删除失败(DELETE_FAILED),保留字段 |
|
source_id |
String |
预留字段 |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
configs |
表35 object |
应用实例配置 |
|
affinity |
表41 object |
应用部署亲和性规则,仅铂金版支持 |
|
init_containers |
Array of 表23 objects |
应用部署init业务容器 |
|
containers |
Array of 表23 objects |
应用部署业务容器 |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
name |
String |
容器名称,只允许英文小写字母、数字、中划线,最大长度32,英文小写字母或数字开头和结尾 |
|
image_url |
String |
容器镜像URL |
|
args |
Array of strings |
容器启动参数 |
|
command |
Array of strings |
容器启动命令 |
|
resources |
表31 object |
容器资源量 |
|
envs |
Array of 表30 objects |
容器环境变量键值对 |
|
ports |
Array of 表28 objects |
容器端口映射 |
|
privileged |
Boolean |
是否启用特权容器,默认值false |
|
readiness_probe |
表25 object |
工作负载业务探针配置 |
|
liveness_probe |
表25 object |
工作负载存活探针配置 |
|
version |
String |
容器版本 |
|
volumes |
Array of 表24 objects |
容器挂载卷 |
|
npu_type |
String |
npu类型,支持D310类型。
|
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
name |
String |
卷名称,小写字母或数字,最长63个字符 |
|
type |
String |
卷的类型,支持configMap、secret、emptyDir、hostPath |
|
read_only |
Boolean |
读写权限,默认读 |
|
source |
String |
卷来源,type为hostPath时输入路径,要求以/开头,后面可包含中划线、反斜杠、下划线、点号、字母、数字。 secret时输入secret名称,configMap时输入configMap名称,emptyDir时输入disk或memory。 |
|
destination |
String |
卷挂载路径,必须是合法的路径 |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
http_get |
表26 object |
http健康检查 |
|
exec |
表27 object |
执行命令检查 |
|
initial_delay_seconds |
Long |
表示从工作负载启动后从多久开始探测,大于0且不大于3600的整数,默认为10 |
|
timeout_seconds |
Long |
表示探测超时时间,大于0且不大于3600的整数,默认为1 |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
path |
String |
必须要以/开头,构造结果为:协议类型://主机地址:端口路径 |
|
port |
Integer |
探测的http端口,1到65535之间的整数 |
|
host |
String |
主机地址,默认为容器ip |
|
scheme |
String |
协议类型,HTTP或HTTPS,默认HTTP |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
container_port |
Long |
容器端口,1到65535之间的整数 |
|
host_port |
Long |
主机端口,1到65535之间的整数 |
|
host_ip |
String |
对应主机网卡地址 |
|
host_port_range |
表29 object |
主机端口范围,在范围内为应用实例自动分配主机端口;与主机端口参数二选一 |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
min_port |
Long |
主机端口下限值,1到65535之间的整数 |
|
max_port |
Long |
主机端口上限值,1到65535之间的整数;max_port需大于min_port |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
name |
String |
环境变量的key,由大小写字母或下划线开头,由数字、大小写字母、下划线组成,最大长度2048个字符,不允许重复 |
|
value |
String |
环境变量的value,最大长度2048个字符。value、value_from和field_path必须三选一使用。 |
|
value_from |
表37 object |
环境变量可使用配置项和密钥导入 |
|
field_path |
String |
该参数目前只支持赋值“status.hostIP”,即引用边缘节点的IP地址作为环境变量。 |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
cpu |
String |
cpu核数,大于等于0.01,最大1000 |
|
memory |
String |
内存大小,单位兆,大于等于0.01,最大1024000。注意:内存的limits值最小为4 |
|
gpu |
String |
Gpu显存大小,单位兆,大于等于0.01,最大1024000 |
|
npu |
String |
Npu个数,大于0,最大1000 |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
node_affinity |
Array of 表34 objects |
节点亲和性 |
|
pod_affinity |
Array of 表34 objects |
应用亲和性 |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
key |
String |
应用部署亲和规则的key |
|
operator |
String |
亲和规则,In、Exists表示亲和,NotIn、DoesNotExist表示反亲和 |
|
values |
Array of strings |
- |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
host_network |
Boolean |
应用实例是否启用主机网络,不启用则使用端口映射,默认值false |
|
host_pid |
Boolean |
应用实例是否与主机共PID命名空间,默认值false |
|
migration |
Boolean |
应用实例故障是否迁移,指定节点组部署时必选,默认值false |
|
restart_policy |
String |
应用实例重启策略,可选值Always、OnFailure、Never |
|
toleration_seconds |
Integer |
应用实例故障容忍时间,容忍时间到达后迁移应用实例,只在指定节点组部署时生效 |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
key |
String |
数量不超过10个;不允许重复;只允许大小写字母、数字、下划线和中划线,不允许为空,最大长度为36个字符 |
|
value |
String |
只允许大小写字母、数字、下划线、中划线和点,最大长度为43个字符 |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
secret |
表38 object |
环境变量引用密钥时使用。使用ValueFrom时,secret与configmap必须二选一。 |
|
configmap |
表39 object |
环境变量引用配置项时使用。 |
状态码为 400 时:
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
error_code |
String |
错误码 |
|
error_msg |
String |
错误描述信息 |
状态码为 500 时:
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
error_code |
String |
错误码 |
|
error_msg |
String |
错误描述信息 |
请求示例
{
"name": "app",
"description": "this is a test app",
"node_ids": [
"9ebd8efb-9fdd-44a1-abda-9cdbc287a867"
],
"tags": [
{
"key": "app",
"value": "test"
}
],
"deployment": {
"replicas": 1,
"template": {
"configs": {
"host_network": true,
"host_pid": true,
"restart_policy": "Always",
"toleration_seconds": 300
},
"containers": [
{
"name": "container-0",
"image_url": "nginx:alpine",
"resources": {
"limits": {
"cpu": "0.25",
"memory": "500"
},
"requests": {
"cpu": "0.25",
"memory": "500"
}
}
}
]
}
}
}
响应示例
状态码为 200 时:
{
"created_at": "2020-09-23 02:38:17.894471458 +0000 UTC",
"replicas": 1,
"ready_replicas": 0,
"description": "this is a test app",
"group_id": "",
"node_ids": [
"9ebd8efb-9fdd-44a1-abda-9cdbc287a867"
],
"id": "66a7fe7e-699a-41b2-9119-f9468a5ed78e",
"name": "app",
"source": "",
"template": {
"configs": {
"host_network": true,
"host_pid": true,
"restart_policy": "Always",
"migration": false,
"toleration_seconds": 300
},
"init_containers": []
"containers": [
{
"name": "container-0",
"image_url": "nginx:alpine",
"npu_type": "",
"resources": {
"limits": {
"cpu": "0.25",
"memory": "500"
},
"requests": {
"cpu": "0.25",
"memory": "500"
}
},
"privileged": false,
"version": ""
}
]
},
"state": "",
"project_id": "05e1aef9040010e22fccc009adecb056",
"updated_at": "2020-09-23 02:38:17.894471458 +0000 UTC",
"api_version": "v3",
"source_id": ""
}
状态码为 400 时:
{
"error_code" : "IEF.100001",
"error_msg" : "PROJECT_ID not found"
}
状态码为 500 时:
{
"error_code" : "IEF.100158",
"error_msg" : "Fail to extract gpu information"
}
错误码
请参见错误码。