ACK Serverless clusters scale on demand without node management, making them a good fit for workloads with variable traffic. Enterprise Distributed Application Service (EDAS) integrates with Container Service for Kubernetes (ACK) to manage the full lifecycle of containerized applications in these clusters.
This tutorial walks you through deploying a Java application in an ACK Serverless cluster by using a demo JAR or WAR package provided by EDAS.
The deployment follows three phases:
Create an ACK Serverless cluster in the ACK console.
Import the cluster into EDAS so EDAS can manage applications on it.
Deploy an application using a JAR or WAR package through the EDAS console.

If you already have an ACK Serverless cluster, skip to Step 2: Import the cluster into EDAS. If you have already imported the cluster, skip directly to Step 3: Deploy the application.
Prerequisites
Before you begin, make sure that you have:
Activated both EDAS and ACK for your Alibaba Cloud account. See Activate EDAS and ACK quick start
Granted ACK default roles to your account. See ACK default roles
Step 1: Create an ACK Serverless cluster
Log on to the ACK console and create an ACK Serverless cluster. For instructions, see Create an ASK cluster.
Step 2: Import the cluster into EDAS
When you import an ACK cluster, EDAS automatically installs the following components:
Component | Purpose |
ack-ahas-sentinel-pilot | Throttling and degradation protection |
ack-arms-pilot | Application Real-Time Monitoring Service (ARMS) agent |
ack-arms-prometheus | Prometheus monitoring |
To import the cluster:
Log on to the EDAS console. In the left-side navigation pane, choose Resource Management > Serverless Kubernetes Clusters.
In the top navigation bar, select the region and microservices namespace where your ACK Serverless cluster resides. Click Synchronize Serverless Kubernetes Cluster.
Find the target cluster and click Import in the Actions column.
In the Warning message, click OK.
In the Precheck for Import dialog box, click Continue.
In the Import Kubernetes Cluster dialog box, select a microservices namespace from the Microservice Namespace drop-down list, turn Service Mesh on or off based on your requirements, and click Import.
Verify the import
After the import completes, confirm that the Cluster Status column shows Running and the Import Status column shows Imported.
Step 3: Deploy the application
This step covers creating an application and deploying it with a JAR or WAR package. The overall process is the same for both package types. The only difference is in the runtime environment selection:
Package type | Runtime environment | Configurable parameters |
JAR | Java (Dubbo or Spring Boot) | Java Environment |
WAR | Tomcat (Dubbo or Spring) | Java Environment, Container Version |
WAR or FatJar | EDAS-Container (HSF) (High-Speed Service Framework) | Java Environment, Pandora Version, Ali-Tomcat Version |
The following steps use a JAR package as an example. If you are deploying a WAR package, select Tomcat or EDAS-Container (HSF) instead of Java in the Basic Information step.
3a. Create an application
Log on to the EDAS console. In the left-side navigation pane, choose Application Management > Applications.
In the top navigation bar, select a region and microservices namespace. Click Create Application.
3b. Configure basic information
In the Basic Information step, configure the following parameters and click Next.
Parameter | Description |
Cluster Type | Select Kubernetes Clusters. |
Application Source Type | Select Default. |
Hosted Applications | Select the programming language. This tutorial uses Java. To deploy a PHP or multilingual application, see Build PHP applications from source code and deploy them in ACK clusters. |
Select Application | Select the runtime environment based on your application type and deployment package. See the runtime options table above. To deploy using an image instead, see Use an image to deploy a Java microservices application in a Kubernetes cluster. |
OpenJDK 17 compatibility
OpenJDK 17 is compatible with Dubbo 2.7.14 and later, or Dubbo 3.0.6 and later. The following table lists tested version combinations.
Dubbo version | Spring Boot version | Nacos client version | API call | ARMS monitoring | Service list |
2.7.14 | 2.7.9 | 1.4.4 | Supported | Supported | Supported |
2.7.14 | 2.7.9 | 2.1.2 | Supported | Supported | Supported |
2.7.14 | 2.7.9 | 2.2.0 | Supported | Supported | Supported |
2.7.22 | 2.7.9 | 1.4.4 | Supported | Supported | Supported |
2.7.22 | 2.7.9 | 2.1.2 | Supported | Supported | Supported |
2.7.22 | 2.7.9 | 2.2.0 | Supported | Supported | Supported |
3.0.6 | 2.7.9 | 1.4.4 | Supported | Supported | Supported |
3.0.6 | 2.7.9 | 2.1.2 | Supported | Supported | Supported |
3.0.6 | 2.7.9 | 2.2.0 | Supported | Supported | Supported |
3.1.7 | 2.7.9 | 1.4.4 | Supported | Supported | Supported |
3.1.7 | 2.7.9 | 2.1.2 | Supported | Supported | Supported |
3.1.7 | 2.7.9 | 2.2.0 | Supported | Supported | Supported |
3c. Configure deployment settings
In the Configurations step, configure the following parameters and click Next.
Environment and cluster settings:
Parameter | Description |
Microservice Namespace | Select the microservices namespace you created. Defaults to Default if none is selected. To create one, click Create Microservice Namespace. See the "Create a namespace" section of Manage microservices namespaces. |
Cluster | Select the imported ACK Serverless cluster. If the cluster has not been imported to EDAS, select This cluster is used for the first time in EDAS to import it during application creation. The cluster does not need to belong to the same microservices namespace as the application. |
K8s Namespace | Select the Kubernetes namespace. Valid values: default, kube-system, kube-public. Select default for this tutorial. To create a custom namespace, click Create Kubernetes Namespace and enter a name (1-63 characters; lowercase letters, digits, and hyphens; must start and end with a letter or digit). |
Application settings:
Parameter | Description |
Application Name | Enter a name (up to 36 characters; starts with a letter; allows letters, digits, and hyphens). |
Application Description | Optional. Up to 128 characters. |
Deployment package:
Parameter | Description |
Source of Deployment Package | Select a deployment source. |
Custom Program: Upload your own package. Set File Uploading Method to Upload JAR Package (upload directly) or JAR Package Address (provide a URL).
Official Demo: Select a pre-built demo: Spring Cloud Server Application, Spring Cloud Client Application, Dubbo Server Application, or Dubbo Client Application.
Version and resource settings:
Parameter | Description |
Version | Enter a version number or click Use Timestamp as Version Number to generate one. |
Time Zone | Select the application time zone. |
Total Pods | Set the number of pods for the application. Maximum is subject to cluster capacity. |
Single-pod Resource Quota | Set CPU, memory, and ephemeral storage limits per pod. The default value |
OpenJDK base image settings
The OpenJDK Base Image parameter is available only if you selected Custom OpenJDK for Java Environment in the Basic Information step.
Configure the base image source:
Current Account: Specify Region, Container Registry, Image Repository Namespace, and Image Repository Name.
Other Alibaba Cloud Accounts: Specify Full Image Address for a public repository.
Only JDK 7 and JDK 8 are supported. The EDAS server pulls the base image to build the application image, so the base image must have public pull permissions.
Container Registry settings (ACK clusters only)
The Container Registry Repository Type parameter is only available for Java, Tomcat, or EDAS-Container (HSF) applications deployed in ACK clusters. It is not available for ACK Serverless clusters.
Parameter | Description |
Container Registry Repository Type | Select Container Registry Personal Edition or Container Registry Enterprise Edition to store the built image. The |
Region of Container Registry | Required only for Enterprise Edition. Select the region of your Container Registry (ACR) image. |
Container Registry | Required only for Enterprise Edition. Select your container image. |
Image Repository Namespace | Select the namespace for your image repository, or click + Create Namespace to create one. |
Image build tasks run in your cluster and consume cluster resources. The default resource limit for a single image build task is 1 GB per core. To adjust this limit, see Adjust resource limits for image building.
Build task scheduling rules:
Rule | Behavior |
Exclusion | EDAS does not schedule build tasks to nodes labeled |
Preference | EDAS prefers to schedule build tasks to nodes labeled |
Toleration | Build tasks tolerate nodes with the taint |
Tip: To dedicate a node to build tasks, add the labeledas.image.build=enableand the taintkey=edas.image.build, effect=NoSchedule. This prevents other pods from being scheduled to that node.
3d. Configure advanced settings (optional)
In the Advanced Settings step, configure any of the following as needed:
3e. Create and deploy
After configuring all settings, click Create Application. In the Creation Completed step, click Create Application again.
In the Confirm Application Change Precheck dialog box, click Start Precheck.
Review the precheck results and click Continue. If you modified any precheck items, click Check Again before continuing.
Verify the deployment
The deployment takes several minutes. Track progress on the Change List page.
After deployment completes, go to Application Overview and check the pod status:
If all pods show running, the application deployed successfully.
Click a pod's running status to view its Deployments, pod details, and advanced configurations.
If pods do not reach the running state, check the pod events and logs on the Application Overview page to identify the issue.
Expose the application with a load balancer
After deploying the application, add a Server Load Balancer (SLB) instance to expose it:
SLB type | Use case |
Internet-facing | Exposes the application to the Internet |
Internal-facing | Exposes the application to all nodes in the same VPC over an internal network |
For instructions, see Add an SLB instance to an application in a Kubernetes cluster.
Support
For questions about ACK or ACK Serverless clusters in EDAS, submit a ticket or join the DingTalk group 23197114.