根据 Kubernetes Ingress 中的路径动态设置服务名称

Ste*_*ven 5 kubernetes kubernetes-ingress kubernetes-service

在 Kubernetes 入口中,我想动态地将服务名称更改为与入口中路径的特定部分相匹配。像这样的东西:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: example
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /api/(^/+)/(.*)
        backend:
          serviceName: api-(&1)
          servicePort: 80
Run Code Online (Sandbox Code Playgroud)

上面示例中的 &1 将解析为字符串 /api/(^/+)/(.*) 中的第一个正则表达式匹配项

因此,基本上,如果路径类似于/api/asset/fetch/anything-at-all,那么它会将调用定向到名为api-asset的服务

我知道这可能会导致一些安全问题,但如果我强制在服务名称中添加前缀“api-”,那么从技术上讲,只有带有前缀“api-”的服务才会暴露在互联网上。所有其他服务仍将在 Kubernetes 集群内受到保护。为了简单起见,我什至可以将前缀更改为“public-”。

这是可能的事吗?设置它的正确语法是什么?