我用gRPC和HTTP2设置了一个Cloud Run实例。效果很好。但是,我想在外部打开一个新端口,并通过HTTPS将流量路由到gRPC。
这是当前容器的YAML:
- image: asia.gcr.io/assets-320007/server5c2b87a8444cb42e566e130a907015df7dd841b4
ports:
- name: h2c
containerPort: 5000
resources:
limits:
cpu: 1000m
memory: 512Mi
我不能添加新的端口,因为如果我这样做,我得到:
spec.template.spec.containers[0]。端口应该包含0或1个端口(字段:spec.template.spec.containers[0].ports)
而且,YAML没有指定转发端口。这似乎只是假设你只会设置一个端口,自动路由到Docker容器上的一个开放端口。这是真的吗?
注意:如果YAML附带参考文档或模式,那就太好了。这样我们就可以知道所有可能的排列。
是的,您只能为Cloud Run服务公开一个端口。
我还发现这是一个奇怪的限制。
我正在部署使用gRPC和暴露Prometheus指标的服务,并且已经能够在单个端口上复用HTTP/2和HTTP/1服务,但它需要额外的工作,并且与Kubernetes的概念基础不一致。
GCP的一个优秀特性是全面和最新的文档。这是云运行服务
注意使用[API Explorer] (https://developers.google.com/apis-explorer)找到,然后找到Cloud Run Admin API
这些原生类型和类似的Kubernetes类型之间存在一些差异。我使用的一种方法是使用例如gcloud
部署已知良好的服务,然后验证该服务生成的YAML。
例如…我的头顶…容器端口不能有任意名称,但必须是....http1
(见链接)