Ingress unable to find backend service in Kubernetes v1.21.5

10/25/2021

I am using Kubernetes v1.21.5 on docker. The following is my ingress YAML file

kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
    - host: triver.dev  
      http:
        paths:
          - path: /service/account/?(.*)
            pathType: Prefix
            backend:
              service:
                name: auth-srv
                port:
                  number: 3000

I am running an auth srv image and the following is its YAML file

kind: Deployment
metadata:
  name: auth-depl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: auth
  template:
    metadata:
      labels:
        app: auth
    spec:
      containers:
        - name: auth
          image: triver/auth
          env:
            - name: MONGO_URI
              value: 'mongodb://mongo-srv:27017/auth'
            - name: JWT_KEY
              valueFrom:
                secretKeyRef:
                  name: jwt-secret
                  key: JWT_KEY
---
apiVersion: v1
kind: Service
metadata:
  name: auth-srv
spec:
  selector:
    app: auth
  ports:
    - name: auth
      protocol: TCP
      port: 3000
      targetPort: 3000

but when I try to send a request to any route that I created in auth service for example I created a triver.dev/service/account/signup post express router for a user to signup. When I try to send a post request to the route through Postman it gives an error (404) of ECONNRefused. Couldn't send a request. Why is it happening? (My postman is working fine. It's not an issue on the postman end.)

What am I doing wrong

The app works but I just can't access the route. It's definitely an ingress issue. Can someone help me, please? This is a very important project.

This is what show up when I use the command 'kubectl get ingress'

Everything works fine when I run the application using skaffold dev.

-- user14261498
express
kubernetes
kubernetes-ingress
skaffold

1 Answer

10/25/2021

it's due to you have not mentioned the hostname into the ingress, also make sure your ingress controller is running

example ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
    - host: hello-world.info
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: web
                port:
                  number: 8080

host: hello-world.info

Reference : https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/

you can also checkout : https://kubernetes.io/docs/concepts/services-networking/ingress/

if you have set default backend set in ingress and host is not issue

make sure you are sending the request on HTTP instead of HTTPS

nginx.ingress.kubernetes.io/ssl-redirect: "false"

as you are not using the certificate SSL/TLS so please try the URL with HTTP

-- Harsh Manvar
Source: StackOverflow