首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gloo TCP代理主机名

Gloo TCP代理主机名
EN

Stack Overflow用户
提问于 2020-07-07 14:11:04
回答 1查看 557关注 0票数 1

使用Gloo代理为Kubernetes集群中的MongoDB访问转发端口27017。

下面的网关规范用于将所有端口27017通信量转发到指定的上游。

代码语言:javascript
复制
spec:
  bindAddress: '::'
  bindPort: 27017
  tcpGateway:
    tcpHosts:
      - destination:
          single:
            upstream:
              name: default-mongodb-27017
              namespace: gloo-system
        name: one
  useProxyProto: false

我想根据主机名转发27017通信量(例如,d.db.example.com指向Mongo的dev实例,p.db.example.com指向prod实例)。

是否有一种方法来指定主机名(比如在虚拟服务路由中)?

(注:这是一个教育模拟,因此并不是一个真正的“生产”环境。这就是为什么dev和prod实例都将存在于同一个Kubernetes集群中。这也是为什么不使用托管或外部MongoDB解决方案的原因)

EN

回答 1

Stack Overflow用户

发布于 2020-07-10 09:13:22

正如我在评论中提到的,据我所知,在网关中做这件事并不容易,至少我在网关文档中找不到任何关于它的信息,但是您可以配置虚拟服务使其工作。

如文档那里中所提到的

VirtualService是Gateway的根路由对象。虚拟服务描述要匹配一组域的路由集。 它定义了:-一组域--这些域的路由的根集--用于服务器TLS终端的可选SSL配置--将配置应用于位于VirtualHostOptions上的所有路由。 域必须在网关内的所有虚拟服务中都是唯一的(即集合之间没有重叠)。

那里

虚拟服务定义一组路由规则,这是给定域或一组域的一种可选的SNI配置。 Gloo将根据请求的主机标头(在HTTP1.1中)或:authority (HTTP2.0)中指定的域选择适当的虚拟服务(路由集)。 虚拟服务支持通配符域(从*开始)。 如果用户不提供虚拟服务,Gloo将为用户创建默认虚拟服务。默认虚拟服务与*域匹配,该域将为不包含主机/:授权头的任何请求提供路由服务,或者为请求不匹配另一个虚拟服务的域提供请求。 为虚拟服务指定的每个域在提供给Gloo的所有虚拟服务集合中都必须是唯一的。

看看教程。

更具体地说,在这个例子中,他们使用了两个域,echo.example.com和foxtrot.example.com,在您的例子中是d.db.example.comp.db.example.com

选项2:跨域分离所有权 我们可能考虑的第一个选择是用不同的域对每个服务建模,以便在不同的对象上管理路由。例如,如果我们的主域是example.com,那么我们可以为每个子域提供一个虚拟服务: echo.example.com和foxtrot.example.com。

代码语言:javascript
复制
apiVersion: gateway.solo.io/v1
kind: VirtualService
metadata:
  name: echo
  namespace: echo
spec:
  virtualHost:
    domains:
      - 'echo.example.com'
    routes:
      - matchers:
          - prefix: /echo
---
apiVersion: gateway.solo.io/v1
kind: VirtualService
metadata:
  name: foxtrot
  namespace: foxtrot
spec:
  virtualHost:
    domains:
      - 'foxtrot.example.com'
...

我希望这能帮到你。

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

https://stackoverflow.com/questions/62777217

复制
相关文章

相似问题

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