All Products
Search
Document Center

Enterprise Distributed Application Service:Implement canary releases for Kubernetes applications

Last Updated:Mar 10, 2026

When deploying new versions of microservices, a full rollout risks exposing all users to potential issues. A canary release mitigates this by deploying the new version to a small subset of instances first. After you verify that the canary instances are healthy, you promote the new version to the remaining instances in batches.

This topic describes how to perform a canary release for Spring Cloud and Dubbo microservices in Kubernetes clusters through the Enterprise Distributed Application Service (EDAS) console.

How it works

A canary release in EDAS follows this lifecycle:

  1. EDAS creates a canary instance group and deploys the new version to the number of instances you specify.

  2. Traffic routes to the canary group based on a rule you configure: content-based matching, percentage-based splitting, or lane-based routing.

  3. You monitor the canary traffic to verify that the new version behaves as expected.

  4. After verification passes, you manually approve promotion -- deploying the new version to the remaining instances in one or more batches.

  5. If issues arise, you can roll back the canary group to the previous version.

Note

The canary batch requires manual approval before the remaining batches begin. EDAS does not automatically promote the canary to full rollout.

Limits

Application typeCanary release support
High-Speed Service Framework (HSF)Not supported.
DubboSupported without restrictions.
Spring CloudSupported. Do not use canary release if the application relies on Deployment.Metadata.Name or Deployment.Metadata.Uid to configure features. Otherwise, the native features of the application may be abnormal after the canary release.
Ingress applicationsSupported with limitations. If a Server Load Balancer (SLB) instance forwards traffic directly to the application, SLB traffic forwarding does not follow the canary release policy.
Note

To use canary release with an ingress application, create a client application and a server application with multiple replicas. Run the canary release on the server application, then associate the SLB instance with the client application for external traffic.

Start a canary release

Before you begin

Make sure that you have:

Procedure

  1. Log on to the EDAS console.

  2. In the left-side navigation pane, choose Application Management > Applications. In the top navigation bar, select a region. In the upper part of the page, select a microservices namespace from the Microservices Namespace drop-down list.

  3. On the Applications page, select Kubernetes Cluster from the Cluster Type drop-down list. Click the name of the application for which you want to perform a canary release.

  4. In the upper-right corner of the Application Overview page, choose Deploy > Deploy. On the Set Deployment Mode page, click Start Deployment in the Canary Release (Phased) section.

  5. On the Canary Release (Phased) page, configure the deployment method, release policy, and canary release rule, then click OK. The following sections describe each configuration area.

Step 1: Configure the deployment method

The deployment parameters depend on how the application was originally deployed: JAR/WAR package or container image.

JAR/WAR package deployments

ParameterDescription
Application Runtime EnvironmentMust match the previous deployment. JAR packages use Standard Java Application Runtime Environment. WAR packages use Apache Tomcat. You can change the Tomcat version but not the runtime type.
Java EnvironmentSelect a JDK version.
File Uploading MethodThe package type must match the previous deployment (JAR or WAR). Upload the package directly or specify a package URL.
VersionVersion number of the deployment package. A timestamp works well.
Time ZoneSelect the time zone for the application.

Container image deployments

ParameterDescription
Container Registry Repository TypeAvailable only for Java, Tomcat, or EDAS-Container (HSF) applications in Container Service for Kubernetes (ACK) clusters. Not supported in ACK Serverless clusters.
Region of Container RegistryRequired only for Container Registry Enterprise Edition. Select the region where the image resides.
Container RegistryRequired only for Container Registry Enterprise Edition. Select the image to deploy.
Image Repository NamespaceSelect a namespace, or click + Create Namespace to create one.
Note

Image build tasks run in your cluster and consume cluster resources. The default resource limit per build task is 1 GB per core. To adjust this, see How do I adjust resource limits for image building?.

Image build scheduling rules

If you use a repository of Container Registry Personal Edition or Container Registry Enterprise Edition to store the created image, EDAS schedules image build tasks based on node labels and taints:

BehaviorNode configuration
EDAS rejects scheduling build tasks to the nodeNode has the edas.image.build=disable label
EDAS prefers scheduling build tasks to the nodeNode has the edas.image.build=enable label
Build tasks tolerate the nodeNode has the key=edas.image.build, effect=NoSchedule taint
Note

To dedicate a node for build tasks, add both the edas.image.build=enable label and the key=edas.image.build, effect=NoSchedule taint. This prevents pods that do not tolerate the taint from being scheduled to the node while allowing build tasks to run on it.

Resource quota (all deployment types)

ParameterDescription
Single-pod Resource QuotaCPU, memory, and ephemeral storage reserved for each pod. A value of 0 (default) means no limit. If ephemeral storage is not specified, the maximum depends on the cluster capacity.

Step 2: Configure the release policy

The release policy controls how many instances receive the new version in the initial canary batch and how the remaining instances are updated afterward.

ParameterDescription
Number of Instances for Canary ReleaseNumber of instances in the first (canary) batch. The total instance count is displayed next to this field. For stability, set this to less than half the total.
Remaining BatchesNumber of batches for updating the remaining instances after the canary batch.
Batch ModeRequired when Remaining Batches is greater than 1. Automatic: releases batches at the specified Interval (in minutes). Manual: requires you to trigger each batch.
Deployment Interval Between BatchesWhen a batch contains multiple instances, this is the delay (in seconds) between deploying to each instance within that batch.
Note

After the canary batch is deployed, you must manually approve the promotion to start the remaining batches.

The Publish Policy Configuration panel on the right side of the page shows a visual summary of the release flow based on your settings.

Step 3: Configure the canary release rule

The canary release rule determines how traffic reaches the canary instance group. EDAS supports three routing strategies: Canary Release by Content, Canary Release by Ratio, and Canary Release By Lane.

StrategyWhen to use
Canary Release by ContentRoute requests that match specific headers, cookies, or parameters to the canary group. Best for targeted testing with specific users or request types.
Canary Release by RatioRoute a fixed percentage of all traffic to the canary group. Best for broad validation with a representative sample of traffic.
Canary Release By LaneRoute traffic through a predefined lane for end-to-end canary validation across a chain of microservices. Best for validating changes that span multiple services in a call chain.

Content-based routing

Route traffic to the canary group when requests match specific attributes.

  1. Click Add Policy. In the Add a canary release by content policy panel, specify a Policy Name and click Create Inbound Traffic Rule, then click OK.

  2. Select the created policy from the Select Policy drop-down list.

Note

Create multiple inbound traffic rules within a single policy. All rules take effect simultaneously.

ParameterDescription
Protocol TypeFor Spring Cloud: specify a relative HTTP path. For Dubbo: select a service and method.
Conditional ModeMeet All Following Conditions (AND logic) or Meet Any of Following Conditions (OR logic).
ConditionsFor Spring Cloud: match on Cookie, Header, or Parameter. For Dubbo: set Parameter and Expression for Getting Parameter Values to match your application.

Percentage-based routing

Route a fixed percentage of traffic to the canary group.

ParameterDescription
Traffic RatioThe percentage of traffic forwarded to the canary group.

Lane-based routing

Route traffic through a predefined lane for end-to-end canary validation across multiple services in a call chain.

  1. Click +Add Policy. In the Add Lane Canary Release Policy panel, specify Policy Name, Lane Group, and Lane, then click OK.

  2. Select the created policy from the Select Policy drop-down list.

ParameterDescription
Lane GroupSelect an existing lane group. To create one, see Create a lane group.
LaneSelect an existing lane. To create one, see Create a lane.
Note

A lane isolates a set of application instances for traffic routing. Set up lane groups and lanes before using this routing strategy.

Monitor and promote the release

After the canary batch is deployed, EDAS displays the deployment progress and status on the Upgrade History page.

  1. Verify that traffic is distributed as expected. For details, see Monitor canary traffic.

  2. If the canary instances are healthy, go to the Change List page and click Start the Next Batch to promote the release to subsequent batches.

  3. Repeat until all batches are complete.

Roll back a release

If issues arise during canary verification:

  1. On the Change List page, click RollBack in the upper-right corner.

  2. In the confirmation dialog box, click OK.

Verify the release

After all batches complete, confirm the application runs the new version:

  1. Go to the Application Overview page of the application.

  2. In the Deployment specifications section, check that the deployment package version matches the newly deployed version.