Google cloud platform 如何将外部流量映射到GCP traffic Director上的内部服务网格?

Google cloud platform 如何将外部流量映射到GCP traffic Director上的内部服务网格?,google-cloud-platform,kubernetes-ingress,istio,envoyproxy,gcp-load-balancer,Google Cloud Platform,Kubernetes Ingress,Istio,Envoyproxy,Gcp Load Balancer,我已经建立了一个简单的GKE集群,该集群连接到GCP Traffic Director 下一步是如何将外部流量映射到traffic Director后端服务,后者只是内部的 基本上,我的目标是拥有一个具有IP地址的外部负载平衡器,该IP地址接收外部流量并将其路由到traffic Director服务网格,以在不同的网络端点组之间分割流量 我尝试了以下方法: 在网络服务->负载平衡-->中手动创建外部负载平衡器,但是后端列表不包括Traffic Director后端服务,因此我无法创建一个具有外部

我已经建立了一个简单的GKE集群,该集群连接到GCP Traffic Director

下一步是如何将外部流量映射到traffic Director后端服务,后者只是内部的

基本上,我的目标是拥有一个具有IP地址的外部负载平衡器,该IP地址接收外部流量并将其路由到traffic Director服务网格,以在不同的网络端点组之间分割流量

我尝试了以下方法:

  • 在网络服务->负载平衡-->中手动创建外部负载平衡器,但是后端列表不包括Traffic Director后端服务,因此我无法创建一个具有外部IP并将其重定向到内部服务网格的外部负载平衡器。
  • 通过映射到k8s群集服务的
    .yaml
    安装并安装入口控制器-->这将创建一个外部负载平衡器,但它只是直接连接到该服务,而不是通过Traffic Director
  • 入口:

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: my-nginx-ingress
      annotations:
        nginx.ingress.kubernetes.io/proxy-connect-timeout: "60"
        nginx.ingress.kubernetes.io/proxy-send-timeout: "60"
        nginx.ingress.kubernetes.io/proxy-read-timeout: "60"
        nginx.ingress.kubernetes.io/send-timeout: "60"
        nginx.ingress.kubernetes.io/proxy-body-size: 1M
        nginx.ingress.kubernetes.io/use-regex: "true"
    spec:
      rules:
        - host: my-host-name.hostname.com
          http:
            paths:
              - path: "/"
                backend:
                  serviceName: service-test
                  servicePort: 80
    
    服务:

    apiVersion: v1
    kind: Service
    metadata:
      name: service-test
      annotations:
        cloud.google.com/neg: '{"exposed_ports":{"80":{"name": "service-test-neg"}}}'
    spec:
      ports:
      - port: 80
        name: service-test
        protocol: TCP
        targetPort: 8000
      selector:
        run: app1
      type: ClusterIP
    
    部署:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        run: app1
      name: app1
    spec:
      replicas: 1
      selector:
        matchLabels:
          run: app1
      template:
        metadata:
          labels:
            run: app1
        spec:
          containers:
          - image: gcr.io/kubernetes-e2e-test-images/serve-hostname-amd64:1.1
            name: app1
            command:
            - /bin/sh
            - -c
            - /serve_hostname -http=true -udp=false -port=8000
            ports:
            - protocol: TCP
              containerPort: 8000
    
    上面的部署和服务直接取自教程

    官方文档中似乎有一个概念,但它只是概念性的,并没有提供如何实际做到这一点


    如何使用外部负载平衡器将外部流量映射到GCP traffic Director管理的服务网格中,以便将高级流量配置映射到GKE?

    traffic Director不是用于路由的端点。它是服务网格的“控制平面”

    因此,您可以从GCP配置路由规则,而Traffic Director将按照预期配置您的侧车。但最终负载平衡器应该指向实例组或网络端点组,而不是流量控制器

    编辑

    Traffic Director不是正在配置的,而是正在配置的。它配置特使侧车。这些是L7代理,因此URL映射发生在代理上

    端点组将是一组POD的IP地址。由于集群的pod范围已添加到子网络中;作为IP别名,VPC能够从该范围中提取任何IP地址,将其分组,并在GCP上为HTTP负载平衡器创建后端


    基本上,Traffic Director是Istio,但控制平面与GCP解耦。

    Traffic Director不是路由指向的端点。它是服务网格的“控制平面”

    因此,您可以从GCP配置路由规则,而Traffic Director将按照预期配置您的侧车。但最终负载平衡器应该指向实例组或网络端点组,而不是流量控制器

    编辑

    Traffic Director不是正在配置的,而是正在配置的。它配置特使侧车。这些是L7代理,因此URL映射发生在代理上

    端点组将是一组POD的IP地址。由于集群的pod范围已添加到子网络中;作为IP别名,VPC能够从该范围中提取任何IP地址,将其分组,并在GCP上为HTTP负载平衡器创建后端


    基本上,Traffic Director是Istio,但控制平面与GCP解耦。

    我明白了。。只是澄清一下,基本上,负载平衡器流量将流向网络端点组(NEG),配置有URL映射的流量控制器将管理NEG的流量,并相应地将其定向到POD?@Updates I updated by answer,澄清这些疑问。我发现Traffic Director与我的用例并不匹配,所以我只是将Anthos与istio网关和虚拟服务一起使用。它还为我提供了一个现成的仪表板,用于在GCP上进行pod/service/ReplicateSet监控。谢谢你的澄清!我懂了。。只是澄清一下,基本上,负载平衡器流量将流向网络端点组(NEG),配置有URL映射的流量控制器将管理NEG的流量,并相应地将其定向到POD?@Updates I updated by answer,澄清这些疑问。我发现Traffic Director与我的用例并不匹配,所以我只是将Anthos与istio网关和虚拟服务一起使用。它还为我提供了一个现成的仪表板,用于在GCP上进行pod/service/ReplicateSet监控。谢谢你的澄清!