digitalocean-cloud-controller-manager icon indicating copy to clipboard operation
digitalocean-cloud-controller-manager copied to clipboard

do-loadbalancer-protocol: 'http2' results in 'http2' --> 'http'

Open evilaugust opened this issue 3 years ago • 4 comments

When setting the load balancer protocol, the droplet protocol defaults to HTTP instead of HTTP2. Is there an annotation to set the droplet protocol?

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/do-loadbalancer-enable-proxy-protocol: 'false'
    service.beta.kubernetes.io/do-loadbalancer-name: 'ingress-lb-nyc1-01'
    service.beta.kubernetes.io/do-loadbalancer-protocol: 'http2'
    service.beta.kubernetes.io/do-loadbalancer-certificate-id: 'e22edb46-3d40-4b4b-a608-bd741da45562'
    service.beta.kubernetes.io/do-loadbalancer-algorithm: 'least_connections'
    service.beta.kubernetes.io/do-loadbalancer-size-slug: 'lb-small'
    service.beta.kubernetes.io/do-loadbalancer-http2-ports: '5000'
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/component: controller
  name: ingress-nginx-controller
  namespace: ingress-nginx
spec:
  type: LoadBalancer
  externalTrafficPolicy: Cluster
  ports:
    - name: grpc
      port: 5000
      protocol: TCP
      targetPort: 5000
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/component: controller

evilaugust avatar Jun 04 '21 11:06 evilaugust

Hi @evilaugust 👋

IIUC, you'd like to set different target and entry protocols. This is similar to #367 but unfortunately, right now it is not supported. I'm happy to keep the ticket open to track support.

timoreimann avatar Jun 04 '21 14:06 timoreimann

@timoreimann Thank you for your response. Actually, I want the target and entry to be the same. They should both be HTTP2, but when I set service.beta.kubernetes.io/do-loadbalancer-protocol: 'http2', the target defaults to HTTP while the entry protocol gets set to HTTP2, which is essentially pointless. I just need them both to be HTTP2. Is that possible?

evilaugust avatar Jun 04 '21 15:06 evilaugust

@timoreimann I honestly have no issue configuring the load balancer manually at the moment, however, with the managed Kubernetes implementation, the load balancer seems to automatically rebuild when the node pool scales, which makes sense, but is there anyway in preventing it from reconfiguring the protocols when this happens? Otherwise, how are other people handling gRPC ingress in DO?

evilaugust avatar Jun 04 '21 17:06 evilaugust

Time has passed on, and by now Gateway API is a thing in the Kubernetes community. We should seriously consider that to be the structure to adopt for better configuration UX.

timoreimann avatar Aug 08 '22 12:08 timoreimann