应用中创建组件
功能介绍
组件是组成应用的某个业务特性实现,以代码或者软件包为载体,可独立部署在环境下运行。
此API用来在应用中创建组件。
URI
POST /v3/{project_id}/cas/applications/{application_id}/components
请求消息
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
Content-Type |
是 |
String |
消息体的类型(格式),默认取值为“application/json;charset=utf8”。 |
X-Auth-Token |
是 |
String |
调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值。Token获取方式,请参考获取用户Token。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
name |
是 |
String |
组件名称。 由英文字母、数字、中划线(-)或下划线(_)组成,并以英文字母开头,英文字母或者数字结尾,长度为2~64个字符。 |
labels |
否 |
Array of objects |
标签。 容器部署方式部署的组件,可通过标签查询对应工作负载;虚机部署方式部署的组件可配置对应的微服务名称的标签来使用优雅上下线功能。请参考表4。
说明:
“华东二”区域支持设置“标签”参数。 |
runtime_stack |
是 |
Object |
|
environment_id |
否 |
String |
环境ID,可通过获取所有环境接口返回的信息获取。 |
description |
否 |
String |
组件描述。 最大长度为128个字符。 |
source |
是 |
Object |
代码/软件包来源,请参考表30。 |
build |
否 |
Object |
组件构建,容器部署并没有使用镜像时必传,请参考表31。 |
limit_cpu |
否 |
Number |
最大CPU限制,单位为Core。 |
limit_memory |
否 |
Number |
最大内存限制,单位为GiB。 |
request_cpu |
否 |
Number |
申请CPU资源,单位为Core。 |
request_memory |
否 |
Number |
申请内存资源,单位为GiB。 |
version |
是 |
String |
组件版本号,最大长度32,规则为: ^([0-9]+)(.[0-9]+){2,3}$ |
envs |
否 |
Array of objects |
环境变量列表,请参考表27。 |
replica |
是 |
Integer |
实例数。 |
storages |
否 |
Array of objects |
存储,请参考表5。 |
deploy_strategy |
否 |
Object |
组件部署,请参考表8。 |
command |
否 |
Object |
启动命令,请参考表11。 |
post_start |
否 |
Object |
启动后处理,请参考表12。 |
pre_stop |
否 |
Object |
停止前处理,请参考表12。 |
mesher |
否 |
Object |
多语言接入服务网格,当技术栈选择Node.js且绑定CSE引擎时为必选,请参考表13。 |
timezone |
否 |
String |
指定组件运行的时区,比如Asia/Shanghai。 |
jvm_opts |
否 |
String |
jvm参数,例如-Xms256m -Xmx1024m,多个参数以空格间隔,不填则使用默认值。 |
tomcat_opts |
否 |
Object |
tomcat参数,技术栈选择tomcat时生效,请参考表14。 |
logs |
否 |
Array of objects |
日志采集,请参考表20。 |
custom_metric |
否 |
Object |
自定义指标监控,请参考表21。 |
affinity |
否 |
Array of objects |
亲和性,请参考表22。 |
anti_affinity |
否 |
Array of objects |
反亲和性,请参考表22。 |
liveness_probe |
否 |
Object |
组件存活探针,请参考表24。 |
readiness_probe |
否 |
Object |
组件业务探针,请参考表24。 |
refer_resources |
是 |
Array of objects |
关联资源,请参考表25。 |
external_accesses |
否 |
Array of Objects |
外部访问,请参考表33。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
key |
是 |
String |
标签名称。 1到36个字符,只能包含数字、英文字母、下划线(_)、中划线(-)或中文。
须知:
Key的取值不能是系统内置的app、casid或version,否则会导致创建并部署组件时报错。 |
value |
是 |
String |
标签值。 0到43个字符,只能包含数字、英文字母、下划线(_)、点(.)、中划线(-)或中文。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
type |
是 |
String |
数据存储类型。
|
name |
是 |
String |
存储盘名称。 |
parameters |
是 |
Object |
对应各种数据存储类型的信息参数,请参考表6。 |
mounts |
是 |
array of objects |
数据存储挂载路径,请参考表7。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
path |
否 |
String |
主机路径, 适用于HostPath的存储类型。当数据存储类型为HostPath为必选参数。 |
name |
否 |
String |
配置项、密钥或者PVC的名字, 适用于ConfigMap、Secret和PersistentVolumeClaim的存储类型。当数据存储类型为ConfigMap、Secret和PersistentVolumeClaim为必选参数。 |
default_mode |
否 |
Integer |
挂载的权限,十进制格式,例如:384。适用于ConfigMap和Secret的存储类型。 |
medium |
否 |
String |
适用于EmptyDir类型的存储。不传参数为默认的磁盘介质,传参为memory则开启内存存储。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
path |
是 |
String |
挂载路径,数据存储挂载到应用上的路径。例如,/tmp。 |
sub_path |
是 |
String |
挂载路径的子路径。 |
read_only |
是 |
Boolean |
是否只读。
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
type |
是 |
String |
部署类型。
|
rolling_release |
否 |
Object |
滚动部署参数,部署类型为RollingRelease时为必选,请参考表9。 |
gray_release |
否 |
Object |
灰度发布升级,部署类型为GrayRelease时为必选,请参考表10。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
type |
是 |
String |
灰度策略:weight,按灰度流量进行升级。 |
first_batch_weight |
是 |
Integer |
首批灰度流量比例。 |
first_batch_replica |
是 |
Integer |
首批灰度实例数量。 |
remaining_batch |
是 |
Integer |
剩余实例部署批次,首批灰度发布成功之后,剩余实例滚动升级分多少批次完成。 例如:剩余实例数是5,剩余部署批次是3,那么升级剩余实例会按照2:2:1个实例分批升级。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
command |
否 |
Array of String |
运行命令,控制容器运行的输入命令。 |
args |
否 |
Array of String |
运行参数,控制容器运行命令的输入参数。例如:-port=8080,多条参数以换行分隔。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
type |
是 |
String |
处理方式。
|
scheme |
否 |
String |
http请求类型参数:HTTP、HTTPS。 type为http类型时生效。 |
host |
否 |
String |
默认为POD的IP,可以指定自定义的IP。 type为http类型时生效。 |
port |
否 |
Integer |
端口号,type为http类型时生效。 |
path |
否 |
String |
请求路径,type为http类型时生效。 |
command |
否 |
Array of String |
命令列表,type为command类型时生效。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
server_xml |
是 |
String |
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
ip |
是 |
String |
ip地址。 |
hostname |
是 |
Array of String |
主机别名。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
nameservers |
否 |
Array of String |
Pod的DNS服务器的IP地址列表。 |
searches |
否 |
Array of String |
可选,用于在Pod中查找主机名的DNS搜索域的列表。 |
options |
否 |
Array of objects |
可选,对象列表。其中每个对象可能具有name属性(必需)和value属性(可选)。 此属性中的内容将合并到从指定的DNS策略生成的选项,重复的条目将被删除,请参考表17。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
run_as_user |
否 |
Integer |
运行用户,容器以当前用户权限运行,如以root权限运行则填写root用户ID 0。 |
run_as_group |
否 |
Integer |
运行属组,指定所有容器中的进程都以属组运行。 |
capabilities |
否 |
Object |
能力集,请参考表19。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
add |
否 |
Array of String |
为运行用户添加Linux权限。 |
drop |
否 |
Array of String |
移除运行用户Linux权限。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
log_path |
是 |
String |
容器中日志路径。 |
rotate |
是 |
String |
日志转储周期。 |
host_path |
是 |
String |
挂载的主机路径。 |
host_extend_path |
是 |
String |
主机扩展路径,通过扩展主机路径,实现同一个主机路径下区分来自不同容器的挂载:
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
path |
是 |
String |
采集路径,例如:/metrics。 |
port |
是 |
Integer |
采集端口,例如:9090。 |
dimensions |
是 |
String |
监控维度,例如:"cpu_usage,mem_usage"。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
condition |
是 |
String |
是否必须满足。
|
kind |
是 |
String |
亲和类型。
|
weight |
否 |
Integer |
亲和权重,取值范围0~100。 |
match_expressions |
是 |
Array of objects |
匹配条件,请参考表23。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
key |
是 |
String |
匹配标签key值。 |
operation |
是 |
String |
匹配条件。 |
value |
是 |
String |
匹配标签value值。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
type |
是 |
String |
类型:http、tcp、command。 |
delay |
是 |
Integer |
启动后多久开始探测。 |
timeout |
是 |
Integer |
探测超时时间。 |
scheme |
否 |
String |
请求类型:HTTP、HTTPS,type为http类型时生效。 |
host |
否 |
String |
默认为POD的IP,可以指定自定义的IP。type为http类型时生效。 |
port |
否 |
Integer |
端口号,type为http和tcp类型时生效。 |
path |
否 |
String |
请求路径,type为http类型时生效。 |
command |
否 |
Array of String |
命令列表,type为command类型时生效。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
id |
是 |
String |
资源ID。 |
type |
是 |
String |
资源类型:
|
parameters |
否 |
Object |
资源参数,请参考表26。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
reference_type |
是 |
String |
引用类型。
|
name |
是 |
String |
配置项或密钥的名称。 |
key |
否 |
String |
配置项或密钥的键值。 |
optional |
否 |
Boolean |
配置项或密钥的key是否必须存在。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
name |
是 |
String |
技术栈名称。 |
type |
是 |
String |
技术栈类型,支持Java、Tomcat、Nodejs、Php、Docker、Python。 当部署模式为虚机部署时,仅支持Java、Tomcat、Nodejs;容器部署上述类型都支持。 |
version |
是 |
String |
技术栈版本。 |
deploy_mode |
是 |
String |
部署模式。
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
kind |
是 |
String |
组件来源类型。
|
version |
否 |
String |
版本号。 |
url |
否 |
String |
包地址,类型为package和image时需要添加。 |
storage |
否 |
String |
存储方式,支持镜像仓库swr、软件仓库swr、软件开发生产线codearts和对象存储obs,类型为package和image时需要添加。 |
auth |
否 |
String |
认证方式,支持iam、none,默认是iam。 |
repo_auth |
否 |
String |
授权名称,在授权列表获取,请参考获取仓库授权列表。 |
repo_namespace |
否 |
String |
代码仓库命名空间。 |
repo_ref |
否 |
String |
代码分支或者Tag,默认是master。 |
repo_type |
否 |
String |
代码仓类型,支持GitHub、BitBucket、GitLab。 |
web_url |
否 |
String |
代码跳转链接,例如:https://github.com/example/demo.git。 |
repo_url |
否 |
String |
代码仓url,例如:https://github.com/example/demo.git。 |
commit_id |
否 |
String |
代码仓库中,commit id是每次提交的唯一标识符,用于识别和引用特定的提交。 长度为8到40个字符,以小写字母或数字开头。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
build_cmd |
否 |
String |
编译命令。默认:
|
dockerfile_path |
否 |
String |
dockerfile地址,默认是根目录./。 |
artifact_namespace |
否 |
String |
构建归档组织,默认cas_{project_id}。 |
cluster_id |
是 |
String |
指定构建集群的id。 |
node_label_selector |
否 |
Map<String, String> |
key是标签的键,value是标签的值。 |
environment_id |
否 |
String |
环境ID。获取方法,请参考获取所有环境。 |
响应消息
参数 |
参数类型 |
描述 |
---|---|---|
job_id |
String |
任务ID。 |
component_id |
String |
应用组件ID。 |
请求示例
- 场景一:CCE容器环境下创建组件
创建名为mycomponent的组件。组件部署使用1.2.0版本的Java技术栈,组件来源选择存储在OBS下bucket00001桶里的weather-1.0.0.jar包,部署使用的资源为id为fd92bfab-73b3-11ee-90f0-0255ac1001b3的云容器引擎。
{ "name": "mycomponent", "description": "", "labels": [ { "key": "com-key", "value": "com-value" } ], "version": "2023.1102.17105", "environment_id": "b489f7b4-2539-45a1-ba71-4728961434ca", "runtime_stack": { "name": "OpenJDK8", "version": "1.2.0", "type": "Java", "deploy_mode": "container" }, "source": { "kind": "package", "url": "obs://bucket0001/weather-1.0.0.jar", "version": "", "storage": "obs" }, "tomcat_opts": { "server_xml": "" }, "refer_resources": [ { "id": "fd92bfab-73b3-11ee-90f0-0255ac1001b3", "type": "cce", } ], "replica": 1, "limit_cpu": 0.25, "limit_memory": 0.5, "request_cpu": 0.25, "request_memory": 0.5 }
- 场景二:ECS虚拟机环境下创建组件
创建名为mycomponent的组件。组件部署使用1.2.0版本的Java技术栈,组件来源选择存储在OBS下bucket00001桶里的weather-1.0.0.jar包,部署使用的资源为id为67835bb3-1235-4cc9-be71-becbb2b4ca0d的弹性云服务器。
{ "name": "mycomponent", "description": "", "labels": [ { "key": "com-key", "value": "com-value" } ], "version": "2023.1102.17540", "environment_id": "9a075df5-104f-4e21-9dbf-ffc3572effdf", "runtime_stack": { "name": "OpenJDK8", "version": "1.2.0", "type": "Java", "deploy_mode": "virtualmachine" }, "source": { "kind": "package", "url": "obs://bucket0001/weather-1.0.0.jar", "version": "", "storage": "obs" }, "tomcat_opts": { "server_xml": "" }, "refer_resources": [ { "id": "23598aa9-7a6b-43c7-a53a-39ca5e7290fb", "type": "ecs" } ], "replica": 1, "external_accesses": [ { "protocol": "http", "address": "192.168.0.169", "forward_port": 80 } ] }
响应示例
{ "job_id": "JOB8be53b2a-af9a-4e2b-8505-096688a52237", "component_id": "b8702b0f-94d3-4822-98a1-56815632a0a0" }
状态码
状态码 |
描述 |
---|---|
200 |
操作成功 |
400 |
错误的请求 |
404 |
请求对象不存在 |
500 |
内部错误 |
错误码
错误码格式为:SVCSTG.00100.[Error_ID],例如:SVCSTG.00100400。错误码说明请参考ServiceStage错误码。