E-Kami
E-Kami

Reputation: 2649

Ingress route pointing to the wrong service

I've setup k3s v1.20.4+k3s1 with Klipper Lb and nginx ingress 3.24.0 from the helm charts. I'm following this article but I'm stumbling upon a very weird issue where my ingress hosts would point to the wrong service.

Here is my configuration:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-routing
spec:
  rules:
  - host: echo1.stage.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: echo1
            port:
              number: 80
  - host: echo2.stage.example.com
    http:
      paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: echo2
              port:
                number: 80

---
apiVersion: v1
kind: Service
metadata:
  name: echo1
spec:
  ports:
  - port: 80
    targetPort: 5678
  selector:
    app: echo1
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: echo1
spec:
  selector:
    matchLabels:
      app: echo1
  replicas: 2
  template:
    metadata:
      labels:
        app: echo1
    spec:
      containers:
      - name: echo1
        image: hashicorp/http-echo
        args:
        - "-text=This is echo1"
        ports:
        - containerPort: 5678

---
apiVersion: v1
kind: Service
metadata:
  name: echo2
spec:
  ports:
  - port: 80
    targetPort: 5678
  selector:
    app: echo2
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: echo2
spec:
  selector:
    matchLabels:
      app: echo2
  replicas: 1
  template:
    metadata:
      labels:
        app: echo2
    spec:
      containers:
      - name: echo2
        image: hashicorp/http-echo
        args:
        - "-text=This is the new (echo2)"
        ports:
        - containerPort: 5678

And my Cloudflare DNS records (no DNS proxy activated):

;; A Records
api.stage.example.com.  1   IN  A   162.15.166.240
echo1.stage.example.com.    1   IN  A   162.15.166.240
echo2.stage.example.com.    1   IN  A   162.15.166.240

But when I do a curl on echo1.stage.example.com multiple times, here is what I get:

$ curl echo1.stage.example.com
This is echo1
$ curl echo1.stage.example.com
<html>
<head><title>502 Bad Gateway</title></head>
<body>
<center><h1>502 Bad Gateway</h1></center>
<hr><center>nginx</center>
</body>
</html>
$ curl echo1.stage.example.com
This is the new (echo2)

Sometimes I get a bad gateway, sometimes I get the echo1.stage.example.com domain pointing to the service assigned to echo2.stage.example.com. Is this because of the LB? Or a bad configuration on my end? Thanks!

EDIT: It's not coming from the LB, I just switched to metallb and I still get the same issue

Upvotes: 1

Views: 868

Answers (1)

E-Kami
E-Kami

Reputation: 2649

Ok I found the issue. It was actually not related to the config I previously posted by to my kustomization.yaml config where I had:

commonLabels:
  app: myapp

Just removing that commonLabels solved the issue.

Upvotes: 2

Related Questions