I’m deploying my application in the cloud, inside a cluster on 03 pods:
- one pod: backend – Quarkus
- one pod: frontend – Angular
- one pod: DB – Postgres
The backend has 03 endpoints:
- One endpoint: GraphQL
- Two endpoints: Rest
The pods are exposed:
- backend: ClusterIp
- DB: ClusterIp
- frontend: NodePort
I have an Ngnix web server & 02 ingress manifests; one for the backend and a second for the frontend:
1- backend-ingress:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mcs-thirdparty-back-ingress
namespace: namespace
annotations:
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
ingressClassName: nginx-internal
rules:
- host: backend.exemple.com
http:
paths:
- path: /
backend:
service:
name: mcs-thirdparty-backend
port:
number: 8080
pathType: Prefix
2- frontend-ingress:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mcs-thirdparty-ingress
namespace: namespace
spec:
ingressClassName: nginx-internal
rules:
- host: bilels.exemple.com
http:
paths:
- path: /
backend:
service:
name: mcs-thirdparty-frontend
port:
number: 80
pathType: Prefix
For the GraphQL endpoint/request; the frontend can correctly communicate with the backend and fetchs the required data.
When I run the POST request to fetch the accessToken from the server (Rest Endpoint), I receive the 404 error code.
I tried to add several changes in the backend-ingress manifest, but always 404
- path: /(.*)
- path: /*
- path: /response
2
Answers
I thinks that I managed to make another Diagnotic method wiht the help for Ryan Dawson. I did PortForaward the backend pod and request from the locally, then I found that there is a 500 error code --> meaning that the request was not matching the api requirements: in the frontend I was sendign the wrong context type.
--> so the ingress config is already in a good shape.
Is it possible that your backend application is providing on port 8080?
If this is true, you should access
backend.exemple.com:8080/response
, supposing thatresponse
is the name of the path you have configured.Enabling swagger-ui to test
You could enable the swagger-ui on your quarkus application to make sure of your endpoints.
To do it, you must add this to your
pom.xml
:And set this on your
application.properties
(to be able to access the swagger-ui when you’re not running on dev mode):With this done, you can access the swagger-ui at:
your-path:your-port-number/q/swagger-ui
, likebackend.exemple.com:8080/q/swagger-ui