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
字段名称 | 类型 | 字段说明 |
---|---|---|
gateways | String [] | 如果网关包含“external-mesh”,则虚拟服务仅适用于非 GKE 工作负载。 如果同时指定“mesh”和“external-mesh”,虚拟服务将同时应用于非 GKE 工作负载和 GKE 工作负载。 |
exportTo | 字符串 | 鉴于非 GKE 工作负载不存在命名空间的概念,“external-mesh”虚拟服务将忽略 exportTo 字段。 不过,对于具有“网状结构”的虚拟服务,这些网关仍可继续使用;对于 GKE 工作负载,网关仍可按预期运行。 |
httpRoute.HTTPMatchRequest.SourceLabels | map<string, string=""></string,> | 对于“external-mesh”虚拟服务,系统会忽略此属性。 不过,对于具有“网状结构”的虚拟服务,这些网关仍可继续正常使用;对于 GKE 工作负载,网关仍可继续按预期运行。 |
httpRoute.HTTPMatchRequest.SourceNamespace | 字符串 | 对于“external-mesh”虚拟服务,系统会忽略此属性。 不过,对于具有“网状结构”的虚拟服务,这些网关仍可继续使用;对于 GKE 工作负载,网关仍可按预期运行。 |
httpRoute.HTTPMatchRequest.Gateways | 字符串[] | 对于“external-mesh”虚拟服务,系统会忽略此属性。 不过,对于具有“网状结构”的虚拟服务,这些网关仍可继续使用;对于 GKE 工作负载,网关仍可按预期运行。 |
tls | tlsRoute[] | 对于“external-mesh”虚拟服务,系统会忽略此属性。 不过,对于具有“网状结构”的虚拟服务,这些网关仍可继续使用;对于 GKE 工作负载,网关仍可按预期运行。 |
tcp | tcpRoute[] | 对于外部网格虚拟服务,系统会忽略此字段。 不过,对于具有“网状结构”的虚拟服务,这些网关仍可继续使用;对于 GKE 工作负载,网关仍可按预期运行。 |
Istio Auto MTLS 和安全命名
目前,Cloud Service Mesh 支持为 GKE 服务之间的请求自动使用 Istio MutualTLS 和安全命名。
对于预览版,与 GKE 工作负载/服务通信的非 GKE 工作负载不会使用 Istio Auto 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 工作负载也适用。
目标规则
对于预览版,DestinationRule
将支持定位到“external-mesh”虚拟服务,但以下字段除外:trafficPolicy.tls
Sidecar API
Sidecar API 不适用于非 GKE 工作负载。非 GKE 工作负载将能够看到范围为“external-mesh”的所有虚拟服务,而不会被任何 Sidecar 可见性规则过滤。
Security API - Authorization Policy, Request Authentication Policy
这些限制不适用于充当发送出站流量的客户端的非 GKE 工作负载。它们将继续应用接收入站流量的 GKE 工作负载。
GCPBackend API
字段名称 | 类型 | 字段说明 |
---|---|---|
GCPBackend | 结构体 | GCPBackend 资源的架构。 |
TypeMeta | metav1.TypeMeta | 用于存储类型和 API 版本等元数据信息的内嵌结构体。 |
ObjectMeta | metav1.ObjectMeta | 用于存储名称、命名空间、标签、注释等元数据信息的内嵌结构体。 |
规范 | GCPBackendSpec | GCPBackend 资源的规范,用于定义其期望状态。 |
GCPBackendSpec | 结构体 | 定义 GRPCRoute 的目标状态。 |
BackendService | *BackendServiceBackend | 定义后端服务。(可选)。 |
BackendServiceBackend | 结构体 | 用于标识后端服务。 |
名称 | 字符串 | BackendService 名称。必须介于 1 到 49 个字符之间,遵循特定格式,并且只能由小写字母、连字符和数字组成。 |
位置 | 位置 | BackendService 的位置。对于 CSM,必须为“全球”。(对于托管式负载平衡器,为区域性/全球性)。默认为与集群相同的位置。 |
项目 | 字符串 | BackendService 的项目 ID。默认为与 GKE 集群相同的项目。长度必须介于 6 到 30 个字符之间,并且遵循特定模式。目前,BackendService 和 GKE 集群必须位于同一项目中。 |
GCPBackendList | 结构体 | 包含 GCPBackend 列表。 |
内容 | []*GCPBackend | 表示 GCPBackend 资源列表的 GCPBackend 指针数组。 |
ListMeta | metav1.ListMeta | 用于存储列表元数据信息(例如资源版本和用于分页的继续令牌)的内嵌结构体。 |