404在尝试从Postman访问Ingress时发生。

huangapple go评论106阅读模式
英文:

404 when trying to access ingress from postman

问题

I have an ingress controller with two services running behind it. I also have an SSL certificate installed with Lets Encrypt and cert-manager.

For some reason, whenever I make a request to my endpoints, it returns a 404 not found error. For example:

http://stefandeboer.com/api/neume-billing-service/Transaction

returns:

  1. <html>
  2. <head>
  3. <title>404 Not Found</title>
  4. </head>
  5. <body>
  6. <center>
  7. <h1>404 Not Found</h1>
  8. </center>
  9. <hr>
  10. <center>nginx</center>
  11. </body>
  12. </html>

This is the YAML for my ingress:

  1. apiVersion: networking.k8s.io/v1
  2. kind: Ingress
  3. metadata:
  4. annotations:
  5. cert-manager.io/cluster-issuer: letsencrypt
  6. kubernetes.io/ingress.class: nginx
  7. nginx.ingress.kubernetes.io/rewrite-target: /
  8. nginx.ingress.kubernetes.io/use-regex: "true"
  9. creationTimestamp: "2023-06-05T22:51:36Z"
  10. generation: 3
  11. name: neume-ingress
  12. namespace: default
  13. resourceVersion: "1888643"
  14. uid: 9abf4d0f-3370-4856-b3e2-c555c7042739
  15. spec:
  16. rules:
  17. - host: stefandeboer.com
  18. - http:
  19. paths:
  20. - backend:
  21. service:
  22. name: neume-user-service
  23. port:
  24. number: 80
  25. path: /api/neume-user-service(/|$)(.*)
  26. pathType: Prefix
  27. - backend:
  28. service:
  29. name: neume-billing-service
  30. port:
  31. number: 80
  32. path: /api/neume-billing-service(/|$)(.*)
  33. pathType: Prefix
  34. tls:
  35. - hosts:
  36. - stefandeboer.com
  37. secretName: tls-secret
  38. status:
  39. loadBalancer:
  40. ingress:
  41. - ip: 20.4.165.91

Both my pods are running in the same namespace:

  1. NAME READY STATUS RESTARTS AGE
  2. neume-billing-service-deployment-769ff6487b-sjk5d 1/1 Running 0 31m
  3. neume-user-service-deployment-5674b4b75d-8zhgp 1/1 Running 0 29m

What could I be doing wrong here?

英文:

I have an ingress controller with two services running behind it. I also have an SSL certificate installed with Lets Encrypt and cert-manager.

For some reason, whenever i make a request to my endpoints, it returns a 404 not found error. For example

  1. http://stefandeboer.com/api/neume-billing-service/Transaction

returns

  1. <html>
  2. <head>
  3. <title>404 Not Found</title>
  4. </head>
  5. <body>
  6. <center>
  7. <h1>404 Not Found</h1>
  8. </center>
  9. <hr>
  10. <center>nginx</center>
  11. </body>
  12. </html>

This is the YAML for my ingress:

  1. apiVersion: networking.k8s.io/v1
  2. kind: Ingress
  3. metadata:
  4. annotations:
  5. cert-manager.io/cluster-issuer: letsencrypt
  6. kubernetes.io/ingress.class: nginx
  7. nginx.ingress.kubernetes.io/rewrite-target: /
  8. nginx.ingress.kubernetes.io/use-regex: "true"
  9. creationTimestamp: "2023-06-05T22:51:36Z"
  10. generation: 3
  11. name: neume-ingress
  12. namespace: default
  13. resourceVersion: "1888643"
  14. uid: 9abf4d0f-3370-4856-b3e2-c555c7042739
  15. spec:
  16. rules:
  17. - host: stefandeboer.com
  18. - http:
  19. paths:
  20. - backend:
  21. service:
  22. name: neume-user-service
  23. port:
  24. number: 80
  25. path: /api/neume-user-service(/|$)(.*)
  26. pathType: Prefix
  27. - backend:
  28. service:
  29. name: neume-billing-service
  30. port:
  31. number: 80
  32. path: /api/neume-billing-service(/|$)(.*)
  33. pathType: Prefix
  34. tls:
  35. - hosts:
  36. - stefandeboer.com
  37. secretName: tls-secret
  38. status:
  39. loadBalancer:
  40. ingress:
  41. - ip: 20.4.165.91

Both my pods are running in the same namespace:

  1. NAME READY STATUS RESTARTS AGE
  2. neume-billing-service-deployment-769ff6487b-sjk5d 1/1 Running 0 31m
  3. neume-user-service-deployment-5674b4b75d-8zhgp 1/1 Running 0 29m

What could i be doing wrong here?

答案1

得分: 1

It looks like you have a configuration issue with your ingress. The host declaration must be part of the same object as the HTTP declaration.

Instead of:

  1. rules:
  2. - host: stefandeboer.com
  3. - http:

You need to do it like this:

  1. rules:
  2. - host: stefandeboer.com
  3. http:
英文:

its looks like that you have miss configuration on your ingress, the host declaration must be part of the same object as the HTTP declaration.

instead of:

  1. rules:
  2. - host: stefandeboer.com
  3. - http:

you need to do it like this:

  1. rules:
  2. - host: stefandeboer.com
  3. http:

答案2

得分: 0

在对我的YAML文件进行一些调整后,它就像魔法一样运行了!我将http放在主机对象下,并确保在目标重写之后添加了$2。

  1. apiVersion: networking.k8s.io/v1
  2. kind: Ingress
  3. metadata:
  4. annotations:
  5. cert-manager.io/cluster-issuer: letsencrypt
  6. kubernetes.io/ingress.class: nginx
  7. nginx.ingress.kubernetes.io/rewrite-target: /$2
  8. nginx.ingress.kubernetes.io/use-regex: "true"
  9. creationTimestamp: "2023-06-06T00:57:42Z"
  10. generation: 4
  11. name: neume-ingress
  12. namespace: default
  13. resourceVersion: "1925615"
  14. uid: d3b349c2-49d1-488b-bc15-148acfce095a
  15. spec:
  16. rules:
  17. - host: stefandeboer.com
  18. http:
  19. paths:
  20. - backend:
  21. service:
  22. name: neume-user-service
  23. port:
  24. number: 80
  25. path: /neume-user-service(/|$)(.*)
  26. pathType: Prefix
  27. - backend:
  28. service:
  29. name: neume-billing-service
  30. port:
  31. number: 80
  32. path: /neume-billing-service(/|$)(.*)
  33. pathType: Prefix
  34. tls:
  35. - hosts:
  36. - stefandeboer.com
  37. secretName: tls-secret
  38. status:
  39. loadBalancer:
  40. ingress:
  41. - ip: 20.4.165.91
英文:

After making some tweaks to my YAML file it worked like a charm!
I put the http under the host object and made sure to add the $2 after the target-rewrite.

  1. apiVersion: networking.k8s.io/v1
  2. kind: Ingress
  3. metadata:
  4. annotations:
  5. cert-manager.io/cluster-issuer: letsencrypt
  6. kubernetes.io/ingress.class: nginx
  7. nginx.ingress.kubernetes.io/rewrite-target: /$2
  8. nginx.ingress.kubernetes.io/use-regex: "true"
  9. creationTimestamp: "2023-06-06T00:57:42Z"
  10. generation: 4
  11. name: neume-ingress
  12. namespace: default
  13. resourceVersion: "1925615"
  14. uid: d3b349c2-49d1-488b-bc15-148acfce095a
  15. spec:
  16. rules:
  17. - host: stefandeboer.com
  18. http:
  19. paths:
  20. - backend:
  21. service:
  22. name: neume-user-service
  23. port:
  24. number: 80
  25. path: /neume-user-service(/|$)(.*)
  26. pathType: Prefix
  27. - backend:
  28. service:
  29. name: neume-billing-service
  30. port:
  31. number: 80
  32. path: /neume-billing-service(/|$)(.*)
  33. pathType: Prefix
  34. tls:
  35. - hosts:
  36. - stefandeboer.com
  37. secretName: tls-secret
  38. status:
  39. loadBalancer:
  40. ingress:
  41. - ip: 20.4.165.91

huangapple
  • 本文由 发表于 2023年6月6日 07:08:56
  • 转载请务必保留本文链接:https://go.coder-hub.com/76410512.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定