Deploys an application in a Container Service for Kubernetes (ACK) cluster or a serverless Kubernetes cluster.

Debugging

OpenAPI Explorer automatically calculates the signature value. For your convenience, we recommend that you call this operation in OpenAPI Explorer. OpenAPI Explorer dynamically generates the sample code of the operation for different SDKs.

Request headers

This operation uses only common request headers. For more information, see the topic about common request parameters.

Request syntax

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

Request parameters

Parameter Type Position Required Example Description
AppId String Query Yes e83acea6-****-47e1-96ae-c0e953772cdc

The ID of the application. You can call the ListApplication operation to query the application ID.

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

The pre-stop script. Example: {"tcpSocket":{"host":"", "port":8080}}.

If you want to cancel this configuration, set this parameter to "" or {}. If you do not specify this parameter, this configuration is ignored.

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

The environment variables that are used to deploy the application. The value must be a JSON array. You can set this parameter to specify regular environment variables, Kubernetes ConfigMap environment variables, or Kubernetes Secret environment variables. Specify regular environment variables in the following format:

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

Specify Kubernetes ConfigMap environment variables in the following format to reference values from ConfigMaps:

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

Specify Kubernetes Secret environment variables in the following format to reference values from Secrets:

{ "name": "x3", "valueFrom": { "secretKeyRef": { "name": "my-secret", "key": "y3" } } }
Note If you want to cancel this configuration, set this parameter to an empty JSON array, which is in the format of "".
ImageTag String Query No latest

The tag of the image.

BatchWaitTime Integer Query No 0

The minimum time interval for the phased release of pods. For more information, see minReadySeconds.

Command String Query No ls

The command that is used to start the container.

Note If you want to cancel this configuration, set this parameter to an empty string in the format of "".
PostStart String Query No {\"exec\":{\"command\":[\"ls\",\"/\"]}}"

The post-start script. Example: {"exec":{"command":["cat","/etc/group"]}}. If you want to cancel this configuration, set this parameter to "" or {}. If you do not specify this parameter, this configuration is ignored.

Readiness String Query No null

The configuration for the readiness check on the container. If the check fails, the traffic that passes through the Kubernetes service is not transmitted to the container. Example: {"failureThreshold": 3,"initialDelaySeconds": 5,"successThreshold": 1,"timeoutSeconds": 1,"httpGet": {"path": "/consumer","port": 8080,"scheme": "HTTP","httpHeaders": [{"name": "test","value": "testvalue"}]}}. If you want to cancel this configuration, set this parameter to "" or {}. If you do not specify this parameter, this configuration is ignored.

Liveness String Query No null

The configuration for the liveness check on the container. Example: {"failureThreshold": 3,"initialDelaySeconds": 5,"successThreshold": 1,"timeoutSeconds": 1,"tcpSocket":{"host":"", "port":8080}}. If you want to cancel this configuration, set this parameter to "" or {}. If you do not specify this parameter, this configuration is ignored.

Args String Query No ["args1","args2"]

The argument array in the container start-up command. Set this parameter to a JSON array in the format of ["args1","args2"], where each key is set to a string. If you want to cancel this configuration, set this parameter to an empty JSON array in the format of [].

Replicas Integer Query No 1

The number of application instances. Minimum value: 0.

Image String Query No registry-vpc.cn-beijing.aliyuncs.com/t****/app:v1

The absolute URL of the image. This parameter setting overwrites the setting of the ImageTag parameter.

CpuLimit Integer Query No 1

The maximum number of CPU cores allowed for each application instance when the application is running. Unit: core. A value of 0 indicates no limit.

MemoryLimit Integer Query No 0

The maximum amount of memory allowed for each application instance when the application is running. Unit: MB. A value of 0 indicates no limit.

CpuRequest Integer Query No 0

The number of CPU cores requested for each application instance when the application is running. We recommend that you set this parameter.

Unit: core. A value of 0 indicates no limit.

Note You must set this parameter together with the CpuLimit parameter. Make sure that the value of this parameter does not exceed that of the CpuLimit parameter.
MemoryRequest Integer Query No 0

The amount of memory requested for each application instance when the application is running. We recommend that you set this parameter. Unit: MB. If you do not want to apply for a memory quota, set this parameter to 0.

Note You must set this parameter together with the MemoryLimit parameter. Make sure that the value of this parameter does not exceed that of the MemoryLimit parameter.
NasId String Query No dfs23****

The ID of the Apsara File Storage NAS file system mounted to the container where the application is running. The NAS file system must be in the same region as the cluster. The NAS file system must have an available mount target, or have a mount target on the vSwitch in the virtual private cloud (VPC) where the application is located. If you do not specify this parameter, but specify the MountDescs parameter, a NAS file system is automatically purchased and mounted to the vSwitch in the VPC.

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

The description of the NAS mounting configuration. Set this parameter to a serialized JSON string. Example: [{"nasPath": "/k8s","mountPath": "/mnt"},{"nasPath": "/files","mountPath": "/app/files"}]. The nasPath parameter specifies the file storage path, and the mountPath parameter specifies the path to mount the file system to the container where the application is running.

StorageType String Query No Performance

The type of the storage. Only SSD is supported.

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

The configuration for mounting host files to the container where the application is running. Example: [{"type":"","nodePath":"/localfiles","mountPath":"/app/files"},{"type":"Directory","nodePath":"/mnt","mountPath":"/app/storage"}]. The nodePath parameter specifies the host path, the mountPath parameter specifies the path within the container, and the type parameter specifies the mounting type.

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

The URL of the deployment package. This parameter is required if you use a FatJar or WAR package to deploy the application.

Note The version of Enterprise Distributed Application Service (EDAS) SDK for Java or Python must be V2.44.0 or later.
PackageVersion String Query No 20200720

The version of the deployment package. This parameter is required if you use a FatJar or WAR package to deploy the application. You must specify a version.

Note The version of EDAS SDK for Java or Python must be V2.44.0 or later.
JDK String Query No Open JDK 8

The version of the Java Development Kit (JDK) on which the deployment package of the application depends. Open JDK 7 and Open JDK 8 are supported. This parameter is unavailable if you deploy applications by using images.

WebContainer String Query No apache-tomcat-7.0.91

The version of the Tomcat container on which the deployment package of the application depends. This parameter is applicable to Spring Cloud and Dubbo applications that you deploy by using WAR packages. This parameter is unavailable if you deploy applications by using images.

EdasContainerVersion String Query No 3.5.9

The version of EDAS Container on which the deployment package of the application depends. This parameter is applicable to High-Speed Service Framework (HSF) applications that you deploy by using WAR packages. This parameter is unavailable if you deploy applications by using images.

UriEncoding String Query No GBK

The uniform resource identifier (URI) encoding scheme. Valid values: ISO-8859-1, GBK, GB2312, and UTF-8.

Note If you do not specify this parameter in the application configurations, the default URI encoding scheme in the Tomcat container is applied.
UseBodyEncoding Boolean Query No false

Specifies whether to use the encoding scheme specified in the request body for URI query parameters.

Note If you do not specify this parameter in the application configurations, the default value false is applied.
UpdateStrategy String Query No null

The phased release policy.

  • Example 1: One instance for a canary release + Two subsequent batches + Automatic batching + 1-minute batch interval. {"type":"GrayBatchUpdate","batchUpdate":{"batch":2,"releaseType":"auto","batchWaitTime":1},"grayUpdate":{"gray":1}}
  • Example 2: One instance for a canary release + Two subsequent batches + Manual batching. {"type":"GrayBatchUpdate","batchUpdate":{"batch":2,"releaseType":"manual"},"grayUpdate":{"gray":1}}
  • Example 3: Two batches + Automatic batching + 0-minute batch interval. {"type":"BatchUpdate","batchUpdate":{"batch":2,"releaseType":"auto","batchWaitTime":0}}
McpuRequest Integer Query No 4

The minimum number of CPU cores required. Unit: core. A value of 0 indicates no limit.

Note You must set this parameter together with the CpuLimit parameter. Make sure that the value of this parameter does not exceed that of the CpuLimit parameter.
McpuLimit Integer Query No 0

The maximum number of CPU cores allowed. Unit: core. A value of 0 indicates no limit.

VolumesStr String Query No test

The data volume.

PackageVersionId String Query No 2bcc********

The version ID of the deployment package.

ChangeOrderDesc String Query No Upgrade

The description of the change process.

RuntimeClassName String Query No runc

The type of the container runtime. This parameter is applicable only to clusters that use sandboxed containers.

DeployAcrossZones String Query No true

Specifies whether to distribute application instances to multiple zones. A value of true indicates yes, whereas other values indicate no.

BatchTimeout Integer Query No 60

The timeout period for an at-a-time release. Unit: seconds.

EnableAhas Boolean Query No true

Specifies whether to enable access to Application High Availability Service (AHAS).

WebContainerConfig String Query No null

The Tomcat container configuration. If you want to cancel this configuration, set this parameter to "" or "{}". The following parameters are included in the configuration:

  • useDefaultConfig: specifies whether to use the default configuration. A value of true indicates to use the default configuration. A value of false indicates to use the custom configuration. If the default configuration is used, the following parameters do not take effect.
  • contextInputType: the type of the access path for the application. Valid values:
    • war: The access path for the application is the name of the WAR package. You do not need to specify a custom path.
    • root: The access path for the application is /. You do not need to specify a custom path.
    • custom: If you select this option, you must specify a custom path for the contextPath parameter.
  • contextPath: the custom access path for the application. This parameter is required only when you set the contextInputType parameter to custom.
  • httpPort: the port number. The port number ranges from 1024 to 65535. Though the admin permissions are configured for the container, the root permissions are required to perform operations on ports whose number is less than 1024. Therefore, enter a value greater than 1024 within the valid range. If you do not specify this parameter, the default port number 8080 is used.
  • maxThreads: the maximum number of connections in the connection pool. Default value: 400.
    Note This parameter greatly affects the application performance. We recommend that you set this parameter under professional guidance.
  • uriEncoding: the URI encoding scheme in the Tomcat container. Valid values: UTF-8, ISO-8859-1, GBK, and GB2312. If you do not specify this parameter, the default value ISO-8859-1 is used.
  • useBodyEncoding: specifies whether to use the encoding scheme specified in the request body for URI query parameters.
  • useAdvancedServerXml: specifies whether to use advanced configurations to customize the server.xml file. If the preceding parameter types and specific parameters cannot meet your requirements, you can use advanced configurations to customize the server.xml file of Tomcat.
  • serverXml: the content of the server.xml file customized by using advanced configurations. This parameter takes effect only when you set the useAdvancedServerXml parameter to true.
JavaStartUpConfig String Query No null

The configuration of Java startup parameters for a Java application. These startup parameters involve the memory, application, garbage collection (GC) policy, tools, service registration and discovery, and custom configurations. Proper parameter settings help reduce the GC overhead, shorten the server response time, and improve the throughput. Set this parameter to a JSON string. In the example, original indicates the configuration value, and startup indicates a startup parameter. The system automatically concatenates all startup values as the settings of Java startup parameters for the application. If you want to cancel this configuration, set this parameter to "" or "{}".

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

The Logstore configuration. If you want to cancel this configuration, set this parameter to "" or "{}".

  • The following parameters are included in the configuration:
    • type: the collection type. Set this parameter to file to specify the file type. Set this parameter to stdout to specify the standard output type.
    • logstore: the name of the Logstore. Make sure that the name of the Logstore is unique in the cluster. The name must comply with the following rules:
      • The name can contain only lowercase letters, digits, hyphens (-), and underscores (_).
      • The name must start and end with a lowercase letter or a digit.
      • The name must be 3 to 63 characters in length. If you leave this parameter empty, the system automatically generates a name.
    • logDir: If the standard output type is used, the collection path is stdout.log. If the file type is used, the collection path is the path of the collected file. Wildcards (*) are supported. The collection path must match the following regular expression: ^/(.+)/(.*)^/$.
DeployAcrossNodes String Query No true

Specifies whether to distribute application instances to multiple nodes. A value of true indicates yes, whereas other values indicate no.

TrafficControlStrategy String Query No null

The traffic adjustment policy for a canary release.

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

The configuration for mounting a Kubernetes PersistentVolumeClaim (PVC) volume to a specified directory in an elastic container instance. The following parameters are included in the configuration:

  • pvcName: the name of the PVC volume. Make sure that the PVC volume is an existing volume and is in the Bound state.
  • mountPaths: the directory to which you want to mount the PVC volume. You can configure multiple directories. You can set the following two parameters for each mount directory:
    • mountPath: the mount path. The mount path must be an absolute path that starts with a forward slash (/) if you want to mount a PVC volume to an elastic container instance.
    • readOnly: the mount mode. A value of true indicates the read-only mode. A value of false indicates the read/write mode. Default value: false.
ConfigMountDescs String Query No [{"name":"nginx-config","type":"ConfigMap","mountPath":"/etc/nginx"},{"name":"tls-secret","type":"secret","mountPath":"/etc/ssh"}]

The configuration for mounting a Kubernetes ConfigMap or Secret to a specified directory in an elastic container instance. The following parameters are included in the configuration:

  • name: the name of the Kubernetes ConfigMap or Secret.
  • type: the type of the API object that you want to mount. You can mount a Kubernetes ConfigMap or Secret.
  • mountPath: the mount path. The mount path must be an absolute path that starts with a forward slash (/) if you want to mount a Kubernetes ConfigMap or Secret to an elastic container instance.
EnvFroms String Query No [{"name":"appname","valueFrom":{"configMapKeyRef":{"name":"appconf","key":"name"}}}]

The Kubernetes environment variables that are configured in EnvFrom mode. A specified ConfigMap or Secret is mounted to a specified directory. Each key corresponds to a file in the directory, and the content of the file is the value that corresponds to the key.

This parameter contains the following parameters:

  • configMapRef: the ConfigMap that is referenced. This parameter contains the following parameter:
    • name: the name of the ConfigMap.
  • secretRef: the Secret that is referenced. This parameter contains the following parameter:
    • name: the name of the Secret.
EmptyDirs String Query No [{"mountPath":"/app-log","subPathExpr":"$(POD_IP)"},{"readOnly":true,"mountPath":"/etc/nginx"}]

The configuration for mounting a Kubernetes emptyDir volume to a specified directory in an elastic container instance. The following parameters are included in the configuration:

  • mountPath: required. The mount path in the container.
  • readOnly: optional. The mount mode. A value of true indicates the read-only mode. A value of false indicates the read/write mode. Default value: false.
  • subPathExpr: optional. The regular expression that is used to match the subdirectory.

Response parameters

Parameter Type Example Description
ChangeOrderId String cd65b247-****-475b-ad4b-7039040d625c

The ID of the change process. You can call the GetChangeOrderInfo operation to query the change process ID.

Code Integer 200

The HTTP status code.

Message String success

The returned message that indicates whether the call is successful.

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

The ID of the request.

Examples

Sample requests

POST /pop/v5/k8s/acs/k8s_apps HTTP/1.1
Common request headers
{
"AppId": "e83acea6-****-47e1-96ae-c0e953772cdc"
}

Sample success responses

XML format

<DeployK8sApplicationResponse>
  <Message>success</Message>
  <RequestId>a5281053-08e4-47a5-b2ab-5c0323de*****</RequestId>
  <ChangeOrderId>cd65b247-****-475b-ad4b-7039040d625c</ChangeOrderId>
  <Code>200</Code>
</DeployK8sApplicationResponse>

JSON format

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

Error codes

For a list of error codes, visit the API Error Center.