Ingress controller issues with ImplementationSpecific error message

Hi all,

Using the Z2JH Helm chart and I keep coming across this error when running kubectl describe ingress -n <NAMESPACE>

Translation failed: invalid ingress spec: only "ImplementationSpecific" path type is supported

Using this through a CI/CD pipeline with Terraform and it keeps erroring out after 5 minutes. This is also using a private GKE cluster. Previously I was able to get this to work on a public GKE cluster without the above error message.

I was initially able to get this to work when proxy.service.type.NodePort was commented out since an external LB IP address was assigned but I have a DNS A-record associated to a static IP address that I was looking to add into the ingress annotations so I used NodePort on proxy.service.type. Is this not the proper way to do this?

proxy:
  # secretToken:
  service:
    type: NodePort

ingress:
  enabled: true
  # pathSuffix: "*"
  hosts:
    - "a.b.c.com"
  annotations: 
    kubernetes.io/ingress.class: "gce"
    kubernetes.io/ingress.global-static-ip-name: "reserved-static-ip-jhub"
    networking.gke.io/managed-certificates: "google-managed-ssl-certificate" 

kubectl describe ingress -n

Name:             jupyterhub
Namespace:        classdemo
Address:
Default backend:  default-http-backend:80 (10.4.0.4:8080)
Rules:
  Host               Path  Backends
  ----               ----  --------
  a.b.c.com
                     /   proxy-public:http (10.4.0.41:8000)
Annotations:         ingress.gcp.kubernetes.io/pre-shared-cert: mcrt-cd4f0dd7-b504-4f23-ac9b-28477f68e71e
                     kubernetes.io/ingress.class: gce
                     kubernetes.io/ingress.global-static-ip-name: reserved-static-ip-jhub
                     meta.helm.sh/release-name: jupyterhub
                     meta.helm.sh/release-namespace: classdemo
                     networking.gke.io/managed-certificates: google-managed-ssl-certificate
Events:
  Type     Reason     Age                 From                     Message
  ----     ------     ----                ----                     -------
  Normal   Sync       72s (x8 over 47m)   loadbalancer-controller  Scheduled for sync
  Warning  Translate  72s (x25 over 47m)  loadbalancer-controller  Translation failed: invalid ingress spec: only "ImplementationSpecific" path type is supported

Seems like this is due to the GCE ingress controller only using ImplementationSpecific for ingress pathType whereas the Z2JH ingress.yaml uses prefix. Kubernetes version is on 1.20.x and currently trying to use a lower version of GKE at 1.18 to see if that fixes this.

Link here.

@manics

Edit: Can confirm downgrading to GKE 1.18.x resolves this for now.