更新时间:2023-11-01 GMT+08:00
分享

更新服务

功能介绍

更新一个服务

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

URI

PUT /v2/{project_id}/edgemgr/services/{service_id}

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目ID

service_id

String

服务ID

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

String

消息体的类型(格式),默认取值为“application/json”

X-Auth-Token

String

用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。

ief-instance-id

String

铂金版实例ID

表3 请求Body参数

参数

是否必选

参数类型

描述

service

ServiceReqDetail object

服务详情

表4 ServiceReqDetail

参数

是否必选

参数类型

描述

meta_data

SvcMetadata object

服务详情

spec

SvcSpec object

服务的动态属性

表5 SvcMetadata

参数

是否必选

参数类型

描述

labels

Map<String,String>

自定义标签属性列表

name

String

服务名称,只允许英文小写字母、数字、中划线,最大长度64,英文小写字母开头,数字或小写字母结尾

表6 SvcSpec

参数

是否必选

参数类型

描述

cluster_ip

String

虚拟服务IP地址

external_ips

Array of strings

外部IP列表 --- 暂不支持

external_name

String

外部域名 --- 暂不支持

ports

Array of SvcPort objects

服务需要暴露的端口列表

selector

Map<String,String>

标签选择器,将选择具有指定Label标签的Pod作为管理范围

type

String

服务的类型

表7 SvcPort

参数

是否必选

参数类型

描述

name

String

服务端口必须进行命名,而且名称只允许是{protocol}-{suffix}这种格式,其中{protocol}可以是tcp、http等,IEF根据在端口上定义的协议来提供对应的路由能力。例如“name:http-0”和“name:tcp-0”是合法的端口名,“name:http2forecast”是非法的端口号。

node_port

String

当spec.type=NodePort时,指定映射到物理机的端口号

port

String

服务监听的端口号

protocol

String

具体的协议,比如TCP

target_port

String

需要转发到后端Pod的端口号

响应参数

状态码: 200

表8 响应Body参数

参数

参数类型

描述

service

ServiceRespDetail object

服务详情

表9 ServiceRespDetail

参数

参数类型

描述

created_at

String

创建时间

id

String

服务ID

meta_data

SvcMetadata object

服务详情

project_id

String

租户ID

spec

SvcSpec object

服务的动态属性

updated_at

String

更新时间

表10 SvcMetadata

参数

参数类型

描述

labels

Map<String,String>

自定义标签属性列表

name

String

服务名称,只允许英文小写字母、数字、中划线,最大长度64,英文小写字母开头,数字或小写字母结尾

表11 SvcSpec

参数

参数类型

描述

cluster_ip

String

虚拟服务IP地址

external_ips

Array of strings

外部IP列表 --- 暂不支持

external_name

String

外部域名 --- 暂不支持

ports

Array of SvcPort objects

服务需要暴露的端口列表

selector

Map<String,String>

标签选择器,将选择具有指定Label标签的Pod作为管理范围

type

String

服务的类型

表12 SvcPort

参数

参数类型

描述

name

String

服务端口必须进行命名,而且名称只允许是{protocol}-{suffix}这种格式,其中{protocol}可以是tcp、http等,IEF根据在端口上定义的协议来提供对应的路由能力。例如“name:http-0”和“name:tcp-0”是合法的端口名,“name:http2forecast”是非法的端口号。

node_port

String

当spec.type=NodePort时,指定映射到物理机的端口号

port

String

服务监听的端口号

protocol

String

具体的协议,比如TCP

target_port

String

需要转发到后端Pod的端口号

状态码: 400

表13 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述信息

状态码: 500

表14 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述信息

请求示例

更新服务,暴露的端口为“8888”,转发到后端Pod的端口号为“80”,TCP协议。

{
  "service" : {
    "meta_data" : {
      "name" : "service-example",
      "labels" : { }
    },
    "spec" : {
      "cluster_ip" : "None",
      "external_ips" : [ ],
      "external_name" : "",
      "ports" : [ {
        "name" : "http-0",
        "port" : "8888",
        "target_port" : "80",
        "protocol" : "TCP",
        "node_port" : ""
      } ],
      "selector" : {
        "app" : "ief-nginx"
      },
      "type" : ""
    }
  }
}

响应示例

状态码: 200

更新成功

{
  "service" : {
    "id" : "81acf9ff-de6d-4736-8d1a-f43bb058e79d",
    "project_id" : "e78acc02d9d141eda5ca8e88fa35f6f8",
    "meta_data" : {
      "name" : "service-example"
    },
    "spec" : {
      "selector" : {
        "app" : "ief-nginx"
      },
      "ports" : [ {
        "name" : "http-0",
        "protocol" : "TCP",
        "port" : "8888",
        "target_port" : "80"
      } ],
      "cluster_ip" : "None"
    },
    "created_at" : "2020-07-08 01:23:25.845332209 +0000 UTC",
    "updated_at" : "2020-07-08 01:23:25.845332209 +0000 UTC"
  }
}

状态码

状态码

描述

200

更新成功

400

错误响应

500

错误响应

错误码

请参见错误码

相关文档