更新时间:2024-10-16 GMT+08:00

创建组件实例

功能介绍

此API用来创建组件实例。

URI

POST /v2/{project_id}/cas/applications/{application_id}/components/{component_id}/instances

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

租户项目ID。获取方法,请参考获取项目ID

application_id

String

应用ID。获取方法,请参考获取所有应用

component_id

String

组件ID。获取方法,请参考获取应用所有组件

请求消息

表2 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

String

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

X-Auth-Token

String

调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值。Token获取方式,请参考获取用户Token

表3 请求Body参数

参数

是否必选

参数类型

描述

name

String

应用组件实例名称。

由小写英文字母、数字、中划线(-)组成,并以小写英文字母开头,小写英文字母或者数字结尾,长度为2~63个字符。

environment_id

String

环境ID。

replica

Integer

实例副本数。

flavor_id

String

资源规格,可查询获取所有支持的应用资源规格接口获取系统预定义好的资源规格。

如需自定义资源规格,格式为:CUSTOM-xxG:xxm-xxm:xxGi-xxGi。其中:

  • xxG表示给组件实例分配的存储的大小,为保留字段,当前未生效,可以指定为一个固定的数字。
  • xxm-xxm用于指定给组件实例分配的cpu最大核数和最小核数。
  • xxGi-xxGi用于指定给组件实例分配的最大内存和最小内存。

例如,CUSTOM-10G:0.5m-0.25m:1.6Gi-0.8Gi,表示给组件实例分配的CPU核数最大为0.5核,最小为0.25核,分配的最大内存为1.6Gi,最小为0.8Gi。

artifacts

Map<String, Object>

组件部署件。key为组件名,对于Docker多容器场景,key为容器名称。请参考表21

当组件的source参数指定软件包来源时,该参数可以不选,默认继承组件的软件包来源。否则,该参数是必选项。

version

String

应用组件版本号,满足版本语义,如1.0.0。

configuration

Object

配置参数,如设置环境变量,部署配置, 运维监控等, 默认空。请参考表4

description

String

描述。

最大长度为128个字符。

external_accesses

Array of objects

外网访问,请参考表22

refer_resources

Array of objects

部署资源,请参考表23

表4 configuration

参数

是否必选

参数类型

描述

env

Array of objects

环境变量,请参考表5

storage

Array of objects

数据存储配置,请参考表6

strategy

Object

升级策略,请参考表7

lifecycle

Object

生命周期,请参考表8

scheduler

Object

调度策略,请参考表9

probes

Object

健康检查,请参考表10

container_spec

Object

容器信息,请看考表24

表5 environment

参数

是否必选

参数类型

描述

name

String

环境变量名。

由字母、数字、下划线、中划线或者点号组成,不能以数字开头,且长度为1~64个字符。

value

String

环境变量值。

表6 storage

参数

是否必选

参数类型

描述

type

String

存储类型,取值为:

  • HostPath:主机路径挂载
  • EmptyDir:临时路径挂载
  • ConfigMap:配置项挂载
  • Secret:密钥挂载
  • PersistentVolumeClaim:云存储挂载

parameters

Object

存储的参数,请参考表19

mounts

Array of objects

挂载到容器的目录,请参考表20

表7 strategy

参数

是否必选

参数类型

描述

upgrade

String

升级策略,默认为RollingUpdate。取值为Recreate和RollingUpdate,分别为替换升级和滚动升级。

表8 lifecycle

参数

是否必选

参数类型

描述

entrypoint

Object

启动命令,请参考表16

post-start

Object

启动后处理,请参考表17

pre-stop

Object

停止前处理,请参考表17

表9 scheduler

参数

是否必选

参数类型

描述

affinity

Object

亲和性,请参考表15

anti-affinity

Object

反亲和性,请参考表15

表10 probes

参数

是否必选

参数类型

描述

livenessProbe

Object

组件存活探针,请参考表11

readinessProbe

Object

组件业务探针,请参考表11

表11 probes_object

参数

是否必选

参数类型

描述

type

String

取值可以为http、tcp或command。对应的检查方式分别为HTTP请求检查,TCP端口检查和执行命令检查。

parameters

Object

检查参数。

  • type为http,请参考表12
  • type为tcp,请参考表14
  • type为command,请参考表13

delay

integer

表示启动后多久开始探测。

timeout

integer

表示探测超时时间。

表12 probes_param_http

参数

是否必选

参数类型

描述

scheme

String

HTTP或者HTTPS。

host

String

默认为POD的IP。可以指定自定义的IP。

port

integer

端口。

path

String

请求路径。

表13 probes_param_command

参数

是否必选

参数类型

描述

command

Array of String

命令列表

表14 probes_param_tcp

参数

是否必选

参数类型

描述

port

integer

端口

表15 scheduler_affinity

参数

是否必选

参数类型

描述

az

Array of String

az名称列表

node

Array of String

节点私有IP列表

application

Array of String

组件实例名列表

表16 lifecycle_entrypoint

参数

是否必选

参数类型

描述

command

Array of String

可执行的命令。

args

Array of String

运行参数。

表17 lifecycle_process

参数

是否必选

参数类型

描述

type

String

取值为command或者http。command为执行命令行,http为发送http请求。

parameters

Object

启动后处理或者停止前处理参数。请参考表18

表18 lifecycle_process_parameters

参数

是否必选

参数类型

描述

command

Array of String

命令参数,比如["sleep", "1"]。适用于command类型。

host

String

默认为POD实例的IP地址。也可以自己指定。适用于http类型。

port

integer

端口号。适用于http类型。

path

String

请求url。适用于http类型。

表19 storage_parameters

参数

是否必选

参数类型

描述

path

String

主机路径, 适用于HostPath的存储类型。

name

String

配置项或者密钥的名字, 适用于ConfigMap和Secret的存储类型。

defaultMode

Integer

挂载的权限,十进制格式,如384。

medium

String

适用于EmptyDir类型的存储。不传参数为默认的磁盘介质,传参为memory则开启内存存储。

表20 storage_mounts

参数

是否必选

参数类型

描述

path

String

挂载路径,记录挂载的磁盘路径。

subPath

String

记录挂载磁盘的子路径。

readOnly

boolean

挂载的磁盘权限为只读或者读写。

表21 artifact

参数

是否必选

参数类型

描述

storage

String

存储方式,支持软件仓库swr、镜像仓库swr、对象存储obs、软件发布库codearts。

type

String

类别。

  • 虚拟机部署支持软件包package。
  • 容器部署支持软件包package、镜像包image。

url

String

软件包/镜像地址。对于基于虚机部署的组件,值为软件包的地址。对于基于容器部署的组件,值为镜像的地址或者“组件名:v${index}”,后者表示使用组件来源中的源码或者软件包自动构建生成的镜像。

auth

String

认证方式,支持iam和none,默认为iam。

version

String

版本号。

properties

Map<String, Object>

属性。

表22 external_accesses

参数

是否必选

参数类型

描述

protocol

String

协议,支持http、https。

address

String

访问地址。

forward_port

integer

端口号。

表23 refer_resources

参数

是否必选

参数类型

描述

id

String

资源ID。

如果type为ecs的时候,该字段的值固定为“Default”。

type

String

基础资源:cce、ecs、as。

可选资源:rds、dcs、elb、cse等其他类型。

refer_alias

String

应用别名,dcs时才提供,支持“distributed_session”、“distributed_cache”、“distributed_session, distributed_cache”。默认值是“distributed_session, distributed_cache”。

parameters

Map<String, Object>

引用资源参数。

须知:
  • 当type是cce的时候,该参数必填,需要指定部署组件所在的集群的命名空间,比如{"namespace": "default"}
  • 当type为ecs的时候,该参数必填,需要指定组件部署在哪些主机上,比如{"hosts":["04d9f887-9860-4029-91d1-7d3102903a69", "04d9f887-9860-4029-91d1-7d3102903a70"]}}。
表24 container_spec

参数

是否必选

参数类型

描述

containers

Array of Objects

容器信息,参考表25

type

String

工作负载类型:

  • deployment,无状态工作负载。
  • statefulset,有状态工作负载。
表25 container

参数

是否必选

参数类型

描述

name

String

容器名称。

size

Object

资源规格,请参考表26

env

Array of Object

环境变量,请参考表5

storage

Array of objects

数据存储配置,请参考表6

lifecycle

Object

生命周期,请参考表8

probes

Object

健康检查,请参考表10

表26 size

参数

是否必选

参数类型

描述

id

String

资源规格,可查询获取所有支持的应用资源规格接口获取系统预定义好的资源规格。

如需自定义资源规格,格式为:CUSTOM-xxG:xxm-xxm:xxGi-xxGi。其中:

  • xxG表示给组件实例分配的存储的大小,为保留字段,当前未生效,可以指定为一个固定的数字。
  • xxm-xxm用于指定给组件实例分配的cpu最大核数和最小核数。
  • xxGi-xxGi用于指定给组件实例分配的最大内存和最小内存。

例如,CUSTOM-10G:0.5m-0.25m:1.6Gi-0.8Gi,表示给组件实例分配的CPU核数最大为0.5核,最小为0.25核,分配的最大内存为1.6Gi,最小为0.8Gi。

响应消息

表27 响应参数

参数

参数类型

描述

job_id

String

Job ID,用于查询创建任务信息。

instance_id

String

应用组件实例ID。

请求示例

创建名称为component-instance-name的组件实例,组件实例运行环境选择ID为6e763000-9128-4a9d-adea-34c42cc5344d的环境,组件部署件选择存储在obs下myapp桶中的demo.jar包,部署资源选择id为b6862a62-d916-11e9-bdf1-0255ac101fd9的CCE和id为8c0a45cc-626f-4d65-8257-507ee059aa9a的ELB。

{
    "name": "component-instance-name", 
    "environment_id": "6e763000-9128-4a9d-adea-34c42cc5344d", 
    "flavor_id": "MICRO-5G:0.5m:1G", 
    "replica": 1, 
    "artifacts": {
        "container-name": {
            "storage": "obs", 
            "type": "package",            
            "url": "obs://myapp/demo.jar",
	    "properties": {
				"bucket": "myapp",
				"key": "demo.jar",
				"endpoint": "https://obs.region_id.external_domain_name.com"
			},
            "auth": "iam"
        }
    }, 
    "version": 1, 
    "description": "instance desc", 
    "configuration": {
        "env": [
            {
                "name": "log-level", 
                "value": "warn"
            }
        ]
    }, 
    "refer_resources": [
        {
            "id": "b6862a62-d916-11e9-bdf1-0255ac101fd9", 
            "type": "cce", 
            "parameters": {
                "namespace": "default"
            }
        }, 
        {
            "id": "8c0a45cc-626f-4d65-8257-507ee059aa9a", 
            "type": "elb"
        }
    ]
}

响应示例

{
    "instance_id": "89f5baf5-efe4-4f12-9c0d-734d2af5a184", 
    "job_id": "JOB66761060-f209-407c-a093-4df6f531b9dc"
}

状态码

状态码

描述

200

操作成功

400

错误的请求

404

请求对象不存在

500

内部错误

错误码

错误码格式为:SVCSTG.00100.[Error_ID],例如:SVCSTG.00100400。错误码说明请参考ServiceStage错误码