首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在入口中路由无路径的路径和服务的子串

如何在入口中路由无路径的路径和服务的子串
EN

Stack Overflow用户
提问于 2021-01-31 15:42:13
回答 1查看 303关注 0票数 1

我有三个问题:

1-如何正确实现正则表达式以匹配入口中路径的第一部分?

代码语言:javascript
复制
- path: /^search_[0-9A-Z]{9}
    backend:
      serviceName: global-search-service
      servicePort: 5050

我希望匹配任何以/search_开头的路径,例如/search_model/search_make

2-如何访问没有路径只有端口的服务。

代码语言:javascript
复制
 path: 
    pathType: Exact
    backend:
      serviceName: chart-display
      servicePort: 10000

我只是使用iframe来显示这个服务。我只有端口号,怎么访问它?

3-我托管了两个不同的react应用程序,当我将它们的路径设置为根/时,它们都可以工作。我如何将它们都实现为使用根路径?

正在尝试第3期。

所以我想出了这样的东西,对吧?

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: admin-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /admin
        backend:
          serviceName: web2-service
          servicePort: 2000

---          

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: normal-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
  - http:
      paths:
      - path: /
        backend:
          serviceName: web1-service
          servicePort: 1000

加载服务不会转到web2- <my-ip>/admin,如果我把它们都放在/上,它会自动转到web1-service。亲切的忠告

EN

回答 1

Stack Overflow用户

发布于 2021-01-31 17:44:15

对于第一个问题,您可以在路径中使用正则表达式,没有任何问题,您只需要使用use -正则表达式注释入口,至少根据文档(https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#use-regex)。

类似于:

代码语言:javascript
复制
metadata:
  name: your-name
    annotations:
      nginx.ingress.kubernetes.io/use-regex: "true"
  spec:
    ...

或者,如果您将注释用于重写目标,则还应强制执行正则表达式。

至于要使用的正则表达式,为了匹配路径的开头,例如所有以开头的路径,如something_firstsomething_another,,您可以使用简单的:

代码语言:javascript
复制
something_[a-zA-Z0-9]*

对于第二个问题,我不确定你到底在问什么。入口应该与http或https请求一起使用,这些请求应该提供路径。如果您想简单地在给定端口公开外部服务,则可以使用LoadBalancer服务。

在内部,您只想通过一个端口访问的服务在根路径处以http应答吗?或者做一些不同的事情?如果它只在根路径上响应,则可以将请求中的所有路径与根路径进行匹配。

至于如何将请求的所有路径重写到根目录,您可以使用重写注释,例如:

代码语言:javascript
复制
nginx.ingress.kubernetes.io/rewrite-target: /

有关此注释的更多信息,请查看文档,因为它可以做很多事情(https://kubernetes.github.io/ingress-nginx/examples/rewrite/)

还要记住,如果您想在两个不同的位置重写两个服务,则需要将Ingress拆分为两个单独的入口

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65976800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档