Amazon web services AWS Kubernetes在路径设置为除/
在AWS上,EKS带有经典负载平衡器,从0.32.0 类似 转发路径为[anythis/]的服务时,我得到404 当使用path:/进行转发时,一切正常,但我需要公开多个服务,这些服务都会给我带来相同的问题 我的服务和部署: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
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类以排除这不是重写无法按预期工作的原因。