我在云中部署我的应用程序,在03个pod上的集群内:
- one pod: backend - Quarkus
- one pod: frontend - Angular
- 一个pod: DB - Postgres
后端有03个端点:
- 一个端点:GraphQL
- 两个端点:Rest
pod是暴露的
后端:- ClusterIp
- DB: ClusterIp
- 前端:NodePort
我有一个Ngnix web服务器&02入境舱单;一个用于后端,另一个用于前端:
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
对于GraphQL端点/请求;前端可以正确地与后端通信并获取所需的数据。当我运行POST请求从服务器(Rest Endpoint)获取accessToken时,我收到404错误代码。
错误截图在这里
我试图在后端入口清单中添加一些更改,但总是404- path: /(.*)
- path: /*
- path: /response
我认为我在Ryan Dawson的帮助下成功地制作了另一种诊断方法。我对后端pod和来自本地的请求进行了PortForaward,然后我发现有一个500错误代码—>这意味着请求与api需求不匹配:在前端,我发送了错误的上下文类型。
——比;因此,入口配置已经处于良好状态。
您的后端应用程序是否可能在端口8080上提供服务?
如果这是真的,您应该访问backend.exemple.com:8080/response
,假设response
是您所配置的路径的名称。
启用swagger-ui测试
您可以在quarkus应用程序上启用swagger-ui,以确保您的端点。
要做到这一点,您必须将此添加到您的pom.xml
:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-openapi</artifactId>
</dependency>
在你的application.properties
上设置这个(当你不在开发模式下运行时能够访问swagger-ui):
# 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
完成后,您可以在:your-path:your-port-number/q/swagger-ui
访问swagger-ui,就像backend.exemple.com:8080/q/swagger-ui