我想用一个入口暴露各种服务。
rules:
- http:
paths:
# The path is the URL prefix for the service, e.g. /api/* or just /*
# Note that the service will receive the entire URL with the prefix
- path: /service1/*
backend:
serviceName: service1
servicePort: 5000
- path: /service2/*
backend:
serviceName: service2
servicePort: 5000问题是整个URL (包括前缀)被传递给底层服务,所以所有请求都返回404错误:service1和api不会在/service1/some/path上响应,而是直接在/some/path上响应。
如何为底层服务指定前缀?
更新
我试着使用以下重写目标。请求被发送到rasa-nlu服务,但是它们都触发了404,因为rasa-nlu仍然获得/nlu。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /nlu
backend:
serviceName: rasa-nlu
servicePort: 5000发布于 2018-10-01 01:03:09
这可能就是你要找的东西;
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/rewrite-target: /
name: rewrite
namespace: default
spec:
rules:
- host: rewrite.bar.com
http:
paths:
- backend:
serviceName: echoheaders
servicePort: 80
path: /something注意要重写目标的注释。
找到这个这里
发布于 2019-03-18 05:51:30
这条线可能到现在才能解决,但只是为了解决问题。下面将解决这个问题,默认路径是/nlu,当它被添加到重写注释中时。它来自nginx重写规则,该规则适用于位置指令的定义。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress
annotations:
ingress.kubernetes.io/rewrite-target: /nlu
spec:
rules:
- http:
paths:
- path: /nlu
backend:
serviceName: rasa-nlu
servicePort: 5000https://stackoverflow.com/questions/52583371
复制相似问题