Upgrade the NGINX Ingress Controller

Updated at:

Deprecated cluster APIs can require a matching NGINX Ingress Controller version after a cluster upgrade. Older add-on versions can carry security and stability risks and lack features, so move to the latest version. Upgrades run in phases; monitor the add-on and your workload throughout to keep service traffic uninterrupted.

Important

Because the Ingress NGINX open-source project will no longer receive maintenance updates after March 2026, Container Service for Kubernetes will discontinue maintenance for the NGINX Ingress Controller add-on. Understand the associated risks before you continue. For more information, see [Product Announcement] End of maintenance for Nginx Ingress Controller.

Upgrade process

NGINX Ingress Controller is a critical add-on in the data plane and has high stability requirements.

The new version can contain many custom changes to NGINX Ingress Controller, and a large version gap can cause some configuration incompatibilities. These incompatibilities might not appear immediately after the upgrade. Therefore, upgrading the add-on to the latest version in a single step is risky.

To make sure that the add-on and your workload run as expected after you upgrade NGINX Ingress Controller, the upgrade runs in phases. During the upgrade, you can check the workload status and roll back if an issue occurs.

Part 1: Precheck

The precheck runs automatically before the add-on upgrade starts to verify that the current add-on status meets the upgrade requirements. If the add-on has settings that do not meet the requirements or is unhealthy, it cannot pass the precheck. You cannot continue the upgrade until you manually resolve the issues.

Part 2: Verification phase

The verification phase scales out one Pod that runs the new add-on version to verify the status of the new version and confirm that the Ingress rules work as expected. After the Pod scales out successfully, some traffic is sent to it. Then check for traffic anomalies by using container logs, Simple Log Service (SLS), or Managed Service for Prometheus monitoring.

After the verification Pod scales out successfully, the upgrade pauses. After you confirm that the add-on and your workload have no issues, manually confirm that the upgrade can continue to the next phase. If an issue occurs, you can roll back to delete the new-version Pod and terminate the upgrade.

This step is implemented by modifying the spec.minReadySeconds and spec.strategy fields in the Deployment.

Part 3: Release phase

The release phase runs a complete rolling upgrade that replaces the old add-on version with the new version. After all Pods are updated, the upgrade pauses so that you can perform a final check on the add-on and your workload. After you confirm that there are no issues, the upgrade ends. If an issue occurs, you can roll back to reset all Pods to the old version and end the upgrade.

Part 4: Rollback (optional)

If the add-on or your workload becomes abnormal while the upgrade is paused after the verification phase or the release phase, you can roll back. Rollback restores the add-on to its initial pre-upgrade state.

image

Before you begin

  • NGINX Ingress Controller no longer maintains v1.2 and earlier versions. For more information, see [Product Announcement] Announcement on End of Maintenance for Nginx Ingress Controller v1.2 and Earlier. Outdated add-on versions cannot use the features and fixes supported by newer versions, cannot receive timely technical support, and face the risk of security vulnerabilities that cannot be fixed. Upgrade the add-on.

  • Before you upgrade the add-on, make sure that you have a way to monitor service traffic so that you can identify issues early. Use Simple Log Service (SLS) or Managed Service for Prometheus to check the service traffic. For configuration instructions for these two observation methods, see Analyze and monitor the access log of nginx-ingress-controller and Configure Managed Service for Prometheus.

  • Confirm that the add-on is healthy, all Pods are Ready, and no error logs exist.

  • Confirm that no automatic scaling rules, such as Horizontal Pod Autoscaler (HPA), are used. If any are used, delete them before the upgrade and restore them after the upgrade completes. For the impact of deleting an HPA resource, see Precheck details.

  • Confirm that the LoadBalancer Service for NGINX Ingress Controller is healthy (the default name is nginx-ingress-lb) and that no abnormal events are reported.

  • Do not modify the add-on or the Ingress rules during the upgrade.

  • If your NGINX Ingress Controller version is earlier than v0.44, pay attention to the differences in prefix matching when you upgrade to a later version. For more information, see Path matching logic changes.

  • The add-on upgrade uses a canary release. First, the upgrade creates one NGINX Ingress Pod that runs the target version. After traffic verification confirms that there are no issues, click Confirm to trigger a rolling update. Make sure that the cluster has enough schedulable nodes for the NGINX Ingress Pod to be created and scheduled.

Procedure

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

  2. On the Clusters page, click the name of your cluster. In the left navigation pane, click Components and Add-ons .

  3. On the Add-ons page, find the NGINX Ingress Controller add-on and click Upgrade in the lower-right corner of the add-on.

  4. In the displayed upgrade panel, click Start and confirm to start the upgrade.

    Note

    Leave this page at any time during the upgrade and return to the process by clicking Add-ons and then Progress.

  5. The first phase of the process runs a precheck. After the precheck completes, the process automatically enters the next phase.

    If the precheck fails, click View Details under Precheck to open the Check Report page. Troubleshoot the failed check items. For more information, see Precheck details. After you resolve the issue, click Retry to restart the upgrade.

  6. After the verification phase is complete, the upgrade pauses. Verify the add-on status and the workload status. For verification methods, see Verification phase details.

    • If scaling out fails, see What do I do if Pod scaling fails during the verification or release phase?. Also check the specific reason why the Pod failed to start in the cluster. After you resolve the issue, click Retry to retry this phase.

    • If a workload verification issue occurs, click Rollback to perform a rollback. After the rollback is complete, the upgrade ends. Return to the add-on management page and click Upgrade to restart the upgrade.

  7. After you confirm that the verification phase has no issues, click Continue to enter the release phase. After the release-phase rolling update completes, the upgrade pauses. Perform a final check on the add-on and workload status. If workload verification fails, click Rollback to perform a rollback. After the rollback is complete, the upgrade ends. Return to the add-on management page and click Upgrade to restart it.

  8. After you confirm that the add-on and workload status have no anomalies, click Continue to finish the upgrade.

    Note

    Keep the total duration of the upgrade process within one week.

Precheck details

Precheck table

Check item

Check content

Troubleshooting

Deployment exists

The add-on Deployment (kube-system/nginx-ingress-controller) exists.

-

Deployment health

All Pods managed by the add-on Deployment are Ready and are not in an unstable state such as a rolling update.

-

Pod error logs

Check the most recent 200 Pod log entries. No error log at the Error or Fatal level can exist.

Existing logs can indicate that the add-on recently reported errors because of configuration errors or other issues. Resolve the issue before you restart the upgrade. To resolve an issue based on logs, see Troubleshoot NGINX Ingress issues.

LoadBalancer Service health

First, check whether the LoadBalancer Service (kube-system/nginx-ingress-lb) for NGINX Ingress Controller exists. If it exists, the system further checks whether the Service has any error events.

A missing Service is also considered to have a Warning event.

If the Service does not exist, see Important notes and high-risk operations and follow the repair procedure in "Manually delete the nginx-ingress-lb Service in the kube-system namespace when the NGINX Ingress Controller add-on is installed."

If the Service exists but has an abnormal event, find a solution based on the event content. For more information, see Service error events and solutions. This check is skipped if the Service is not a LoadBalancer.

HPA

The add-on Deployment does not use HPA. If HPA is used, its automatic scaling policy can disrupt the upgrade status during the add-on upgrade.

Warning

Deleting the HPA resource removes the object and its scaling thresholds. The upgrade does not restore them automatically. Export the spec first, for example by running kubectl get hpa -o yaml, so that you can re-apply the same thresholds afterwards.

Delete the HPA resource from the cluster during the upgrade, and re-enable it after the upgrade is complete.

Deployment template

The add-on Deployment template contains only compatible modifications.

Some custom configurations or modifications that you previously made to the NGINX Ingress Controller Deployment might not be preserved automatically during the upgrade.

  • The following fields are preserved after the upgrade and entered as custom parameters in the new add-on template:

    • Number of replicas (replicas)

    • Pod labels (template.metadata.labels)

    • Node selector (template.spec.nodeSelector)

    • Tolerations (template.spec.tolerations)

    • Resource limits for the controller container (template.spec.containers[0].resources)

  • The following fields do not affect the precheck, but are discarded after the upgrade:

    • redeploy-timestamp in the Pod Annotation (template.metadata.annotations).

    • kubectl.kubernetes.io/restartedAt in the Pod Annotation.

    • scheduler.alpha.kubernetes.io/critical-pod in the Pod Annotation.

    • The imagePullPolicy of the image.

    • template.spec.containers.securityContext.procMount is discarded when it is Default.

    • Webhook configurations (runtime parameters, mounted volumes, and ports).

These template changes do not cause the check to fail. Other changes cause the precheck to fail and affect the success rate of the upgrade. These include unauthorized template modifications and outdated versions that do not meet the upgrade requirements. Common causes of failed checks include:

  • A plugin such as Enterprise Distributed Application Service (EDAS) is used to mount a custom Volume. Temporarily disable the related EDAS features during the upgrade and restore them after the upgrade is complete.

  • podAntiAffinity differs from the standard template, possibly because the add-on template changed (for example, from required to preferred). Manually modify podAntiAffinity to match the standard template first.

  • nodeAffinity is used to specify dedicated nodes. Replace it with nodeSelector.

If the Deployment template check fails, you can resolve the issue by manually restoring the template.

Ingress configuration

Ingress resources in the cluster use only compatible features.

If Ingress resources in the cluster use incompatible features, the workload might not forward traffic normally after the upgrade and can become unavailable. To identify and fix the issue, see Upgrade compatibility below.

Add-on configuration

The add-on ConfigMap (kube-system/nginx-configuration) contains no incompatible configurations.

If the ConfigMap in the cluster uses incompatible features, the workload might not forward traffic normally after the upgrade and can become unavailable. To identify and fix the issue, see Upgrade compatibility below.

Upgrade compatibility

During the development and maintenance of the add-on, a new NGINX Ingress Controller version may introduce new features, improve existing features, or fix security issues. However, changes such as internal architecture adjustments or changes to dependency libraries may also cause compatibility differences with earlier versions. For the NGINX Ingress Controller change log, see NGINX Ingress controller.

Maximum number of request headers

Affected versions: earlier than v1.14.5-release.4 (excluding v1.14.5-release.4).

To fix CVE-2026-49975, the max_headers directive was added in v1.14.5-release.4. By default, it limits a single request to no more than 1,000 HTTP headers. Requests that exceed the limit return 400 and the connection is closed. Before you upgrade, make sure that a single request in your workload carries no more than 950 HTTP headers. This leaves capacity for HTTP headers inserted by other gateways along the path.

real_ip_header behavior changes

Affected versions: earlier than v1.13.8-release.1 (excluding v1.13.8-release.1).

v1.13.x changes how the actual client IP is obtained when both use-proxy-protocol and use-forwarded-headers are enabled. The behavior applies when you use PROXY protocol to obtain the actual client IP, use-forwarded-headers is also enabled, and proxy-real-ip-cidr retains its default value 0.0.0.0/0. All PROXY protocol addresses are then treated as trusted proxies. A client-provided X-Forwarded-For may then be trusted, which allows the client IP to be spoofed.

During the upgrade, carefully verify the nginx-ingress-controller configuration. To keep both use-proxy-protocol: "true" and use-forwarded-headers: "true", narrow proxy-real-ip-cidr from the default 0.0.0.0/0 to the CIDRs of actual trusted TCP peers and front-end L7 proxy egresses. Examples include the Local IP CIDR of a Network Load Balancer (NLB) or Classic Load Balancer (CLB) instance. Traffic that directly reaches the TCP load balancer then continues to use the PROXY protocol address, and only forwarded-for chains from trusted front-end proxies are parsed.

Default security configuration adjustments

Affected versions: earlier than v1.12.6-release.1 (excluding v1.12.6-release.1).

To improve the security of ingress-nginx, the default values of some security configurations were changed in v1.12.6-release.1. The affected configurations include:

  • annotations-risk-level has a default level that is lowered from Critical to High. This change makes existing Critical-level Annotations on Ingress resources in the cluster unavailable, such as Annotations related to snippet.

  • allow-cross-namespace-resources is changed from true to false. By default, this configuration prohibits cross-namespace references to resources such as ConfigMap and Secrets.

  • strict-validate-path-type is changed from false to true. This configuration enables strict path address validation by default. This means that paths of the Exact and Prefix types must begin with / and can contain only letters, digits, -, _, ., and additional / characters.

If you have used or want to use features that these security configurations prohibit, fully assess the security risk. Then manually enable the features by adding configurations to the ConfigMap kube-system/nginx-configuration.

Native NGINX validation is disabled by default

Affected versions: earlier than v1.11.5-aliyun.1 (excluding v1.11.5-aliyun.1).

To fix CVE-2025-1974, NGINX Ingress Controller disables native NGINX validation (the nginx -t command logic) by default starting with v1.11.5-aliyun.1. Although the NGINX Ingress Controller add-on still enables the validation webhook, the validation webhook does not validate rules that use snippet configurations. By default, it validates only standard non-snippet Annotations. For rules configured with snippets, you can check configurations only through error logs generated at NGINX runtime. For more information about the vulnerability, see Security Advisory: NGINX Ingress Controller Vulnerabilities (CVE-2025-1974 and Related CVEs).

If you enable the snippet Annotation feature, check the NGINX Ingress Controller Pod logs for Error-related logs each time you change the corresponding Ingress rules:

kubectl logs -f <Nginx-ingress-pod-name> -n kube-system |grep Error

If you still need native NGINX validation, fully assess the risk and then manually enable it in the ConfigMap kube-system/nginx-configuration by adding enable-nginx-native-validation: "true".

Snippet Annotations are disabled by default

Affected versions: earlier than v1.9.3-aliyun.1 (excluding v1.9.3-aliyun.1).

For security reasons, NGINX Ingress Controller disables all snippet Annotations by default starting with v1.9.3-aliyun.1. These may include:

  • nginx.ingress.kubernetes.io/configuration-snippet

  • nginx.ingress.kubernetes.io/server-snippet

  • nginx.ingress.kubernetes.io/stream-snippet

  • nginx.ingress.kubernetes.io/auth-snippet

  • nginx.ingress.kubernetes.io/modsecurity-snippet

Because of security and stability risks, prioritize using related Annotations or configuration items to implement the required features.

If you still need the snippet Annotation feature, fully assess the risk and then manually enable the Annotation feature in the ConfigMap kube-system/nginx-configuration by adding allow-snippet-annotations: "true".

Earlier versions of TLS are not supported

Affected versions: earlier than v1.7.0-aliyun.1 (excluding v1.7.0-aliyun.1).

Because TLS 1.1 and earlier versions have security issues, new NGINX Ingress Controller versions no longer support the TLS 1.1 and TLS 1.0 encryption methods by default. Therefore, before you upgrade, make sure that your workload does not depend on TLS 1.1 or earlier, and remove these versions from the configuration. ConfigMap changes take effect immediately.

For example, if the ConfigMap (kube-system/nginx-configuration) of the NGINX Ingress Controller add-on is configured as follows:

ssl-protocols: SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3

After you confirm that your workload is unaffected, remove this line and use the default setting. Alternatively, remove the four entries SSLv3, SSLv2, TLSv1, and TLSv1.1, and change the line to:

ssl-protocols: TLSv1.2 TLSv1.3

If you need to force the use of earlier TLS encryption methods, see Which TLS versions are supported? for configuration instructions.

Incompatible usage of nginx.ingress.kubernetes.io/rewrite-target

Affected versions: earlier than 0.22.0 (excluding 0.22.0).

  • Version 0.22.0 changed the usage of the nginx.ingress.kubernetes.io/rewrite-target Annotation. In 0.22.0 and later, you must explicitly specify the use of capturing groups when you use rewrite-target.

  • The rewrite-target feature in versions earlier than 0.22.0 is incompatible with the rewrite-target feature in the latest version. Before the add-on upgrade, you can use configuration-snippet instead of the rewrite-target Annotation.

For example, in versions earlier than 0.22.0, the rule is:

Expand to view the complete YAML sample code

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
  name: rewrite
  namespace: default
spec:
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      - path: /something/
        pathType: Prefix
        backend:
          service:
            name: http-svc
            port:
              number: 80
      - path: /something123/
        pathType: Prefix
        backend:
          service:
            name: http-svc-1
            port:
              number: 80

Change it to:

Expand to view the complete YAML sample code

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    # Use the rewrite directive. /something is the path in the path field, without the trailing slash.
    # Ingress contains multiple paths, so add multiple rewrite directives.
    nginx.ingress.kubernetes.io/configuration-snippet: |
      rewrite "(?i)/something(/|$)(.*)" /$2 break;
      rewrite "(?i)/something123(/|$)(.*)" /$2 break;
  name: rewrite
  namespace: default
spec:
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      - path: /something/ # Keep this path consistent with the path in the earlier Ingress resource.
        pathType: Prefix
        backend:
          service:
            name: http-svc
            port:
              number: 80
      - path: /something123/ # Keep this path consistent with the path in the earlier Ingress resource.
        pathType: Prefix
        backend:
          service:
            name: http-svc-1
            port:
              number: 80

After you change the configuration to the preceding format, you can proceed with the upgrade. After the upgrade is complete, change the Ingress to use the new version.

YAML

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    # Reference the matched content.
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  name: rewrite
  namespace: default
spec:
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      # Use a capturing group.
      - path: /something(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: http-svc
            port:
              number: 80
      # Use a capturing group.
      - path: /something123(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: http-svc-1
            port:
              number: 80

The native NGINX root and alias directives are no longer supported in v1.2.1 and later

Affected versions: earlier than v1.2.1-aliyun.1 (excluding v1.2.1-aliyun.1).

Because the root and alias directives have security issues, new NGINX Ingress Controller versions (NGINX Ingress controller) no longer support the root and alias directives. Therefore, before you upgrade, make sure that your Ingress does not include native NGINX root or alias directives configured through snippets.

Path matching logic changes

Prefix matching logic can differ among NGINX Ingress Controller versions, which can cause workload access issues.

  • In earlier NGINX Ingress Controller versions (before v0.44), prefix matching is more permissive. A configuration such as /aaa/bbb can match the request URL /aaa/bbbbb.

  • After you upgrade to a later version, prefix matching can become stricter and match only the exact request path. A path that previously matched, such as /aaa/bbbbb, might no longer match, which can cause a 404 error.

Example of path matching logic changes

  apiVersion: extensions/v1beta1
  kind: Ingress
  metadata:
    labels:
      ingress-controller: nginx
    name: test
    namespace: default
  spec:
    ingressClassName: nginx
    rules:
    - host: www.example.com
      http:
        paths:
        - backend:
            service:
              name: api-resources-svc
              port:
                number: 8080
          path: /api/resource

The preceding sample Ingress resource behaves differently in different versions:

  • Behavior in earlier versions

    In an earlier NGINX Ingress version, such as v0.22.0.5-552e0db-aliyun, the corresponding NGINX configuration is:

    Location /api/resource   ## No trailing "/"

    In the preceding configuration, the path /api/resource can be accessed through http://www.example.com/api/resource in earlier NGINX versions.

    Note

    The actual access path is resource s rather than resource.

  • Behavior in later versions

    If you upgrade NGINX Ingress Controller to a later version, such as v1.2.1-aliyun.1+, the corresponding NGINX configuration is:

    Location /api/resource/  # Added a trailing "/"
    {
    }
    ...
    Location = /api/resource  # Added a Location for an exact match
    {
    }

    Accessing http://www.example.com/api/resources returns a 404 error.

Affected versions

NGINX Ingress Controller versions earlier than v0.44 are affected. For the NGINX Ingress Controller version history, see NGINX Ingress controller. For information about the related PR, see kubernetes/ingress-nginx #6443.

Gzip is disabled by default after an add-on upgrade

The features that are enabled by default can differ between versions. For example, gzip is enabled by default in NGINX Ingress Controller versions earlier than v0.40, but is disabled by default in later versions. After the add-on is updated, gzip is turned off, which can increase traffic on the CLB associated with NGINX Ingress Controller. If the CLB instance uses the pay-as-you-go billing method, costs can increase.

Solutions

In the kube-system namespace, edit the nginx-configuration ConfigMap and manually enable gzip compression.

data:
  use-gzip: true

Verification phase details

Verify add-on and workload status

In addition to your own workload monitoring capabilities, ACK provides SLS logs, Managed Service for Prometheus dashboards, and container logs to monitor the running status of NGINX Ingress Controller. To enable these services, see Analyze and monitor the access log of nginx-ingress-controller and Configure Managed Service for Prometheus.

Simple Log Service (SLS)

View the logs collected by SLS in the ACK console.

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

  2. On the Clusters page, click the name of your cluster. In the left navigation pane, click Operations > Log Center.

  3. Click the Application Logs tab. In the Logstore drop-down list, select nginx-ingress, and then click Select Logstore.

    Note

    If your Logstore does not contain the nginx-ingress entry, verify that log collection is configured for the add-on. For more information, see Analyze and monitor the access log of nginx-ingress-controller.

The displayed logs include application access logs. Specify a Pod in the query statement, such as a Pod of the new add-on version, to view only the access logs of that Pod. Check whether the request success rate of the new Pod is abnormal and whether its request count matches that of the old Pod. If the difference is significant, you can roll back.

Note

When a request does not match any Ingress rule and returns 404, an access log is not recorded by default.

10

Managed Service for Prometheus dashboards

Use the dashboards provided by Managed Service for Prometheus to observe the overall request status of the add-on.

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

  2. On the Clusters page, click the name of your cluster. In the left navigation pane, click Operations > Prometheus Monitoring.

  3. Click the Network Monitoring tab, and then click Ingresses.

    Note

    If Ingresses is not available in monitoring, verify that Prometheus metrics collection is configured for the add-on. For more information, see Configure Managed Service for Prometheus.

The dashboards show the operational metrics of Ingresses. Select a Pod to view its metrics. Likewise, check whether the request success rate of the new Pod is abnormal and whether its request count matches that of the old Pod. If the difference is significant, you can roll back.

Note

By default, metrics are not recorded for Ingress rules that do not specify a Host (the default is the wildcard "*").

Pod logs

Use kubectl on the command line to access Pod logs and check for errors.

  • View the NGINX error logs in the Pod, including the warn, error, and crit levels:

    kubectl logs -n kube-system <Pod-name> | grep -e warn -e error -e crit
  • View the controller error logs in the Pod:

    kubectl logs -n kube-system <Pod-name> | grep "^[EF]"

FAQ

Can NGINX Ingress Controller be upgraded to a specified version? After the upgrade succeeds, can it be rolled back to an earlier version?

NGINX Ingress Controller cannot be upgraded to a specified version. The add-on is upgraded in phases until it reaches the latest version. After the upgrade succeeds, it cannot be rolled back.

What do I do if Pod scaling fails during the verification or release phase?

Cause

Solutions

An error, such as a configuration load failure, occurs when the new-version Pod starts, which causes the Pod to remain in a crash state.

Use the methods in the Pod logs section to view the error logs of the Pod. To identify and resolve the issue, see Troubleshoot NGINX Ingress issues.

This commonly occurs when NGINX Ingress Controller is deployed on dedicated nodes. When a new Pod is scaled out, the configured resource limits and node selectors can leave no available node to schedule the new Pod.

Temporarily scale out nodes, or scale down NGINX Ingress Controller during off-peak hours and then upgrade it, so that Pods can be scheduled as expected during the upgrade.

What do I do if the Deployment template precheck fails?

If your Deployment template fails the precheck, click the link to the right of Cause of Error to open the add-on differences page and view the fields that failed the check.

  1. On the NGINX Ingress Controller add-on upgrade page, below Precheck, click View Details.

  2. On the Check Report page, in the Cluster Add-on Check Results section, view the check results. On the Check Result page, click Deployment Template, and then click the link to the right of Cause of Error.

  3. Open the Add-on Differences page to view the fields that failed the check.

    The Add-on Differences page compares the standard template for that add-on version (left) with the add-on template in your cluster (right). The page marks all differences between the two, including compatible and incompatible fields. Below the comparison, it shows whether the add-on in your cluster passes the difference check and lists the specific paths of the incompatible fields.

  4. Modify the fields that differ.

    Choose Workloads > Deployments, find the NGINX Ingress Controller add-on, and click More > View YAML. On the Edit YAML page, in the args field, change --v=3 to --v=2.

  5. After you modify the differing fields, you can reopen or refresh the Add-on Differences page to view the latest comparison. When the bottom of the page shows Add-on can pass the difference check, the Deployment template precheck passes.

    Note

    NGINX Ingress Controller Pods restart while you modify the Deployment in the cluster, so perform this operation during off-peak hours.

References