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

Cloud Service Mesh は、Service リソースserviceMesh フィールドを使用して有効にします。

Cloud Service Mesh Istio API

VirtualService API

フィールド名 フィールドの説明
ゲートウェイ String [] ゲートウェイに「external-mesh」が含まれている場合、仮想サービスは GKE 以外のワークロードにのみ適用されます。

「external-mesh」とともに「mesh」が指定されている場合、仮想サービスは GKE 以外のワークロードと GKE ワークロードの両方に適用されます。
exportTo 文字列 GKE 以外のワークロードには Namespace のコンセプトがないため、「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[] external-mesh 仮想サービスでは無視されます。

ただし、「メッシュ」またはゲートウェイがある仮想サービスでは引き続き機能し、GKE ワークロードでは想定どおりに機能します。

Istio 自動 MTLS とセキュア命名

現在、Cloud Service Mesh は、GKE サービス間のリクエストに対して自動 Istio MutualTLS とセキュア命名をサポートしています。

プレビュー版では、GKE ワークロードまたはサービスと通信する GKE 以外のワークロードは、Istio 自動 MTLS もセキュア命名も使用しません。トラフィックはプレーン テキストで送信されます。GKE サービスに、GKE ワークロードからの MTLS トラフィックと GKE 以外のワークロードからのプレーンテキストを受け入れることができる許可付き MTLS ポリシー(Istio API のデフォルト)があることを確認します。

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 以外のワークロードは、Sidecar の可視性ルールでフィルタされることなく、「external-mesh」にスコープされたすべての仮想サービスを確認できます。

Security API - 認可ポリシー、リクエスト認証ポリシー

これは、送信トラフィックを送信するクライアントとして機能する GKE 以外のワークロードには適用されません。引き続き、着信トラフィックを受信する GKE ワークロードが適用されます。

GCPBackend API

フィールド名 フィールドの説明
GCPBackend struct GCPBackend リソースのスキーマ。
TypeMeta metav1.TypeMeta 種類や API バージョンなどのメタデータ情報を保存するための埋め込み構造体。
ObjectMeta metav1.23ObjectMeta 名前、名前空間、ラベル、アノテーションなどのメタデータ情報を保存するための埋め込み構造体。
Spec GCPBackendSpec GCPBackend リソースの仕様。目的の状態を定義します。
GCPBackendSpec struct GRPCRoute の望ましい状態を定義します。
BackendService *BackendServiceBackend バックエンド サービスを定義します。(省略可)。
BackendServiceBackend struct バックエンド サービスを識別します。
Name 文字列 BackendService 名1 ~ 49 文字で、特定のパターンに従い、小文字、ハイフン、数字のみで構成する必要があります。
ロケーション ロケーション BackendService のロケーション。CSM の場合はグローバルにする必要があります。(マネージド LB の場合はリージョン/グローバル)。デフォルトはクラスタと同じロケーションです。
プロジェクト 文字列 BackendService のプロジェクト ID。デフォルトは GKE クラスタと同じプロジェクトです。6 ~ 30 文字で、特定のパターンに従っている必要があります。現在、BackendService と GKE クラスタは同じプロジェクトに存在する必要があります。
GCPBackendList struct GCPBackend のリストが含まれます。
アイテム []*GCPBackend GCPBackend リソースのリストを示す GCPBackend ポインタの配列。
ListMeta metav1.ListMeta リソース バージョンやページネーションの続行トークンなど、リストのメタデータ情報を保存するための埋め込み構造体。