Cloud Run API 参考文档

本页面提供了用于为 Cloud Run 工作负载配置服务网格的 API 的参考信息。

Cloud Run V1 API (google.cloud.run.v1)

使用修订版本级系统注解启用服务网格。此注解的值是 Cloud Service Mesh Istio 集群的支持性网格的名称。

注释
run.googleapis.com/mesh projects/PROJECT>/locations/global/meshes/MESH>

Cloud Service Mesh Istio API

VirtualService API

字段名称 类型 字段说明
gateways 字符串 [] 如果网关包含“external-mesh”,则虚拟服务仅适用于非 GKE 工作负载。

如果同时指定了“mesh”和“external-mesh”,则虚拟服务会同时适用于非 GKE 工作负载和 GKE 工作负载。
exportTo string 考虑到非 GKE 工作负载没有命名空间概念,“external-mesh”虚拟服务会忽略 exportTo 字段。

但是,对于具有“mesh”的虚拟服务,这些字段仍可继续使用;对于 GKE 工作负载,网关仍可继续按预期运行。
httpRoute.HTTPMatchRequest.SourceLabels map<string, string=""></string,> “external-mesh”虚拟服务会忽略该字段。
但是,对于具有“mesh”的虚拟服务,这些字段仍可继续使用;对于 GKE 工作负载,网关仍可继续按预期运行。
httpRoute.HTTPMatchRequest.SourceNamespace string “external-mesh”虚拟服务会忽略该字段。

但是,对于具有“mesh”的虚拟服务,这些字段仍可继续使用;对于 GKE 工作负载,网关仍可继续按预期运行。
httpRoute.HTTPMatchRequest.Gateways 字符串[] “external-mesh”虚拟服务会忽略该字段。

但是,对于具有“mesh”的虚拟服务,这些字段仍可继续使用;对于 GKE 工作负载,网关仍可继续按预期运行。
tls tlsRoute[] “external-mesh”虚拟服务会忽略该字段。

但是,对于具有“mesh”的虚拟服务,这些字段仍可继续使用;对于 GKE 工作负载,网关仍可继续按预期运行。
tcp tcpRoute[] external-mesh 虚拟服务会忽略该字段。

但是,对于具有“mesh”的虚拟服务,这些字段仍可继续使用;对于 GKE 工作负载,网关仍可继续按预期运行。

Istio 自动 MTLS 和安全命名

目前,Cloud Service Mesh 支持对 GKE Service 之间的请求使用自动 Istio MutualTLS 和安全命名。

对于预览版,与 GKE 工作负载/服务通信的非 GKE 工作负载不会使用 Istio 自动 MTLS,也不会使用安全命名。流量采用纯文本形式。确保 GKE 服务具有宽松的 MTLS 政策(这是 Istio API 的默认设置),该政策接受来自 GKE 工作负载的 MTLS 流量和来自非 GKE 工作负载的纯文本流量。

使用以下命令检查 PeerAuthentication 是否处于宽松模式:

# list PeerAuthentication resources in a namespace
# If no PeerAuthentication resource exists in the namespace, 
# then it's PERMISSIVE mode (Istio API default)
kubectl get PeerAuthentication -n $NAMESPACE

# for each of the above run the following command
kubectl get PeerAuthentication $PEER-AUTHN -n $NAMESPACE

# Expected Output is as follows:
# MTLS Mode must be PERMISSIVE.
# If the output says STRICT, then please update the policy to PERMISSIVE.
apiVersion: security.istio.io/v1
kind: PeerAuthentication
metadata:
  name: $PEER-AUTHN
  namespace: $NAMESPACE
spec:
  mtls:
    mode: PERMISSIVE

MeshConfig 遥测

Cloud Service Mesh 支持使用 MeshConfig 遥测 API 来针对 GKE 工作负载启用和停用 Cloud Logging 和 Cloud Monitoring。同样,这对于非 GKE 工作负载也适用。

目标规则

对于预览版,系统支持目标为“external-mesh”虚拟服务的 DestinationRule,但以下字段除外:trafficPolicy.tls

Sidecar API

Sidecar API 不适用于非 GKE 工作负载。非 GKE 工作负载将能够看到范围限定为“external-mesh”的所有虚拟服务,而不会被任何边车可见性规则过滤。

Security API - 授权政策、请求身份验证政策

这些 API 不适用于作为客户端发送出站流量的非 GKE 工作负载。它们将继续适用于接收入站流量的 GKE 工作负载。

GCPBackend API

字段名称 类型 字段说明
GCPBackend struct GCPBackend 资源的架构。
TypeMeta metav1.TypeMeta 用于存储种类和 API 版本等元数据信息的嵌入式结构体。
ObjectMeta metav1.ObjectMeta 用于存储名称、命名空间、标签、注解等元数据信息的嵌入式结构体。
规范 GCPBackendSpec GCPBackend 资源的规范,用于定义其期望状态。
GCPBackendSpec struct 定义 GRPCRoute 的期望状态。
CloudRun *CloudRunBackend 定义在 CloudRun 中运行的后端(可选)。
CloudRunBackend struct 标识在 Cloud Run 上运行的服务。
Service string CloudRun 服务名称。长度必须介于 1 到 49 个字符之间,遵循特定格式,并且只能包含小写字母、连字符和数字。
区域 []Region CloudRun 服务所在的区域。只能提供一个区域。
项目 string CloudRun 服务所在项目的 ID。默认为与 GKE 集群相同的项目。该字段长度必须介于 6 到 30 个字符之间,且遵循特定格式。目前,Cloud Run Service 和 GKE 集群必须位于同一项目中。
GCPBackendList struct 包含 GCPBackend 列表。
Items []*GCPBackend 表示 GCPBackend 资源列表的 GCPBackend 指针数组。
ListMeta metav1.ListMeta 用于存储资源版本和分页的继续令牌等列表元数据信息的嵌入式结构体。