skip to Main Content

I’m deploying my application in the cloud, inside a cluster on 03 pods:

  1. one pod: backend – Quarkus
  2. one pod: frontend – Angular
  3. one pod: DB – Postgres

The backend has 03 endpoints:

  1. One endpoint: GraphQL
  2. Two endpoints: Rest

The pods are exposed:

  1. backend: ClusterIp
  2. DB: ClusterIp
  3. 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.

The error screenshot is here

I tried to add several changes in the backend-ingress manifest, but always 404
- path: /(.*)
- path: /*
- path: /response

2

Answers


  1. Chosen as BEST ANSWER

    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.


  2. 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 that response 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:

        <dependency>
          <groupId>io.quarkus</groupId>
          <artifactId>quarkus-smallrye-openapi</artifactId>
        </dependency>
    

    And set this on your application.properties (to be able to access the swagger-ui when you’re not running on dev mode):

    # If this should be included every time. By default this is only included when the application is running in dev mode.
    quarkus.swagger-ui.always-include=true
    

    With this done, you can access the swagger-ui at: your-path:your-port-number/q/swagger-ui, like backend.exemple.com:8080/q/swagger-ui

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search