digitalocean / digitalocean-cloud-controller-manager

Kubernetes cloud-controller-manager for DigitalOcean (beta)
Apache License 2.0
524 stars 147 forks source link

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

Open evilaugust opened 3 years ago

evilaugust commented 3 years ago

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
timoreimann commented 3 years ago

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.

evilaugust commented 3 years ago

@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 commented 3 years ago

@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?

timoreimann commented 2 years ago

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.