I have a DO Load Balancer connecting to a kubernetes service with 3 ports: 80, 443, and port 70 (aka gopher). Here’s the definition:

metadata:
  name: gopher-thingy
  annotations:
    service.beta.kubernetes.io/do-loadbalancer-protocol: "http"
    service.beta.kubernetes.io/do-loadbalancer-algorithm: "round_robin"
    service.beta.kubernetes.io/do-loadbalancer-tls-ports: "443"
    service.beta.kubernetes.io/do-loadbalancer-certificate-id: "**redacted**"
spec:
  type: LoadBalancer
  ports:
  - name: gopher
    port: 70
    targetPort: 70
    protocol: TCP
  - name: http
    port: 80
    targetPort: 80
    protocol: TCP
  - name: https
    port: 443
    targetPort: 80
    protocol: TCP

I’ve exposed port 70 via a separate ConfigMap as described in the ingress setup docs

apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: default
data:
  70: "gopher-thingy:70"

When I apply this, HTTP and HTTPS are setup as expected, but the gopher port is forwarded to port 80 instead of port 70. I need to go into the load balancer in the networking panel and change it manually.

Am I missing something? This seems like a bug.

Thanks!

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
1 answer

This may be because of the default protocol you’re selecting. Can you try using the following annotations instead:

service.beta.kubernetes.io/do-loadbalancer-protocol: “tcp”
service.beta.kubernetes.io/do-loadbalancer-algorithm: “round_robin”
service.beta.kubernetes.io/do-loadbalancer-http2-ports: “443,80”
service.beta.kubernetes.io/do-loadbalancer-tls-ports: “443”

Submit an Answer