【问题标题】:Best practice to setup grpc-web -> envoy proxy -> backend service in gcp在 gcp 中设置 grpc-web -> envoy 代理 -> 后端服务的最佳实践
【发布时间】:2021-04-25 00:57:46
【问题描述】:

我已经阅读了一些教程/示例,试图找出一种简单的方法来启动带有特使代理的 grpc 后端来路由网络流量。 我成功地在本地运行此架构以进行 e2e 通信。

我找到了官方文档https://cloud.google.com/architecture/exposing-grpc-services-on-gke-using-envoy-proxy。但我认为我现在不需要负载均衡器。

我的目标:

  • 运行 Grpc 后端服务器以支持 iOS/Android 应用程序
  • Envoy 代理运行以支持 Web

是否有任何现有的教程可以为 grpc 网络路由部署后端服务器和特使代理?

【问题讨论】:

    标签: google-cloud-platform envoyproxy grpc-web


    【解决方案1】:

    1.gRPC 框架使移动应用程序可以像本地对象一样直接调用后端服务上的方法。您可以使用 gRPC 提高移动应用的带宽效率,并减少应用与在 Google Cloud Platform 上运行的后端服务之间的延迟。

    使用 envoy 代理设置 grpc 后端我们应该使用网络负载平衡,网络负载平衡接受来自互联网的传入请求(例如,来自公司外部的移动客户端或服务消费者)。网络负载平衡执行以下任务 负载均衡器与池中的工作节点的传入连接。流量被转发到 envoy Kubernetes Service,该服务暴露在集群中的所有工作节点上。 Kubernetes 网络代理将这些连接转发到运行 Envoy 的 pod。 针对集群中的工作程序节点执行 HTTP 运行状况检查。 Envoy 执行以下任务: 终止 SSL/TLS 连接。 通过查询内部集群 DNS 服务发现运行 gRPC 服务的 pod。 路由和负载平衡到 gRPC 服务 pod 的流量。 根据 gRPC 健康检查协议对 gRPC 服务进行健康检查。 使用网络负载平衡公开端点以进行健康检查。

    gRPC 服务(echo-grpc 和 reverse-grpc)公开为 Kubernetes 无头服务。这意味着没有分配 clusterIP 地址,并且 Kubernetes 网络代理不会对流向 Pod 的流量进行负载平衡。而是在集群 DNS 服务中创建包含 pod IP 地址的 DNS A 记录。 Envoy 会从此 DNS 条目中发现 pod IP 地址,并根据 Envoy 中配置的策略在它们之间进行负载平衡。

    部署特使:

    创建一个 Kubernetes ConfigMap 来存储 Envoy 配置文件 (envoy.yaml) kubectl apply -f k8s/envoy-configmap.yaml

    为 Envoy 创建一个 Kubernetes 部署: kubectl apply -f k8s/envoy-deployment.yaml

    验证两个 envoy pod 正在运行: kubectl 获取部署特使

    如需进一步阅读,请点击以下链接: https://cloud.google.com/architecture/exposing-grpc-services-on-gke-using-envoy-proxy

    有关为移动应用配置 Grpc 后端服务器的更多信息,请参阅以下链接: https://cloud.google.com/architecture/mobile-compute-engine-grpc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多