Cloud Run API 参考文档

本页面提供了用于为 Cloud Run 工作负载配置 Cloud Service Mesh 的 API 的参考文档。

Cloud Run API

v1 API

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

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

v2 API

使用 Service 资源中的 serviceMesh 字段启用 Cloud Service Mesh。

Cloud Service Mesh Istio API

VirtualService API

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

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

但是,对于具有“mesh”的虚拟服务,这些字段仍可继续使用;对于 GKE 工作负载,网关仍可继续按预期运行。
httpRoute.HTTPMatchRequest.SourceLabels map<string, string=""></string,> “external-mesh”虚拟服务会忽略该字段。
但是,对于具有“mesh”的虚拟服务,这些字段仍可继续使用;对于 GKE 工作负载,网关仍可继续按预期运行。
httpRoute.HTTPMatchRequest.SourceNamespace 字符串 “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 服务之间的请求使用自动 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 字符串 CloudRun 服务名称。长度必须介于 1 到 49 个字符之间,遵循特定格式,并且只能包含小写字母、连字符和数字。
区域 []Region CloudRun 服务的区域。只能提供一个区域。
项目 字符串 CloudRun 服务的项目 ID。默认与 GKE 集群所属的项目相同。长度必须介于 6 到 30 个字符之间,并遵循特定格式。目前,Cloud Run 服务和 GKE 集群必须位于同一项目中。
GCPBackendList struct 包含 GCPBackend 列表。
Items []*GCPBackend 表示 GCPBackend 资源列表的 GCPBackend 指针数组。
ListMeta metav1.ListMeta 用于存储资源版本和分页的继续令牌等列表元数据信息的嵌入式结构体。