GKE Warning when using multiple Ingress controllers

Article ID:360019569372
1 minute readKnowledge base

Issue

  • After provisioning a managed controller, the GKE Services console shows a warning Error during sync: error while evaluating the ingress spec: service "<namespace>/<controllerName>" is type "ClusterIP", expected "NodePort" or "LoadBalancer":

gke ingress controller warning

Explanation

This is a warning and does not impact the operations or the cluster. kubectl get ing can be used to validate that the Ingress resources exist.

The root cause of that warning is often due to the fact that there are multiple Ingress Controller installed in the cluster. On GKE, there is the GCE Ingress Controller installed by default. Installing a different Ingress controller - like for example the Kubernetes Ingress Nginx Controller - could cause this warning in GCE UI because there are 2 controllers claiming the Ingress resources.

Resolution

The solution / workaround is to force one controller to satisfy the ingress using the kubernetes.io/ingress.class annotation as explained in https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress.

In the configuration of an existing Managed controller, add the following snippet to the YAML field:

---
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: "nginx"

Then restart the controller from CJOC’s UI.

The same configuration can be applied under Manage Jenkins  Configure System  Kubernetes controller Provisioning  Advanced  Default Storage Class Name. This setting would apply to newly created controller only.

Another solution is to disable / uninstall one of the ingress controller. To disable the GCE Ingress Controller, please refer to How do I disable the GCE Ingress controller?