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.
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” …