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 內嵌結構體,用於儲存清單中繼資料資訊,例如資源版本和分頁的接續符記。