InsertK8sApplication - 创建K8s应用

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

调试

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

调试

授权信息

下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:

  • 操作:是指具体的权限点。

  • 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。

  • 资源类型:是指操作中支持授权的资源类型。具体说明如下:

    • 对于必选的资源类型,用前面加 * 表示。

    • 对于不支持资源级授权的操作,用全部资源表示。

  • 条件关键字:是指云产品自身定义的条件关键字。

  • 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。

操作

访问级别

资源类型

条件关键字

关联操作

edas:CreateApplication

create

*全部资源

*

请求语法

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

请求参数

名称

类型

必填

描述

示例值

IntranetTargetPort

integer

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

80

IntranetSlbPort

integer

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

80

ImageUrl

string

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

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

ApplicationDescription

string

应用描述信息。

生产环境应用

RepoId

string

镜像的仓库 ID。

ced********

Replicas

integer

应用实例数。

4

LimitCpu

integer

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

4

LimitMem

integer

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

2

RequestsCpu

integer

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

0

RequestsMem

integer

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

0

Command

string

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

ls

CommandArgs

string

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

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

AppName

string

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

doc-test

IntranetSlbProtocol

string

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

TCP

IntranetSlbId

string

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

ae93********

ClusterId

string

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

c9cd****

InternetSlbId

string

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

a3d4********

InternetSlbProtocol

string

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

TCP

InternetSlbPort

integer

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

80

InternetTargetPort

integer

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

8080

Envs

string

部署环境变量,格式需要符合 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"}}}]

PreStop

string

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

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

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

PostStart

string

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

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

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

Liveness

string

容器存活状态监测 ,格式如{"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

容器业务状态检查,如果检查失败,经过 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"}]}}

NasId

string

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

dfs23****

MountDescs

string

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

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

StorageType

string

NAS 存储类型,包括:

  • 通用型 NAS:Capacity(容量型)、Performance(性能型)

  • 极速型 NAS:Standard(标准型)、Advance(高级型)

目前只支持 Performance 类型。

Performance

LocalVolume

string

宿主机文件挂载到容器内的配置。例如:\[{"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"}]

Namespace

string

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

default

LogicalRegionId

string

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

cn-shenzhen:beta****

PackageType

string

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

WAR

PackageUrl

string

部署包地址。通过 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

PackageVersion

string

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

说明

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

20200720

JDK

string

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

Open JDK 8

WebContainer

string

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

apache-tomcat-7.0.91

EdasContainerVersion

string

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

说明

使用镜像部署时不支持此参数。

3.5.9

UriEncoding

string

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

说明

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

GBK

UseBodyEncoding

boolean

useBodyEncodingForURI 是否启用。

说明

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

false

RequestsmCpu

integer

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

500

LimitmCpu

integer

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

1000

RuntimeClassName

string

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

runc

DeployAcrossZones

string

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

true

Timeout

integer

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

60

EnableAhas

boolean

是否接入 AHAS:

  • true:接入 AHAS。

  • false:不接入 AHAS。

true

WebContainerConfig

string

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}

JavaStartUpConfig

string

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"}}

SlsConfigs

string

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/*"}]

IsMultilingualApp

boolean

是否为多语言应用。

true

DeployAcrossNodes

string

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

true

PvcMountDescs

string

配置 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}]}]

ConfigMountDescs

string

配置 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"}]

CsClusterId

string

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

abcdefg

EnableAsm

boolean

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

false

EnvFroms

string

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

EnvFroms 的配置参数说明如下:

  • configMapRef:ConfigMap 引用,该字段包括以下参数:
    • name:ConfigMap 名称。

  • secretRef:Secret 引用,该字段包括以下参数:
    • name:Secret 名称。

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

EmptyDirs

string

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

  • mountPath:容器挂载路径,必填。

  • readOnly:是否只读,可选,true 为只读,false 为读写,默认为 false。

  • subPathExpr:子目录表达式,可选。

[{"mountPath":"/app-log","subPathExpr":"$(POD_IP)"},{"readOnly":true,"mountPath":"/etc/nginx"}]

BuildPackId

string

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

-1

CustomAffinity

string

自定义关联。

demo

CustomTolerations

string

自定义公差。

demo

ResourceGroupId

string

资源组 ID。

461

Annotations

string

应用 Pod 注解。

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

Labels

string

应用 Pod 标签。

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

EnableEmptyPushReject

boolean

是否开启推空保护:

  • true:开启推空保护。

  • false:不开启推空保护。

false

EnableLosslessRule

boolean

是否启用无损上线规则:

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

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

true

LosslessRuleWarmupTime

integer

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

120

LosslessRuleDelayTime

integer

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

0

LosslessRuleFuncType

integer

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

2

LosslessRuleAligned

boolean

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

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

    说明

    若同时配置LosslessRuleRelatedtrue,则该接口检查是否完成服务预热。

  • false:不为应用提供检查是否完成服务注册的接口。

false

LosslessRuleRelated

boolean

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

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

  • false:不为应用提供检查是否完成服务预热的接口。

false

ServiceConfigs

string

K8s 服务 Service 配置。

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

AppTemplateName

string

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

app-template001

AppConfig

string

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

{}

LimitEphemeralStorage

integer

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

4

RequestsEphemeralStorage

integer

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

2

SecretName

string

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

edas-app-01-image-secret

ContainerRegistryId

string

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

留空

WorkloadType

string

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

Deployment

Sidecars

string

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

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

InitContainers

string

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

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

UserBaseImageUrl

string

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

openjdk:8u302

TerminateGracePeriod

integer

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

120

ImagePlatforms

string

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

  • 指定 x86 64 架构:linux/amd64

  • 指定 arm 64 架构:linux/arm64

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

  • 不输入:默认架构

linux/arm64,linux/amd64

Startup

string

启动探针可以用于对慢启动容器进行存活性检测,避免它们在启动运行之前就被杀掉,格式如:{"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}}

FeatureConfig

string

自定义监控与治理方案配置

{"features":[{"name":"base.combination.arms","enable":true},{"name":"base.combination.mse","enable":true}]}

CustomAgentVersion

string

支持指定 Agent 版本

2.8.3、3.2.10、 4.3.1

返回参数

名称

类型

描述

示例值

object

接口响应。

Code

integer

接口状态或 POP 错误码。

200

Message

string

附加信息。

success

RequestId

string

请求 ID。

b197-40ab-9155-****

ApplicationInfo

object

应用详情。

ChangeOrderId

string

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

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

AppName

string

应用名称。

test

Dockerize

boolean

是否为 Docker 应用。

  • true:是。

  • false:否。

true

Owner

string

负责人。

zp

EdasId

string

用户账号 ID。

1172****6608****

ClusterType

integer

应用集群环境类型如下:

  • 0:普通 Docker 集群。

  • 1:Swarm 集群(已下线)。

  • 2:ECS 集群。

  • 3:EDAS 自建 K8s 集群(已下线)。

  • 4:Pandora 自动注册应用集群类型。

  • 5:容器服务 K8s 集群和 Serverless K8s 集群。

5

AppId

string

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

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

UserId

string

用户主账号。

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

RegionId

string

地域 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"
  }
}

错误码

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

变更历史

更多信息,参考变更详情