调用InsertK8sApplication接口在容器服务K8s集群或Serverless K8s集群中创建应用。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

请求头

该接口使用公共请求头,无特殊请求头。请参见公共请求参数文档。

请求语法

POST /pop/v5/k8s/acs/create_k8s_app HTTP/1.1

请求参数

名称 类型 位置 是否必选 示例值 描述
AppName String Query doc-test

应用名称。必须以字母开头,支持数字、字母和短划线(-),最多支持36个字符。

ClusterId String Query c9cd****

集群ID,可调用ListCluster接口获取,详情请参见ListCluster

IntranetTargetPort Integer Query 80

内网SLB后端端口,也是应用的服务端口,范围为1~65535。

IntranetSlbPort Integer Query 80

内网SLB前端端口,范围为1~65535。

ImageUrl String Query registry.cn-beijing.aliyuncs.com/****_test/****-cons****:1.0

镜像地址,当设置PackageTypeImage时,此参数项为必填。

ApplicationDescription String Query 生产环境应用

应用描述信息

RepoId String Query ced********

镜像的仓库ID

Replicas Integer Query 4

应用实例数

LimitCpu Integer Query 4

应用运行过程中,应用实例的CPU限额,单位:核数。

LimitMem Integer Query 2

应用运行过程中,应用实例的内存限额,单位:MB。

RequestsCpu Integer Query 0

应用创建时,应用实例的CPU限额,单位:核数。设置为0时表示不限制。

RequestsMem Integer Query 0

应用创建时,应用实例的内存限额,单位:MB。设置为0时表示不限制。

Command String Query ls

设置的命令,如果设置会在镜像启动时,替代镜像中的启动命令。

CommandArgs String Query -lh

与命令组合使用,命令的参数是JsonArray字符串,格式如:[{"argument":"-c"},{"argument":"test"}]。其中-ctest为需要设置的两个参数。

PostStart String Query {\"exec\":{\"command\":[\"ls\",\"/\"]}}"

启动后执行脚本,格式如:{"exec":{"command":["cat","/etc/group"]}}

如果设置为“”或者{}表示删除,不设置表示忽略。

PreStop String Query {\"exec\":{\"command\":[\"ls\",\"/\"]}}"

停止前执行脚本,示例格式:{"tcpSocket":{"host":"", "port":8080}}

如果设置为“”或者{}表示删除,不设置表示忽略。

InternetSlbId String Query a3d4********

公网SLB ID,不配置时,EDAS会自动为用户新购SLB。

InternetSlbProtocol String Query TCP

公网SLB协议,支持TCP、HTTP和HTTPS协议。

InternetSlbPort Integer Query 80

公网SLB前端端口,范围为1~65535。

InternetTargetPort Integer Query 8080

私网SLB后端端口,也是应用的服务端口,范围为1~65535。

Envs String Query [{"name":"x1","value":"y1"},{"name":"x2","valueFrom":{"configMapKeyRef":{"name":"my-config","key":"y2"}}},{"name":"x3","valueFrom":{"secretKeyRef":{"name":"my-secret","key":"y3"}}}]

部署环境变量,格式需要符合JSON对象数组。支持三种类型的环境变量,分别是普通环境变量,K8s ConfigMap环境变量,K8s Secret环境变量。普通环境变量格式如下所示:

{"name":"x", "value": "y"}

ConfigMap环境变量配置可以将指定的ConfigMap中对应的key的值注入到容器的环境变量中,配置的格式如下所示:

{ "name": "x2", "valueFrom": { "configMapKeyRef": { "name": "my-config", "key": "y2" } } }

Secret环境变量配置可以将指定的Secret中对应的key的值注入到容器的环境变量中,配置的格式如下所示:

{ "name": "x3", "valueFrom": { "secretKeyRef": { "name": "my-secret", "key": "y3" } } }
说明 如果要取消该配置,需设置一个空JSON数组“ ”来表示不做配置。
IntranetSlbId String Query ae93********

私网SLB ID,不配置时,EDAS会自动为用户新购SLB。

IntranetSlbProtocol String Query TCP

私网SLB协议,支持TCP、HTTP和HTTPS协议。

Liveness String Query {"failureThreshold": 3,"initialDelaySeconds": 5,"successThreshold": 1,"timeoutSeconds": 1,"tcpSocket":{"host":"", "port":8080}}

容器存活状态监测 ,格式如{"failureThreshold": 3,"initialDelaySeconds": 5,"successThreshold": 1,"timeoutSeconds": 1,"tcpSocket":{"host":"", "port":8080}}

如果设置为“”或者{}表示删除,不设置表示忽略。

Readiness String Query {"failureThreshold": 3,"initialDelaySeconds": 5,"successThreshold": 1,"timeoutSeconds": 1,"httpGet": {"path": "/consumer","port": 8080,"scheme": "HTTP","httpHeaders": [{"name": "test","value": "testvalue"}]}}

容器业务状态检查,如果检查失败,经过K8s Service的流量将不转入到改容器,格式如:{"failureThreshold": 3,"initialDelaySeconds": 5,"successThreshold": 1,"timeoutSeconds": 1,"httpGet": {"path": "/consumer","port": 8080,"scheme": "HTTP","httpHeaders": [{"name": "test","value": "testvalue"}]}}

如果设置为“”或者{}表示删除,不设置表示忽略。

NasId String Query dfs23****

挂载的NAS的ID,必须与集群在同一个地域。它必须有可用的挂载点创建额度,或者它的挂载点已经在VPC内的交换机上。如果不填,且存在mountDescs字段,则默认将自动购买一个NAS并挂载到VPC内的交换机上。

MountDescs String Query [{"nasPath": "/k8s","mountPath": "/mnt"},{"nasPath": "/files","mountPath": "/app/files"}]

挂载配置描述,为一个序列化的JSON。例如:[{"nasPath": "/k8s","mountPath": "/mnt"},{"nasPath": "/files","mountPath": "/app/files"}]。其中,nasPath是指文件储存路径;mountPath是指挂载到容器内的路径。

StorageType String Query Performance

目前只支持SSD型。

LocalVolume String Query [{"type":"","nodePath":"/localfiles","mountPath":"/app/files"},{"type":"Directory","nodePath":"/mnt","mountPath":"/app/storage"}]

宿主机文件挂载到容器内的配置。例如:[{"type":"","nodePath":"/localfiles","mountPath":"/app/files"},{"type":"Directory","nodePath":"/mnt","mountPath":"/app/storage"}]。其中:

  • nodePath为宿主机路径。
  • mountPath为容器内的路径。
  • type为挂载类型。
Namespace String Query default

K8s集群的命名空间,它将决定您的应用部署在哪个K8s命名空间。默认为default。

LogicalRegionId String Query cn-shenzhen:beta****

EDAS命名空间对应ID,非默认命名空间须填写。

PackageType String Query WAR

应用包类型。可选参数值包含:FatJar、WAR和Image。

PackageUrl String Query https://e***.oss-cn-beijing.aliyuncs.com/s***-1.0-SNAPSHOT-spring-boot.jar

部署包地址。通过FatJar或WAR包部署的应用需要配置部署包地址。

说明 EDAS POP API的Java或者Python SDK需要2.44.0或以上版本。
PackageVersion String Query 20200720

部署包的版本号,WAR和FatJar类型必填。请自定义它的含义。

说明 EDAS POP API的Java或者Python SDK需要2.44.0或以上版本。
JDK String Query Open JDK 8

部署的包依赖的JDK版本。可选的参数值为Open JDK 7和Open JDK 8。镜像不支持。

WebContainer String Query apache-tomcat-7.0.91

部署包依赖的Tomcat版本。适用于通过WAR包部署的Spring Cloud和Dubbo应用,镜像不支持此参数。

EdasContainerVersion String Query 3.5.9

部署的包依赖的 EDAS-Container 版本。

说明 使用镜像部署时不支持此参数。
UriEncoding String Query GBK

URI编码方式,支持ISO-8859-1、GBK、GB2312和UTF-8。

说明 应用配置不设置该参数,使用Tomcat默认值。
UseBodyEncoding Boolean Query false

useBodyEncodingForURI是否启用。

说明 应用配置不设置该参数,使用默认值false。
RequestsmCpu Integer Query 2

应用创建时,应用实例的CPU限额,单位:核数。

LimitmCpu Integer Query 0

应用运行过程中,应用实例的CPU限额。 单位:核数,设置为0表示不限制。

RuntimeClassName String Query runc

容器运行时类型,仅适用于使用安全沙箱容器的集群。

DeployAcrossZones String Query true

是否将应用实例分布到多可用区。true代表是,其他值为否。

Timeout Integer Query 60

变更流程超时时间,单位:秒。

EnableAhas Boolean Query true

是否接入AHAS。

WebContainerConfig String Query {"useDefaultConfig":false,"contextInputType":"custom","contextPath":"hello","httpPort":8088,"maxThreads":400,"uriEncoding":"UTF-8","useBodyEncoding":true,"useAdvancedServerXml":false}

Tomcat容器配置,设置为""或"{}"表示删除配置:

  • useDefaultConfig:是否使用自定义配置,若为true,则表示不使用自定义配置,若为false,则表示使用自定义配置。若不使用自定义配置,则下面的参数配置将不会生效。
  • contextInputType:选择应用的访问路径。
    • war:无需填写自定义路径,应用的访问路径是WAR包名称。
    • root:无需填写自定义路径,应用的访问路径是/
    • custom:需要在下面的自定义路径中填写自定义的路径。
  • contextPath:自定义路径,当contextInputType类型为custom时,才需要配置此参数。
  • httpPort:端口范围为1024~65535,小于1024的端口需要Root权限才能操作。因为容器配置的是Admin权限,所以请填写大于1024的端口。如果不配置,则默认为8080。
  • maxThreads:配置连接池的连接数大小,默认大小是400。
    说明 此项配置对应用性能有很大影响,请由专业人士配置。
  • uriEncoding:Tomcat的编码格式,包括UTF-8、ISO-8859-1、GBK和GB2312。如果不设置则默认为ISO-8859-1。
  • useBodyEncoding:是否使用BodyEncoding for URL。
  • useAdvancedServerXml:是否使用高级配置自定义设置server.xml文件,当上述参数类型和具体参数无法满足您的需求时,可以选中使用高级设置,直接对Tomcat的Server.xml文件进行编辑。
  • serverXml:高级配置中自定义设置的server.xml文本文件内容,当useAdvancedServerXml为true时生效。
JavaStartUpConfig String Query {"InitialHeapSize":{"original":512,"startup":"-Xms512m"},"MaxHeapSize":{"original":1024,"startup":"-Xmx1024m"}}

Java启动参数用于在Java应用启动时配置启动参数。可配置:内存配置、应用、GC策略、工具、服务注册和发现配置和自定义等配置,正确配置这些参数有助于降低垃圾回收(GC)开销,从而缩短服务器响应时间并提高吞吐量。参数格式为JSON字符串:original为配置值,startup为启动参数,系统将自动拼接所有的startup作为应用程序的Java启动参数。设置为"""{}"表示删除配置。

SlsConfigs String Query [{"logstore":"thisisanotherfilelog","type":"file","logDir":"/var/log/*"},{"logstore":"","type":"stdout","logDir":"stdout.log"},{"logstore":"thisisafilelog","type":"file","logDir":"/tmp/log/*"}]

Logstore配置,设置为"""{}"表示删除配置:

  • Configs:
    • type:采集类型,文件类型为file,标准输出类型为stdout。
    • Logstore:Logstore名称。请确保Logstore名称在同一个集群中不重复,其命名应符合规则。
      • 日志库名称仅支持小写字母、数字、短划线(-)和下划线(_)。
      • 必须以小写字母和数字开头和结尾。
      • 名称长度为3~63个字符。若为空,则由系统自动生成。
    • LogDir:若为标准输出类型,则采集路径为stdout.log,若为文件类型,则为采集的文件路径,支持通配,采集路径应符合正则:^/(.+)/(.*)^/$
IsMultilingualApp Boolean Query true

是否为多语言应用。

DeployAcrossNodes String Query true

是否将应用实例分布到多个节点。true代表是,其他值为否。

PvcMountDescs String Query [{"pvcName":"nas-pvc-1","mountPaths":[{"mountPath":"/usr/share/nginx/data"},{"mountPath":"/usr/share/nginx/html","readOnly":true}]}]

配置K8s PVC(PersistentVolumeClaim)挂载,支持将K8s PVC卷挂载到指定的容器目录。PvcMountDescs的配置参数说明如下:

  • pvcName:PVC卷名称,PVC卷必须已经存在,且处于Bound状态。
  • mountPaths:挂载目录列表,支持配置多个挂载目录。每个挂载目录支持两个配置参数。
    • mountPath:挂载路径,以正斜线(/)开头的容器绝对路径。
    • readOnly:挂载模式,true为只读,false为可读写,默认为false。
ConfigMountDescs String Query [{"name":"nginx-config","type":"ConfigMap","mountPath":"/etc/nginx"},{"name":"tls-secret","type":"secret","mountPath":"/etc/ssh"}]

配置K8s ConfigMap和Secret挂载,支持将ConfigMap和Secret挂载到指定的容器目录。ConfigMountDescs的配置参数说明如下:

  • name:ConfigMap或Secret的名称。
  • type:配置类型,支持ConfigMap和Secret两种类型。
  • mountPath:挂载路径,以正斜线(/)开头的容器绝对路径。
CsClusterId String Query abcdefg

只有在用户使用一个从未导入的集群来创建应用时,才需要指定csClusterId。

EnableAsm Boolean Query false

只有在用户使用一个从未导入的集群来创建应用,同时开启ASM时,才需要设置这个值为true。

EnvFroms String Query [{"name":"appname","valueFrom":{"configMapKeyRef":{"name":"appconf","key":"name"}}}]

配置K8s EnvFrom类型的环境变量,将指定的ConfigMap或Secret挂载到指定目录,每个key对应目录下的一个文件,文件的内容为该key对应的value。

EnvFroms的配置参数说明如下:

  • configMapRef:ConfigMap引用,该字段包括以下参数:
    • name:ConfigMap名称。
  • secretRef:Secret引用,该字段包括以下参数:
    • name:Secret名称。
EmptyDirs String Query [{"mountPath":"/app-log","subPathExpr":"$(POD_IP)"},{"readOnly":true,"mountPath":"/etc/nginx"}]

配置K8s emptyDir挂载,支持将emptyDir卷挂载到指定的容器目录。EmptyDirs的配置参数说明如下:

  • mountPath:容器挂载路径,必填。
  • readOnly:是否只读,可选,true为只读,false为读写,默认为false。
  • subPathExpr:子目录表达式,可选。
BuildPackId String Query -1

配置edas container版本,与edasContainerVersion字段冲突。建议使用edasContainerVersion字段。

返回数据

名称 类型 示例值 描述
ApplicationInfo Struct

应用详情

AppId String e83acea6-****-47e1-96ae-c0e95377****

应用ID,可通过调用ListApplication接口获取,详情请参见ListApplication

AppName String test

应用名称

ChangeOrderId String cd65b247-****-475b-ad4b-7039040d625c

变更流程ID,可调用GetChangeOrderInfo接口获取,详情请参见GetChangeOrderInfo

ClusterType Integer 5

应用集群环境类型如下:

  • 0:普通Docker集群
  • 1:Swarm集群(已下线)
  • 2:ECS集群
  • 3:EDAS自建K8s集群(已下线)
  • 4:Pandora自动注册应用集群类型
  • 5:容器服务K8s集群和Serverless K8s集群
Dockerize Boolean true

是否为Docker应用。

  • true:是
  • false:否
EdasId String 1172****6608****

用户账号ID

Owner String zp

负责人

RegionId String cn-beijing

地域ID

UserId String edas_test****@aliyun****.com

用户主账号

Code Integer 200

接口状态或POP错误码

Message String success

附加信息

RequestId String b197-40ab-9155-****

请求ID

示例

请求示例

POST /pop/v5/k8s/acs/create_k8s_app HTTP/1.1
公共请求头
{
"AppName": "doc-test",
"ClusterId": "c9cd****"
}

正常返回示例

XML格式

<InsertK8sApplicationResponse>
  <RequestId>b197-40ab-9155-****</RequestId>
  <Message>success</Message>
  <ApplicationInfo>
        <Dockerize>true</Dockerize>
        <EdasId>1172****6608****</EdasId>
        <Owner>zp</Owner>
        <AppId>e83acea6-****-47e1-96ae-c0e95377****</AppId>
        <UserId>edas_test****@aliyun****.com</UserId>
        <ChangeOrderId>cd65b247-****-475b-ad4b-7039040d625c</ChangeOrderId>
        <RegionId>cn-beijing</RegionId>
        <ClusterType>5</ClusterType>
        <AppName>test</AppName>
  </ApplicationInfo>
  <Code>200</Code>
</InsertK8sApplicationResponse>

JSON格式

{
    "InsertK8sApplicationResponse": {
        "RequestId": "b197-40ab-9155-****",
        "Message": "success",
        "ApplicationInfo": {
            "Dockerize": true,
            "EdasId": "1172****6608****",
            "Owner": "zp",
            "AppId": "e83acea6-****-47e1-96ae-c0e95377****",
            "UserId": "edas_test****@aliyun****.com",
            "ChangeOrderId": "cd65b247-****-475b-ad4b-7039040d625c",
            "RegionId": "cn-beijing",
            "ClusterType": 5,
            "AppName": "test"
        },
        "Code": 200
    }
}

错误码

访问错误中心查看更多错误码。