如何为通过入口公开的服务指定前缀

zna*_*nat 4 kubernetes google-kubernetes-engine

我想通过一个入口公开各种服务。

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
Run Code Online (Sandbox Code Playgroud)

问题是包括前缀在内的整个URL都传递给了基础服务,因此所有请求都返回404错误:service1而api不响应/service1/some/path而是直接响应/some/path

如何为基础服务指定前缀?

更新

我尝试如下使用rewrite-target。请求被发送到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
Run Code Online (Sandbox Code Playgroud)

Sag*_*age 5

这可能是您要寻找的;

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
Run Code Online (Sandbox Code Playgroud)

请注意注释以重写目标。

在这里找到这个