【问题标题】:GKE Ingress for HTTPS and LoadBalancer for TCP on same backend?HTTPS 的 GKE Ingress 和 TCP 的 LoadBalancer 在同一后端?
【发布时间】:2021-03-14 14:01:27
【问题描述】:

用例是这样的: 我有一个带有 STOMP over websocket 的 RabbitMQ 集群。 websocket 使用 SSL (wss:x.x.x.x)。我设置了一个入口来处理证书。它将流量转发到内部端口 15674。 RabbitMQ 还需要在端口 5672 上接受 TCP。

Ingress 负载均衡器不做 TCP,它是 L7。 Service LoadBalancer 不做 HTTPS,它是 L4。

是否可以设置指向同一后端但不同端口的 Ingress 和 Service LoadBalancer? 有没有其他方法可以做到这一点?

【问题讨论】:

    标签: ssl tcp rabbitmq google-kubernetes-engine kubernetes-ingress


    【解决方案1】:

    GKE Ingress 仅适用于 HTTP / HTTPS / "HTTP/2" (TLS) 流量,您可以创建一个 GKE TCP LB 指向您在不同端口上拥有的相同后端。

    类似这样的:

    apiVersion: "v1"
    kind: "Service"
    metadata:
      name: "l4-loadbalancer"
      namespace: "default"
      labels:
        app: "nginx"
    spec:
      ports:
      - protocol: "TCP"
        port: 80
        targetPort: 80
      selector:
        app: "nginx"
      type: "LoadBalancer"
      loadBalancerIP: ""
    

    您也可以仅使用 GKE tcp 负载平衡器来处理所有这些问题,但缺点是您需要直接在后端处理 SSL 证书,如果您希望 GCP 处理此问题,那么 2 负载平衡器方法会更好。

    【讨论】:

    • 我错过的重要一点是 Ingress 和 LoadBalancer 可以通过标签链接到同一个后端。预期的缺点是它会创建 2 个负载均衡器。
    猜你喜欢
    • 2022-06-11
    • 2020-12-11
    • 1970-01-01
    • 2018-02-20
    • 2019-11-26
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 2020-11-25
    相关资源
    最近更新 更多