Kubernetes Ingress doesn't work with a Service of type LoadBalancer (HTTP 1.0 client does not support chunked response)

Viewed 73

I have a Kubernetes service of type LoadBalancer. When I define an Ingress with a host name for it it doesn't work.

The description of the resource looks like the following:

Rules:
  Host                                            Path  Backends
  ----                                            ----  --------
  my-api-online.net  
                                                  /   my-api-frontend:9002 (10.176.21.36:9002)
Annotations:                             ncp/internal_ip_for_policy: 100.64.144.9

it is probably why it doesn't work.

Name:                     my-api
Namespace:                default
Selector:                 app=my-api
Type:                     LoadBalancer
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       192.168.12.23
IPs:                      192.168.12.23
LoadBalancer Ingress:     10.194.32.219
Port:                     http  9002/TCP
TargetPort:               http/TCP
NodePort:                 http  31969/TCP
Endpoints:                10.176.21.36:9002
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
  Type    Reason  Age   From                Message
  ----    ------  ----  ----                -------
  Normal  Type    52m   service-controller  ClusterIP -> LoadBalancer

apiVersion: v1
kind: Service
metadata:
  name: my-api
  namespace: default
spec:
  type: LoadBalancer
  selector:
    app: my-api
  ports:
    - name: http
      port: 9002
      protocol: TCP
      targetPort: http
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-api-ingress
spec:
  rules:
    - host: my-api-online.net
      http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: my-api
              port:
                number: 9002

How is it possible to configure it properly, please?

I'm able to access the site through the 10.194.32.219:9002, but not as my-api-online.net.

EDIT: I've just found out that also a network virtualization with VMWare NSX-T is used behind the scenes and I found the following error in the app itself:

play.api.UnexpectedException: Unexpected exception[ServerResultException: HTTP 1.0 client does not support chunked response]     

If the issue is that the reverse proxy transforms HTTP/1.1 to HTTP/1.0 can it be configured?

Thank you.

1 Answers

The DNS resolution does not extend outside the Cluster by default, you would need to configure dns records pointing to the Ingress IP in whatever Name Resolution Service your infrastructure relies on. A quick but not scalable solution would be Setting up local DNS using hosts file.

If you need something scalable then I recommend you to explore the Cloud DNS Service, where you could integrate your own name resolution system, or even migrate it completely.

Related