All Products
Search
Document Center

Container Service for Kubernetes:Deploy the NGINX Ingress Controller

Last Updated:Oct 27, 2026

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.

Important

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

  1. Log on to the ACK console. In the left navigation pane, click Marketplace > Marketplace.

  2. On the Marketplace page, click the App Catalog tab, and then search for and select ack-ingress-nginx-v1.

  3. On the ack-ingress-nginx-v1 add-on page, click Deploy in the upper-right corner.

  4. In the panel that appears, select a Cluster and a Namespace, and then enter a Release Name.

    Note

    When 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.

  5. 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 Nodes > Node Pools 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 nodeSelector configuration that follows.

    • To deploy in an on-cloud node pool, configure the following parameters:

      • In the nodeSelector parameter, add the on-cloud node pool label: alibabacloud.com/nodepool-id: {node pool ID}.

        Note

        Among the node pool selectors, nodeSelector requires only the alibabacloud.com/nodepool-id: {node pool ID} entry.

        ##
        nodeSelector:
          kubernetes.io/os: linux
          alibabacloud.com/nodepool-id: np-xxxx
      • In the ingressClassResource parameter, set name and controllerValue.

        Note

        If you deploy ack-ingress-nginx-v1 multiple times in the same ACK Edge cluster, ensure that each deployment has a unique name and controllerValue. 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 nodeSelector parameter, add the edge node pool label: alibabacloud.com/nodepool-id: {node pool ID}.

        Note

        Among the node pool selectors, nodeSelector requires only the alibabacloud.com/nodepool-id: {node pool ID} entry.

      • Set global.edgeNodePool to true. 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 ingressClassResource parameter, set name and controllerValue.

        Note

        If you deploy ack-ingress-nginx-v1 multiple times in the same ACK Edge cluster, ensure that each deployment has a unique name and controllerValue. 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".

  6. Click OK to complete the installation.

  7. In the left-side navigation pane of the cluster management page, choose Applications > Helm.

    The Helm page shows that the NGINX Ingress Controller is deployed.