Amazon web services AWS Kubernetes在路径设置为除/

Amazon web services AWS Kubernetes在路径设置为除/,amazon-web-services,nginx,kubernetes,kubernetes-ingress,nginx-ingress,Amazon Web Services,Nginx,Kubernetes,Kubernetes Ingress,Nginx Ingress,在AWS上,EKS带有经典负载平衡器,从0.32.0 类似 转发路径为[anythis/]的服务时,我得到404 当使用path:/进行转发时,一切正常,但我需要公开多个服务,这些服务都会给我带来相同的问题 我的服务和部署: apiVersion: v1 kind: Service metadata: name: appointments-api labels: app: appointments-api spec: ports: - port: 80 selecto

在AWS上,EKS带有经典负载平衡器,从0.32.0 类似 转发路径为[anythis/]的服务时,我得到404

当使用path:/进行转发时,一切正常,但我需要公开多个服务,这些服务都会给我带来相同的问题

我的服务和部署:

apiVersion: v1
kind: Service
metadata:
  name: appointments-api
  labels:
    app: appointments-api
spec:
  ports:
  - port: 80
  selector:
    app: appointments-api
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: appointments-api
  labels:
    app: appointments-api
spec:
  replicas: 3
  selector:
    matchLabels:
      app: appointments-api
  template:
    metadata:
      labels:
        app: appointments-api
    spec:
      containers:
      - name: appointments-api
        image: ....ecr.us-west-2.amazonaws.com/appointments_api
        ports:
        - containerPort: 80
        envFrom:
          - configMapRef:
              name: env-app-con
我的入口:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: appointments
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /appoint
        backend:
          serviceName: appointments-api
          servicePort: 80
现在,看这里:运行以下命令:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: appointments
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
  - http:
      paths:
      - path: /appoint(/|$)(.*)
        backend:
          serviceName: appointments-api
          servicePort: 80
我可以访问aspnet应用程序的首页,但无法访问各种资源(例如,“Fetch error Not Found/swagger/v1/swagger.json”)


我被难住了,不确定这是应用程序问题还是nginx问题,以及如何配置它们。

这似乎是反向代理问题背后的招摇过市。现在,重写目标:/$2和-path:/appoint(/|$)(*)允许API运行,这很好,可惜我们没有GUI。那么GUI是如何部署和公开的呢?我在你的问题中只看到了
部署
集群服务
用于公开
约会api
。请仔细看看@mario…你能提供入口(和LB)的curl请求示例以及后端服务上的预期路径吗?如果您在问题中添加成功的curl请求到缺少的资源的示例(在入口上请求时会导致404),这也会有所帮助从临时ubuntu pod直接到同一集群中的后端服务,以确保在正确的路径上访问资源。我注意到您没有指定ingress类注释
kubernetes.io/ingress.class:“nginx”
。您需要它来确保您实际使用的是nginx入口控制器。据我所知,在aws eks上,默认选项是aws alb ingress controller,因此首先设置正确的ingress类以排除这不是重写无法按预期工作的原因。