In cloud-edge collaboration, the workloads in an edge unit keep their traffic local: traffic is processed inside the edge node pool first. Deploy the NGINX Ingress Controller in the on-cloud and edge node pools of an ACK Edge cluster to provide capabilities such as load balancing for these workloads.
Because the Ingress NGINX open-source project will no longer receive maintenance updates after March 2026, Container Service for Kubernetes will stop maintaining the NGINX Ingress Controller add-on. Make sure that you understand the risks of using this add-on. For more information, see [Product Announcement] End of maintenance for Nginx Ingress Controller.
Background information
Alibaba Cloud ACK Edge uses non-intrusive enhancements to provide capabilities such as edge autonomy, edge units, edge traffic management, and native O&M API support. It natively supports unified application lifecycle management and unified resource scheduling in edge computing scenarios, and your own edge nodes can be quickly added to the cluster.
Usage notes
Note the following when you deploy ack-ingress-nginx-v1 in on-cloud and edge node pools:
-
The ACK Edge cluster version must be 1.19 or later.
-
ack-ingress-nginx-v1 supports multiple deployments in the same ACK Edge cluster. Each deployment requires a unique release name. Using a separate namespace for each deployment simplifies management.
-
If you do not change the parameter settings for the first deployment, ack-ingress-nginx-v1 is deployed by default to the default node pool of the ACK Edge cluster.
Procedure
-
Log on to the ACK console. In the left navigation pane, click .
-
On the Marketplace page, click the App Catalog tab, and then search for and select ack-ingress-nginx-v1.
-
On the ack-ingress-nginx-v1 add-on page, click Deploy in the upper-right corner.
-
In the panel that appears, select a Cluster and a Namespace, and then enter a Release Name.
NoteWhen you deploy ack-ingress-nginx-v1 in a node pool, name the release in the recommended ack-ingress-nginx-v1-{node-pool-name} format. For example: ack-ingress-nginx-v1-edge-hangzhou.
-
Click Next to go to the Parameters page and configure the parameters.
On the the ACK console, go to the cluster management page and choose in the left-side navigation pane to view the node pool list. Find the IDs of the on-cloud node pool and the edge node pool for the
nodeSelectorconfiguration that follows.-
To deploy in an on-cloud node pool, configure the following parameters:
-
In the
nodeSelectorparameter, add the on-cloud node pool label:alibabacloud.com/nodepool-id: {node pool ID}.NoteAmong the node pool selectors,
nodeSelectorrequires only thealibabacloud.com/nodepool-id: {node pool ID}entry.## nodeSelector: kubernetes.io/os: linux alibabacloud.com/nodepool-id: np-xxxx -
In the
ingressClassResourceparameter, setnameandcontrollerValue.NoteIf you deploy ack-ingress-nginx-v1 multiple times in the same ACK Edge cluster, ensure that each deployment has a unique
nameandcontrollerValue. Use the following recommended naming conventions:-
name:ack-nginx-{node-pool-name}, for example,ack-nginx-edge-hangzhou. -
controllerValue:"k8s.io/ack-ingress-nginx-{node-pool-name}", for example,"k8s.io/ack-ingress-nginx-edge-hangzhou".
ingressClassResource: # name & controllerValue are used instead of ingressClass, # and name can also be used in kubernetes.io/ingress.class annotation. # prevent override of default ingress class in the add-on, controllerValue's default value is 'k8s.io/ack-ingress-nginx', # and default name is 'ack-nginx'. # please modify both name and controllerValue to unique values. name: ack-nginx-edge-hangzhou controllerValue: "k8s.io/ack-ingress-nginx-edge-hangzhou" -
-
-
To deploy in an edge node pool, configure the following parameters:
-
In the
nodeSelectorparameter, add the edge node pool label:alibabacloud.com/nodepool-id: {node pool ID}.NoteAmong the node pool selectors,
nodeSelectorrequires only thealibabacloud.com/nodepool-id: {node pool ID}entry. -
Set
global.edgeNodePooltotrue. ack-ingress-nginx-v1 automatically makes the following changes:-
Changes the type of the NGINX Ingress Controller Service deployed on edge nodes from LoadBalancer to NodePort. If you need to expose the workloads on the edge side to the internet, separately configure a load balancer with a public IP address.
-
Changes the image used by the NGINX Ingress Controller to an image from a public registry to avoid pull failures on edge nodes, which cannot pull the internal-network image.
global: clusterType: "Edge" # For edge cluster, set it to true if the controller will be deployed in an edge node pool. edgeNodePool: true -
-
In the
ingressClassResourceparameter, setnameandcontrollerValue.NoteIf you deploy ack-ingress-nginx-v1 multiple times in the same ACK Edge cluster, ensure that each deployment has a unique
nameandcontrollerValue. Use the following recommended naming conventions:-
name:ack-nginx-{node-pool-name}, for example,ack-nginx-edge-hangzhou. -
controllerValue:"k8s.io/ack-ingress-nginx-{node-pool-name}", for example,"k8s.io/ack-ingress-nginx-edge-hangzhou".
-
-
-
-
Click OK to complete the installation.
-
In the left-side navigation pane of the cluster management page, choose .
The Helm page shows that the NGINX Ingress Controller is deployed.