NGINX Ingress Controller - 405 不允许

我开发了一个Spring Boot应用(用户注册应用),其中有一个REST API。Rest API将数据插入MySQL。 应用程序和数据库已部署在GCP Kubernetes中,当我使用网络负载均衡器时一切正常。 现在我正在尝试使用NGINX Ingress Controller和基于路径的Ingress路由。网络负载均衡器指向NGINX Ingress Controller,负载均衡器IP被标记为Cloud DNS中的通配符主机名。

无论何时我尝试使用DNS网址命中“用户注册应用程序”,它都会抛出一个错误:

 <html>
 <head>
 <title>405 不允许</title>
 </head>
 <body>
 <center>
 <h1>405 不允许</h1>
 </center>
 <hr>
 <center>openresty</center>
 </body>
 </html>

我正在尽力提供所有我所拥有的细节。如果需要更多细节,可以提供更多信息。我不明白为什么NGINX服务器会抛出“405不允许的错误”。

用户注册Spring Boot应用程序

Spring Boot应用程序控制器-POST方法接收输入数据

NGINX控制器

遵循此处提到的步骤:https://kubernetes.github.io/ingress-nginx/deploy/#detect-installed-version

kubectl应用-f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml

Ingress Controller服务

Kubernetes服务:

在Kubernetes群集中运行的服务-参考黄色标记

Kubernetes Pods:

在Kubernetes群集中运行的Pod-参考黄色标记

Ingress YML:

`
apiVersion:extensions/v1beta1
kind:Ingress
metadata:
  name:fanout-ingress
  namespace:xyz-product
  labels:#标记将应用于此资源
    app:prod-user-reg-app
  annotations:
    kubernetes.io/ingress.class:"nginx"
    ingress.kubernetes.io/ssl-redirect:"false"
    nginx.ingress.kubernetes.io/enable-cors:"true"
    nginx.ingress.kubernetes.io/cors-allow-methods:"PUT, GET, POST, OPTIONS"
规格:
  rules:
  - host:test.apps.myproduct.com
    http:
      paths:
      - path:/user-reg/create/*
        backend:
          serviceName:prod-user-reg-create-app
          servicePort:8081`

kubctl描述入口

GCP云DNS

如何解决问题?问题在NGINX控制器服务中吗?

请帮忙。

点赞
用户11140333
用户11140333

解决方案在此处。更改了 URL 路径并使用注册域名通过互联网访问。

https://github.com/kubernetes/ingress-nginx/issues/4772https://github.com/kubernetes/ingress-nginx/issues/4776

2019-11-26 11:28:48