In cloud-edge collaboration scenarios, traffic processing for services under edge units is prioritized within edge node pools. This topic describes how to deploy the NGINX Ingress controller in both edge node pools and cloud node pools in ACK Edge clusters, providing load balancing for edge unit services.
Background information
ACK Edge provides the following capabilities for non-intrusive enhancements:
Edge autonomy: self-healing during network disruptions
Edge units: logical isolation of edge node groups
Edge traffic management: local-first traffic prioritization
Native operational API support: full Kubernetes API compatibility
ACK Edge natively supports unified application lifecycle management and resource scheduling across cloud-edge environments. You can add edge nodes to an ACK Edge cluster in a few steps.
Usage notes
When you deploy ack-ingress-nginx-v1 in edge node pools and cloud node pools, take note of the following:
The Kubernetes version of the ACK Edge cluster is 1.19 or later.
You can deploy
ack-ingress-nginx-v1in an ACK Edge cluster multiple times. Specify a unique release name each time you deployack-ingress-nginx-v1. We recommend using independent namespaces for each deployment to isolate operations.If you use the default settings during the first time you deploy
ack-ingress-nginx-v1in an ACK Edge cluster, ack-ingress-nginx-v1 is deployed in the default node pool of the cluster.
Procedure
Log on to the ACK console. In the left-side navigation pane, choose .
On the App Catalog tab of the Marketplace page, find and click ack-ingress-nginx-v1.
On the ack-ingress-nginx-v1 page, click Deploy in the upper-right corner of the page.
In the Deploy wizard, set the Cluster, Namespace, and Release Name parameters.
NoteWhen you deploy ack-ingress-nginx-v1 in a node pool, we recommend that you specify the release name in the ack-ingress-nginx-v1-{Node pool name} format. Example: ack-ingress-nginx-v1-edge-hangzhou.
Click Next to set the parameters on the Parameters wizard page.
To retrieve the node pool IDs for
service.nodeSelectorconfiguration, go to the cluster details page in the ACK console and choose in the left-side navigation pane. Then, retrieve the cloud node pool ID and edge node pool ID in the node pool list.Set the following parameters when deploying ack-ingress-nginx-v1 in a cloud node pool:
Add the following label to the
nodeSelectorparameter:alibabacloud.com/nodepool-id {Node pool ID}.NoteYou need to specify only
alibabacloud.com/nodepool-id: {Node pool ID}in thenodeSelectorparameter.
Set the
nameandcontrollerValuefields in theingressClassResourceparameter.NoteIf you want to deploy ack-ingress-nginx-v1 in an ACK Edge cluster multiple times, you must specify unique values for the
nameandcontrollerValuefields each time you deploy ack-ingress-nginx-v1. Set the fields based on the following description:Set
namein theack-nginx-{Node pool name}format. Example:ack-nginx-edge-hangzhou.Set
controllerValuein the"k8s.io/ack-ingress-nginx-{Node pool name}"format. Example:"k8s.io/ack-ingress-nginx-edge-hangzhou".

Set the following parameters when deploying ack-ingress-nginx-v1 in an edge node pool:
Add the following label to the
nodeSelectorparameter:alibabacloud.com/nodepool-id: {Node pool ID}.NoteYou need to specify only
alibabacloud.com/nodepool-id: {Node pool ID}in thenodeSelectorparameter.
Set the
global. edgeNodePoolparameter totrue. ack-ingress-nginx-v1 automatically performs the following operations:The Service type of the NGINX Ingress controller deployed on edge nodes will be automatically modified from
LoadBalancertoNodePort. To expose your applications deployed at the edge to the public Internet, you must configure a load balancer with a public IP address.Specify a public image address for the NGINX Ingress controller. This prevents deployment failures when the system fails to pull private images that are hosted on Alibaba Cloud.

Set the
nameandcontrollerValuefields in theingressClassResourceparameter.NoteIf you want to deploy ack-ingress-nginx-v1 in an ACK Edge cluster multiple times, you must specify unique values for the
nameandcontrollerValuefields each time you deploy ack-ingress-nginx-v1. Set the fields based on the following description:Set
namein theack-nginx-{Node pool name}format. Example:ack-nginx-edge-hangzhou.Set
controllerValuein the"k8s.io/ack-ingress-nginx-{Node pool name}"format. Example:"k8s.io/ack-ingress-nginx-edge-hangzhou".

Click OK.
In the left-side navigation pane of the cluster details page, choose .
On the Helm page, you can find that the NGINX Ingress controller is deployed.