我的本地计算机上运行一个应用程序,它使用 React -> gRPC-Web -> Envoy -> Go 应用程序,一切运行都没有问题。我正在尝试使用 GKE Autopilot 进行部署,但无法获得正确的配置。我对所有 GCP/GKE 都是新手,因此我正在寻求帮助以找出问题所在。
我最初关注的是这个文档,尽管我只有一个 gRPC 服务: https://cloud.google.com/architecture/exusing-grpc-services-on-gke-using-envoy-proxy
据我所知,GKE Autopilot 模式需要使用外部 HTTP(s) 负载平衡,而不是上述解决方案中所述的网络负载平衡,因此我一直在尝试使其发挥作用。经过各种尝试,我目前的策略有Ingress、BackendConfig、Service、Deployment。该部署包含三个容器:我的应用程序、用于转换 gRPC-Web 请求和响应的 Envoy sidecar,以及云 SQL 代理 sidecar。我最终想使用 TLS,但现在我将其排除在外,以免事情变得更加复杂。
当我应用所有配置时,后端服务显示一个区域中的一个后端,并且运行状况检查失败。健康检查设置为端口 8080 和路径 /healthz,这是我在部署配置中指定的内容,但我很怀疑,因为当我查看 envoy-sidecar 容器的详细信息时,它显示了 Readiness 探针如:http-get HTTP://:0/healthz headers=x-envoy-livenessprobe:healthz。“:0”只是意味着它使用容器的默认地址和端口,还是表明存在配置问题?
我一直在阅读各种文档,但无法将它们拼凑在一起。有没有一个例子可以说明如何做到这一点?我一直在寻找,但没有找到。
我当前的配置是:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: grammar-games-ingress
#annotations:
# If the class annotation is not specified it defaults to "gce".
# kubernetes.io/ingress.class: "gce"
# kubernetes.io/ingress.global-static-ip-name: <IP addr>
spec:
defaultBackend:
service:
name: grammar-games-core
port:
number: 80
---
apiVersion: …Run Code Online (Sandbox Code Playgroud)