全部产品
Search
文档中心

企业级分布式应用服务 EDAS:DeployK8sApplication - 部署K8s应用

更新时间:Jan 31, 2024

在容器服务K8s集群或Serverless K8s集群中部署应用。

调试

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

授权信息

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

  • 操作:是指具体的权限点。
  • 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
  • 资源类型:是指操作中支持授权的资源类型。具体说明如下:
    • 对于必选的资源类型,用背景高亮的方式表示。
    • 对于不支持资源级授权的操作,用全部资源表示。
  • 条件关键字:是指云产品自身定义的条件关键字。
  • 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
操作访问级别资源类型条件关键字关联操作
edas:ManageApplicationWrite
  • Application
    acs:edas:{#regionId}:{#accountId}:namespace/{#NameSpaceId}/application/{#AppId}

请求语法

POST /pop/v5/k8s/acs/k8s_apps

请求参数

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

停止前执行脚本,示例格式:{"tcpSocket":{"host":"", "port":8080}}。 如果设置为{}代表删除,不设置表示忽略。

{ "exec":{ "command":[ "ls", "/" ] } }
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"}}}]
ImageTagstring

镜像 Tag。

latest
BatchWaitTimeinteger

Pod 分批发布的最小间隔时间,详细信息请参见 minReadySeconds

0
Commandstring

容器启动命令。

说明 如果要取消该配置,需设置一个空字符串""来表示不做配置。
ls
AppIdstring

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

e83acea6-****-47e1-96ae-c0e953772cdc
PostStartstring

启动后执行脚本,格式如:{"exec":{"command":\["cat","/etc/group"\]}}。如果设置为{}表示删除,不设置表示忽略。

{ "exec":{ "command":[ "ls", "/" ] } }
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"}]}}
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}}
Argsstring

容器启动 Args 命令参数,格式必须符合 JSON 数组\["参数 1","参数 2"\],其中 key 固定为字符串,清空需设置为空 JSON 数组"\[\]"

["args1","args2"]
Replicasinteger

应用实例数,最小为 0。

1
Imagestring

镜像完整 URL,覆盖镜像 Tag 参数。

registry-vpc.cn-beijing.aliyuncs.com/t****/app:v1
CpuLimitinteger

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

1
MemoryLimitinteger

应用运行过程中,应用实例的内存限制。单位:MB,设置为 0 表示不限制。

0
CpuRequestinteger

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

说明 设置该参数时,还需要设置 CpuLimit 参数,且需要小于等于 CpuLimit 的参数值。
0
MemoryRequestinteger

应用运行过程中,应用实例需要申请的内存配额,推荐设置。单位:MB。设置为 0 表示不申请。

说明 设置该参数时,还需要设置 MemoryLimit 参数,且需要小于等于 MemoryLimit 的参数值。
0
NasIdstring

挂载的 NAS 的 ID,必须与集群在同一个地域。它必须有可用的挂载点创建额度,或者它的挂载点已经在 VPC 内的交换机上。如果不填,且存在 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"}]
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 版本。适用于通过 WAR 包部署的 HSF 应用,镜像不支持此参数。

3.5.9
UriEncodingstring

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

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

useBodyEncodingForURI 是否启用。

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

分批发布策略

  • 例 1:灰度 1 台+后续分 2 批+自动分批+分批间隔 1 分钟。 {"type":"GrayBatchUpdate","batchUpdate":{"batch":2,"releaseType":"auto","batchWaitTime":1},"grayUpdate":{"gray":1}}

  • 例 2:灰度 1 台+后续分 2 批+手动分批。 {"type":"GrayBatchUpdate","batchUpdate":{"batch":2,"releaseType":"manual"},"grayUpdate":{"gray":1}}

  • 例 3:分 2 批+自动分批+分批间隔 0 分钟。 {"type":"BatchUpdate","batchUpdate":{"batch":2,"releaseType":"auto","batchWaitTime":0}}

{"type":"GrayBatchUpdate","batchUpdate":{"batch":2,"releaseType":"auto","batchWaitTime":1},"grayUpdate":{"gray":1}}
McpuRequestinteger

CPU 最小资源需求,单位:核数。设置为 0 表示不限制。

说明 设置该参数时,还需要设置 CpuLimit 参数,且需要小于等于 CpuLimit 的参数值。
4
McpuLimitinteger

CPU 能使用的最大值,单位:核数。设置为 0 表示不做限制。

0
VolumesStrstring

数据卷。

test
PackageVersionIdstring

部署包版本 ID。

2bcc********
ChangeOrderDescstring

变更记录描述。

升级
RuntimeClassNamestring

容器运行时类型:

  • runc:普通容器运行时。
  • runv:安全沙箱容器。

该参数仅适用于使用安全沙箱容器的集群。

runc
DeployAcrossZonesstring

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

true
BatchTimeoutinteger

单批发布超时时间,单位:秒。

60
EnableAhasboolean

是否接入 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 启动参数。设置为"""{}"表示删除配置。

{"InitialHeapSize":{"original":512,"startup":"-Xms512m"},"MaxHeapSize":{"original":1024,"startup":"-Xmx1024m"}}
SlsConfigsstring

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

  • Configs:

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

    • Logstore: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/*"}]
DeployAcrossNodesstring

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

true
TrafficControlStrategystring

灰度发布流量控制策略。

{"http":{"rules":[{"conditionType":"percent","percent":10}]}}
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" } ]
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"}]
CustomAffinitystring

Pod 亲和性配置,当且仅当 DeployAcrossNodes 与 DeployAcrossZones 都为 false 时生效。

{"nodeAffinity":{"requiredDuringSchedulingIgnoredDuringExecution":{"nodeSelectorTerms":[{"matchExpressions":[{"key":"beta.kubernetes.io/arch","operator":"NotIn","values":["arm64","arm32"]}]}]},"preferredDuringSchedulingIgnoredDuringExecution":[{"weight":5,"preference":{"matchExpressions":[{"key":"kubernetes.io/os","operator":"In","values":["linux"]}]}}]},"podAffinity":{"requiredDuringSchedulingIgnoredDuringExecution":[{"namespaces":["default"],"topologyKey":"kubernetes.io/hostname","labelSelector":{"matchExpressions":[{"key":"edas.oam.acname","operator":"NotIn","values":["edas-test-app"]}]}}]},"podAntiAffinity":{"preferredDuringSchedulingIgnoredDuringExecution":[{"podAffinityTerm":{"namespaces":["default"],"topologyKey":"failure-domain.beta.kubernetes.io/zone","labelSelector":{"matchExpressions":[{"key":"edas.oam.acname","operator":"In","values":["edas-test-app-2"]}]}},"weight":15}]}}
CustomTolerationsstring

Pod 调度容忍配置,当且仅当 DeployAcrossNodes 与 DeployAcrossZones 都为 false 时生效。

[{"key":"edas-taint-key2","operator":"Exists","effect":"NoExecute","tolerationSeconds":50},{"key":"edas-taint-key","operator":"Equal","value":"edas-taint-value","effect":"PreferNoSchedule"}]
BuildPackIdstring

EDAS-Container 构建包号:

  • 如果部署时不需要更改 EDAS-Container 版本,则该参数可不设置。
  • 如果需要在本次部署时,更新目标应用的 EDAS-Container 版本,则需要设置。

有以下两种获取方式:

  • 可通过查询容器版本列表接口 ListBuildPack 获取,请参见 ListBuildPack
  • 容器版本说明表格中的构建包序号列获取。例如59表示EDAS-Container 3.5.8 版本
59
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。
说明 若同时配置LosslessRuleRelated为 true,则该接口检查是否完成服务预热。
  • false:不为应用提供检查是否完成服务注册的接口。
false
LosslessRuleRelatedboolean

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

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

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

4
RequestsEphemeralStorageinteger

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

2
Sidecarsstring

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

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

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

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

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

openjdk:8u302
CanaryRuleIdstring

金丝雀规则策略 ID。

a8daf22e-****-968c7ff2ea34
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}}
CustomAgentVersionstring

设置应用挂载的自定义 ArmsAgent 探针版本。

说明 该功能为白名单开放。如有需求,请提交工单申请加入白名单。
3.1.4

返回参数

名称类型描述示例值
object

接口响应。

ChangeOrderIdstring

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

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

接口状态或 POP 错误码。

200
Messagestring

附加信息 。

success
RequestIdstring

请求 ID。

a5281053-08e4-47a5-b2ab-5c0323de*****

示例

正常返回示例

JSON格式

{
  "ChangeOrderId": "cd65b247-****-475b-ad4b-7039040d625c",
  "Code": 200,
  "Message": "success",
  "RequestId": "a5281053-08e4-47a5-b2ab-5c0323de*****"
}

错误码

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

变更历史

变更时间变更内容概要操作
2024-01-30OpenAPI 入参发生变更看变更集
变更项变更内容
入参OpenAPI 入参发生变更
    新增入参:CustomAgentVersion
2023-10-10OpenAPI 入参发生变更看变更集
变更项变更内容
入参OpenAPI 入参发生变更
    新增入参:ImagePlatforms
    新增入参:Startup
2023-04-11OpenAPI 入参发生变更看变更集
变更项变更内容
入参OpenAPI 入参发生变更
    新增入参:TerminateGracePeriod
2023-04-03OpenAPI 入参发生变更看变更集
变更项变更内容
入参OpenAPI 入参发生变更
    新增入参:CanaryRuleId
2023-03-27OpenAPI 入参发生变更看变更集
变更项变更内容
入参OpenAPI 入参发生变更
    新增入参:UserBaseImageUrl
2023-03-24OpenAPI 入参发生变更看变更集
变更项变更内容
入参OpenAPI 入参发生变更
    新增入参:Sidecars
    新增入参:InitContainers