Change l4 to l7 LB on GKE with nginx-ingress-controller

43 views Asked by At

I have the following service, the default service for nginx-ingress-controller:

apiVersion: v1
kind: Service
metadata:
  annotations:
    cloud.google.com/app-protocols: '{"http":"HTTP2","https":"HTTP2"}'
    cloud.google.com/neg: '{"ingress":true}'
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app.kubernetes.io/component":"controller","app.kubernetes.io/instance":"nginx-ingress-controller","app.kubernetes.io/managed-by":"Helm","app.kubernetes.io/name":"nginx-ingress-controller","app.kubernetes.io/version":"1.9.4","helm.sh/chart":"nginx-ingress-controller-9.9.3","io.portainer.kubernetes.application.name":"nginx-ingress-controller","io.portainer.kubernetes.application.owner":"admin"},"name":"nginx-ingress-controller","namespace":"default"},"spec":{"externalTrafficPolicy":"","ports":[{"name":"http","port":80,"protocol":"TCP","targetPort":"http"},{"name":"https","port":443,"protocol":"TCP","targetPort":"https"}],"selector":{"app.kubernetes.io/component":"controller","app.kubernetes.io/instance":"nginx-ingress-controller","app.kubernetes.io/name":"nginx-ingress-controller"},"sessionAffinity":"None","type":"LoadBalancer"}}
    meta.helm.sh/release-name: nginx-ingress-controller
    meta.helm.sh/release-namespace: default
  creationTimestamp: "2023-12-02T15:20:36Z"
  finalizers:
  - service.kubernetes.io/load-balancer-cleanup
  labels:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: nginx-ingress-controller
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: nginx-ingress-controller
    app.kubernetes.io/version: 1.9.4
    helm.sh/chart: nginx-ingress-controller-9.9.3
    io.portainer.kubernetes.application.name: nginx-ingress-controller
    io.portainer.kubernetes.application.owner: admin
  name: nginx-ingress-controller
  namespace: default
  resourceVersion: "2398295"
  uid: b8662a4f-3259-4f92-96fb-1a58f2250444

I have tried multiple things, but cannot get GKE to provision a L7 LB instead of a L4 LB.

Google Support have said it's possible to use L7 via service, but their documentation isn't there.

I have also tried specifying the LB via deployment.yaml args, but that isn't working.

I am not sure how to progress, the endgame is to use the nginx-ingress L7 with GCDN.

Unfortunately, the L4 LB cannot be used with Google CDN, which is rather annoying.

The nginx-service can use L7 but I cannot find the correct documentation to make the change.

Also, I thought there may be a way of using GKE, but that is going to be problematic.

To clarify, I need to specify in my deployment.yaml for Google to use a L7 and not L4 LB so I can integrate nginx-ingress with Google CDN.

0

There are 0 answers