Kubernetes 当我放置2条路径时,使用nginx入口控制器的入口不起作用

Kubernetes 当我放置2条路径时,使用nginx入口控制器的入口不起作用,kubernetes,nginx-ingress,Kubernetes,Nginx Ingress,我是K8s的初学者,正在测试多个场景,因此我遇到了下一个问题: 当我应用具有2条路径的入口时,服务器响应404将针对每个URI 这是我的入口YAML文件 apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: ingress namespace: pruebas annotations: nginx.ingress.kubernetes.io/rewrite-target: / kuber

我是K8s的初学者,正在测试多个场景,因此我遇到了下一个问题:

当我应用具有2条路径的入口时,服务器响应404将针对每个URI

这是我的入口YAML文件

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress
  namespace: pruebas
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - host: parking.io
    http:
      paths:
      - backend:
          serviceName: front
          servicePort: 80
        path: /front
      - backend:
          serviceName: back
          servicePort: 80
        path: /api
我做了几次测试,结果如下:

  • 只有一条路径带有“/”表示“前方”:有效✅
  • 只有1条路径带有“/”表示“返回”:有效✅
  • 只有一条路径用于带有“/front”的“front”:不起作用❌
  • 只有一条路径用于带有“/后端”的“前端”:不起作用❌
  • “前”和“后”的2个路径(上面的YAML文件):不起作用❌
Api服务YAML:

apiVersion: v1
kind: Service
metadata:
  name: back
  namespace: pruebas
spec:
  type: ClusterIP
  selector:
    type: backend
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
其他信息:我做了一个测试,为Nginx的hello world创建了2个服务,我做了与我之前所说的相同的测试,效果很好,所以我猜我的服务或播客有问题,但我不知道可能是什么问题

更多附加信息它在GKE的GCP上运行

更新了我放了这个(nginx.org/rewrites:“serviceName=back rewrite=/”),API的路由可以工作,但不适用于子路由(API/任何东西)

我的命名空间“pruebas”中的所有信息:


我通过进行以下更改来解决问题:

  • 卸载我的入口控制器,然后删除服务、POD和所有与之相关的内容
  • 我的入口控制器位于不同的名称空间(infra),因此,我在我的服务和POD(pruebas)的相同名称空间中再次安装了NGINX入口控制器
  • 我在与其他pod、服务等相同的名称空间中配置了入口

我的集群是在GKE上配置的,所以我不知道这个解决方案是否适用于不同的服务。

可能有很多原因。您使用的是什么环境?米尼库布,库比德,云?你能分享你的服务吗?curl,您如何测试这是否有效?您当前的入口配置将仅匹配路径1:1。如果要将其与/api/something匹配,应使用以下语法:
/something(/|$)(.*)
。您可以找到更多详细信息您是部署了Nginx Ingress还是刚刚创建了Ingress部署?@PjoterS,是的,我用Helm安装了Nginx控制器,然后创建了Ingress文件。回应你的第一个评论,我做到了,我使用了那个语法,但不起作用。我的疑问是,为什么当我将nginx.org/rewrite:“serviceName=back rewrite=/”设置为有效,而当我使用“nginx.ingres.kubernetes.io/rewrite target”设置为无效时,可以共享您的部署和服务?配置中可能有输入错误。您还可以尝试使用helloworld v1和helloworld v2的图像吗?
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress
  namespace: pruebas
  annotations:
    # nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.org/rewrites: "serviceName=back rewrite=/"
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - host: parking.io
    http:
      paths:
      # - backend:
      #     serviceName: front
      #     servicePort: 80
      #   path: /app
      - backend:
          serviceName: nginx-2
          servicePort: 80
        path: /hello
      - backend:
          serviceName: back
          servicePort: 80
        path: /api