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 | 用于存储资源版本和分页的继续令牌等列表元数据信息的嵌入式结构体。 |