InsertK8sApplication - 创建K8s应用

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

调试

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

授权信息

当前API暂无授权信息透出。

请求语法

POST /pop/v5/k8s/acs/create_k8s_app

请求参数

名称类型必填描述示例值
IntranetTargetPortinteger

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

80
IntranetSlbPortinteger

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

80
ImageUrlstring

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

registry.cn-beijing.aliyuncs.com/****_test/****-cons****:1.0
ApplicationDescriptionstring

应用描述信息。

生产环境应用
RepoIdstring

镜像的仓库 ID。

ced********
Replicasinteger

应用实例数。

4
LimitCpuinteger

应用运行过程中,应用实例的 CPU 限额,单位:核数。如果 LimitmCpu 不为空,则忽略该参数。

4
LimitMeminteger

应用运行过程中,应用实例的内存限额,单位:MB。LimitMem 取值要不小于 RequestsMem。

2
RequestsCpuinteger

应用创建时,应用实例的 CPU 限额,单位:核数。设置为 0 时表示不限制。如果 RequestsmCpu,则使用 RequestsmCpu,忽略该参数。

0
RequestsMeminteger

应用创建时,应用实例的内存限额,单位:MB。设置为 0 时表示不限制。RequestsMem 的取值不能大于 LimitMem 的取值。

0
Commandstring

应用启动命令。如果设置该参数,镜像在启动时,会替代镜像中的原有的启动命令。

ls
CommandArgsstring

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

[{"argument":"-lh"}]
AppNamestring

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

doc-test
IntranetSlbProtocolstring

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

TCP
IntranetSlbIdstring

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

ae93********
ClusterIdstring

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

c9cd****
InternetSlbIdstring

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

a3d4********
InternetSlbProtocolstring

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

TCP
InternetSlbPortinteger

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

80
InternetTargetPortinteger

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

8080
Envsstring

部署环境变量,格式需要符合 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 数组“[]”来表示不做配置。
[{"name":"x1","value":"y1"},{"name":"x2","valueFrom":{"configMapKeyRef":{"name":"my-config","key":"y2"}}},{"name":"x3","valueFrom":{"secretKeyRef":{"name":"my-secret","key":"y3"}}}]
PreStopstring

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

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

{\"exec\":{\"command\":[\"ls\",\"/\"]}}"
PostStartstring

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

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

{\"exec\":{\"command\":[\"ls\",\"/\"]}}"
Livenessstring

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

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

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

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

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

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

挂载的 NAS 的 ID。如果不填,且存在 mountDescs 字段,则默认将自动购买一个 NAS 并挂载到 VPC 内的交换机上。

dfs23****
MountDescsstring

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

[{"nasPath": "/k8s","mountPath": "/mnt"},{"nasPath": "/files","mountPath": "/app/files"}]
StorageTypestring

NAS 存储类型,包括:

  • 通用型 NAS:Capacity(容量型)、Performance(性能型)
  • 极速型 NAS:Standard(标准型)、Advance(高级型)

目前只支持 Performance 类型。

Performance
LocalVolumestring

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

  • nodePath为宿主机路径。

  • mountPath为容器内的路径。

  • type为挂载类型。

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

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

default
LogicalRegionIdstring

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

cn-shenzhen:beta****
PackageTypestring

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

WAR
PackageUrlstring

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

说明 EDAS POP API 的 Java 或者 Python SDK 需要 2.44.0 或以上版本。
https://e***.oss-cn-beijing.aliyuncs.com/s***-1.0-SNAPSHOT-spring-boot.jar
PackageVersionstring

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

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

部署的包依赖的 JDK 版本。可选的参数值为 Open JDK 7、Open JDK 8 或 Custom OpenJDK。镜像部署方式不支持此参数。当使用 Custom OpenJDK 时,还需配置 UserBaseImageUrl 字段。

Open JDK 8
WebContainerstring

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

apache-tomcat-7.0.91
EdasContainerVersionstring

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

说明 使用镜像部署时不支持此参数。
3.5.9
UriEncodingstring

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

说明 应用配置不设置该参数,使用 Tomcat 默认值。
GBK
UseBodyEncodingboolean

useBodyEncodingForURI 是否启用。

说明 应用配置不设置该参数,使用默认值 false。
false
RequestsmCpuinteger

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

500
LimitmCpuinteger

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

1000
RuntimeClassNamestring

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

runc
DeployAcrossZonesstring

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

true
Timeoutinteger

变更流程超时时间,单位:秒。取值范围为 1~1800 秒,不填默认为 1800 秒。

60
EnableAhasboolean

是否接入 AHAS:

  • true:接入 AHAS。
  • false:不接入 AHAS。
true
WebContainerConfigstring

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 时生效。

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

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

  • InitialHeapSize:代表初始化堆大小。
  • MaxHeapSize:代表最大堆大小。
  • CustomParams:代表用户自定义内容,如 JVM -D 参数等。
  • 其它情况:可自行查看前端提交的 JSON 结构。
{"InitialHeapSize":{"original":512,"startup":"-Xms512m"},"MaxHeapSize":{"original":1024,"startup":"-Xmx1024m"},"CustomParams":{"original":"-Dcustom.property.sample=false","startup":"-Dcustom.property.sample=false"}}
SlsConfigsstring

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

  • Configs:

    • type:采集类型,文件类型为 file,标准输出类型为 stdout。

    • Logstore:Logstore 名称。请确保 Logstore 名称在同一个集群中不重复,其命名应符合规则。

      • 日志库名称仅支持小写字母、数字、短划线(-)和下划线(_)。
      • 必须以小写字母和数字开头和结尾。
      • 名称长度为 3~63 个字符。若为空,则由系统自动生成。
    • LogDir:若为标准输出类型,则采集路径为 stdout.log,若为文件类型,则为采集的文件路径,支持通配,采集路径应符合正则:^/(.+)/(.*)^/$

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

是否为多语言应用。

true
DeployAcrossNodesstring

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

true
PvcMountDescsstring

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

  • pvcName:PVC 卷名称,PVC 卷必须已经存在,且处于 Bound 状态。
  • mountPaths:挂载目录列表,支持配置多个挂载目录。每个挂载目录支持两个配置参数。
    • mountPath:挂载路径,以正斜线(/)开头的容器绝对路径。
    • readOnly:挂载模式,true 为只读,false 为可读写,默认为 false。
[{"pvcName":"nas-pvc-1","mountPaths":[{"mountPath":"/usr/share/nginx/data"},{"mountPath":"/usr/share/nginx/html","readOnly":true}]}]
ConfigMountDescsstring

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

  • name:ConfigMap 或 Secret 的名称。
  • type:配置类型,支持 ConfigMap 和 Secret 两种类型。
  • mountPath:挂载路径,以正斜线(/)开头的容器绝对路径。
[{"name":"nginx-config","type":"ConfigMap","mountPath":"/etc/nginx"},{"name":"tls-secret","type":"secret","mountPath":"/etc/ssh"}]
CsClusterIdstring

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

abcdefg
EnableAsmboolean

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

false
EnvFromsstring

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

EnvFroms 的配置参数说明如下:

  • configMapRef:ConfigMap 引用,该字段包括以下参数:
    • name:ConfigMap 名称。
  • secretRef:Secret 引用,该字段包括以下参数:
    • name:Secret 名称。
[{"name":"appname","valueFrom":{"configMapKeyRef":{"name":"appconf","key":"name"}}}]
EmptyDirsstring

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

  • mountPath:容器挂载路径,必填。
  • readOnly:是否只读,可选,true 为只读,false 为读写,默认为 false。
  • subPathExpr:子目录表达式,可选。
[{"mountPath":"/app-log","subPathExpr":"$(POD_IP)"},{"readOnly":true,"mountPath":"/etc/nginx"}]
BuildPackIdstring

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

-1
CustomAffinitystring

自定义关联。

demo
CustomTolerationsstring

自定义公差。

demo
ResourceGroupIdstring

资源组 ID。

461
Annotationsstring

应用 Pod 注解。

{"annotation-name-1":"annotation-value-1","annotation-name-2":"annotation-value-2"}
Labelsstring

应用 Pod 标签。

{"label-name-1":"label-value-1","label-name-2":"label-value-2"}
EnableEmptyPushRejectboolean

是否开启推空保护:

  • true:开启推空保护。
  • false:不开启推空保护。
false
EnableLosslessRuleboolean

是否启用无损上线规则:

  • true:启用无损上线规则。
  • false:不启用无损上线规则。
true
LosslessRuleWarmupTimeinteger

服务预热时长,单位:秒。取值范围为 0~86400 秒。

120
LosslessRuleDelayTimeinteger

服务延迟注册时长,单位:秒。取值范围为 0~86400 秒。

0
LosslessRuleFuncTypeinteger

服务预热曲线。取值范围 0~20。默认为 2(适合于一般预热场景),表示在预热周期内服务提供者的流量接收曲线形状呈 2 次曲线形状。

2
LosslessRuleAlignedboolean

是否启用无损滚动发布模式配置通过就绪检查前完成服务注册:

  • true:打开开关会为应用无侵入提供 55199 端口和/health 路径的健康检查方式,当完成服务注册后,该接口返回 200,否则返回 500。

    说明 若同时配置LosslessRuleRelatedtrue,则该接口检查是否完成服务预热。
  • false:不为应用提供检查是否完成服务注册的接口。

false
LosslessRuleRelatedboolean

是否启用无损滚动发布模式配置通过就绪检查前完成服务预热:

  • true:打开开关会为应用无侵入提供 55199 端口和/health 路径的健康检查方式,当完成服务预热后,该接口返回 200,否则返回 500。
  • false:不为应用提供检查是否完成服务预热的接口。
false
ServiceConfigsstring

K8s 服务 Service 配置。

[{"name": "test-svc-create","serviceType":"ClusterIP","portMappings":[{"servicePort": {"targetPort":8080,"port":80,"protocol":"TCP"}}]}]
AppTemplateNamestring

创建应用使用的应用模版名称,若创建应用时指定应用模版,则将优先使用应用模版和 AppConfig 参数确定应用配置,忽略其他配置。

app-template001
AppConfigstring

使用应用模版时的应用配置,JSON 格式字符串。

{}
LimitEphemeralStorageinteger

临时存储资源需求上限,单位:GB。设置 0 表示不限制。

4
RequestsEphemeralStorageinteger

临时存储最小资源需求,单位:GB。设置 0 表示不限制。

2
SecretNamestring

用户指定的镜像拉取凭证名,需要自行创建相关 Secret 配置。

edas-app-01-image-secret
ContainerRegistryIdstring

构建镜像仓库使用的仓库 ID,留空表示使用 EDAS 提供的默认仓库。当前只支持 EDAS 提供的默认仓库。

留空
WorkloadTypestring

创建应用时 Workload 的类型,目前仅支持 Deployment 类型。

Deployment
Sidecarsstring

为应用 Pod 设置 Sidecar 容器。支持设置容器配置的格式 YAML,其值为 Sidecar 容器 YAML 配置 base64 编码后的值。

[{"yamlEncoded":"Y29tbWFuZDoKICAtIHRhaWwKICAtICctZicKICAtIC9kZXYvbnVsbAppbWFnZTogJ2J1c3lib3g6bGF0ZXN0JwpuYW1lOiBidXN5Ym94Cg=="}]
InitContainersstring

为应用 Pod 设置初始化容器。支持设置容器配置的格式 YAML,其值为 Init 容器 YAML 配置 base64 编码后的值。

[ { "yamlEncoded": "Y29tbWFuZDoKICAtIHNsZWVwCiAgLSAnNjAnCmltYWdlOiAnYnVzeWJveDpsYXRlc3QnCm5hbWU6IGluaXQtYnVzeWJveAo=" } ]
UserBaseImageUrlstring

使用自定义 JDK 运行时,需要配置基础镜像地址。该地址需要可公开访问,EDAS 服务端会拉取该镜像,用于构建应用镜像。

openjdk:8u302
TerminateGracePeriodinteger

设置应用优雅停止超时时间。单位:秒。

120
ImagePlatformsstring

镜像目标平台架构,当使用 war、jar 部署时有效,输入样例:

  • 指定 x86 64 架构:linux/amd64

  • 指定 arm 64 架构:linux/arm64

  • 指定构建双架构镜像:linux/amd64,linux/arm64

  • 不输入:默认架构

Startupstring

启动探针可以用于对慢启动容器进行存活性检测,避免它们在启动运行之前就被杀掉,格式如:{"failureThreshold": 3,"initialDelaySeconds": 5,"successThreshold": 1,"timeoutSeconds": 1,"httpGet": {"path": "/consumer","port": 8080,"scheme": "HTTP","httpHeaders": [{"name": "test","value": "testvalue"}]}}。

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

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

返回参数

名称类型描述示例值
object

接口响应。

Codeinteger

接口状态或 POP 错误码。

200
Messagestring

附加信息。

success
RequestIdstring

请求 ID。

b197-40ab-9155-****
ApplicationInfoobject

应用详情。

ChangeOrderIdstring

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

cd65b247-****-475b-ad4b-7039040d625c
AppNamestring

应用名称。

test
Dockerizeboolean

是否为 Docker 应用。

  • true:是。
  • false:否。
true
Ownerstring

负责人。

zp
EdasIdstring

用户账号 ID。

1172****6608****
ClusterTypeinteger

应用集群环境类型如下:

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

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

e83acea6-****-47e1-96ae-c0e95377****
UserIdstring

用户主账号。

edas_test****@aliyun****.com
RegionIdstring

地域 ID。

cn-beijing

示例

正常返回示例

JSON格式

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

错误码

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

变更历史

变更时间变更内容概要操作
2023-11-13OpenAPI 入参发生变更看变更集
变更项变更内容
入参OpenAPI 入参发生变更
    新增入参:FeatureConfig
2023-10-10OpenAPI 入参发生变更看变更集
变更项变更内容
入参OpenAPI 入参发生变更
    新增入参:ImagePlatforms
    新增入参:Startup
2023-06-02OpenAPI 入参发生变更看变更集
变更项变更内容
入参OpenAPI 入参发生变更
    新增入参:TerminateGracePeriod
2023-03-27OpenAPI 入参发生变更看变更集
变更项变更内容
入参OpenAPI 入参发生变更
    新增入参:UserBaseImageUrl
2023-03-24OpenAPI 入参发生变更看变更集
变更项变更内容
入参OpenAPI 入参发生变更
    新增入参:Sidecars
    新增入参:InitContainers