Cloud Run API 參考資料
本頁面提供相關 API 的參考資料,可用於設定 Cloud Run 工作負載的 Cloud Service Mesh。
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
欄位名稱 | 類型 | 欄位說明 |
---|---|---|
閘道 | 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 | string[] | 系統會忽略「external-mesh」虛擬服務。 不過,對於具有「網格」或閘道的虛擬服務,這些功能仍會繼續運作,GKE 工作負載也會照常運作。 |
tls | tlsRoute[] | 系統會忽略「external-mesh」虛擬服務。 不過,對於具有「網格」或閘道的虛擬服務,這些功能仍會繼續運作,GKE 工作負載也會照常運作。 |
tcp | tcpRoute[] | 如果是外部網格虛擬服務,系統會忽略這項設定。 不過,對於具有「網格」或閘道的虛擬服務,這些功能仍會繼續運作,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 工作負載也適用類似做法。
目的地規則
在預先發布版中,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 | 內嵌結構體,用於儲存清單中繼資料資訊,例如資源版本和分頁的接續符記。 |