Istio API を使用したサポートされている機能(マネージド コントロール プレーン)

このページでは、Traffic Director または istiod をコントロール プレーンとして使用する Cloud Service Mesh でサポートされている機能と制限事項、および各実装の違いについて説明します。これは選択できるオプションではありません。istiod の実装は既存のユーザーのみが利用できます。新規インストールでは、Traffic Director の実装が使用されます。

クラスタ内コントロール プレーン用に Cloud Service Mesh でサポートされている機能の一覧については、Istio API(クラスタ内 istiod コントロール プレーン)の使用をご覧ください。使用している Cloud Service Mesh コントロール プレーンがわからない場合は、コントロール プレーンの実装を特定するの手順でコントロール プレーンの実装を確認できます。

制限事項

次の制限が適用されます。

  • GKE クラスタは、サポートされているリージョンのいずれかに存在する必要があります。
  • GKE のバージョンは、サポートされているバージョンである必要があります。
  • 環境に記載されているプラットフォームのみがサポートされています。
  • リリース チャンネルの変更はサポートされていません。
  • asmcli を含むマネージド Cloud Service Mesh から Fleet API を含む Cloud Service Mesh への移行はサポートされていません。同様に、Fleet API を含むマネージド Cloud Service Mesh の --management manual から --management automatic へのプロビジョニングもサポートされていません。
  • 移行とアップグレードは、Mesh CA を使用してインストールされた、クラスタ内 Cloud Service Mesh のバージョン 1.9 以降でのみサポートされています。Istio CA(旧称 Citadel)を使用してインストールする場合は、先に Mesh CA に移行する必要があります。
  • スケールはクラスタあたり 1,000 個のサービスと 5,000 個のワークロードに制限されています。
  • マルチクラスタの場合、マルチプライマリ デプロイ オプションのみがサポートされています。マルチクラスタのプライマリリモート デプロイ オプションはサポートされていません。
  • istioctl ps はサポートされていません。代わりに、トラブルシューティングで説明されているように、gcloud beta container fleet mesh debug コマンドを使用できます。
  • サポートされていない API:

    • EnvoyFilter API

    • WasmPlugin API

    • IstioOperator API

    • Kubernetes Ingress API

    • Kubernetes Gateway API

  • GKE Enterprise に登録しなくてもマネージド コントロール プレーンを使用できますが、Google Cloud コンソールの一部の UI 要素と機能は、GKE Enterprise のサブスクライバーのみが使用できます。サブスクライバーと非サブスクライバーが使用できる機能については、GKE Enterprise と Cloud Service Mesh の UI の違いをご覧ください。

  • マネージド コントロール プレーンのプロビジョニング プロセス中に、選択したチャネルに対応する Istio CRD が指定のクラスタにインストールされます。クラスタに既存の Istio CRD が存在している場合、それらは上書きされます。

  • マネージド Cloud Service Mesh は、デフォルトの DNS ドメイン .cluster.local のみをサポートします。

  • 2023 年 11 月 14 日以降、Rapid リリース チャンネルでマネージド Cloud Service Mesh を新規インストールすると、Envoy のみを使用して JWKS が取得されます。これは PILOT_JWT_ENABLE_REMOTE_JWKS=envoy Istio オプションと同等です。Regular および Stable リリース チャンネルでのインストール、または 2023 年 11 月 14 日より前の Rapid リリース チャンネルでのインストールとは異なり、追加の ServiceEntry および DestinationRule 構成が必要になる場合があります。例については、requestauthn-with-se.yaml.tmpl をご覧ください。

コントロール プレーンの違い

istiod と Traffic Director コントロール プレーンの実装では、サポートされる機能が異なります。使用している実装を確認するには、コントロール プレーンの実装を特定するをご覧ください。

  • – 機能が利用可能で、デフォルトで有効になっていることを示します。
  • † - 機能 API はさまざまなプラットフォーム間で異なる可能性があることを示します。
  • * - 機能がプラットフォームでサポートされていることを示します。有効にする手順は、オプション機能の有効化または機能の表にリンクされている機能ガイドに記載されています。
  • § - 機能が許可リストでサポートされていることを示します。アクセス権をリクエストするには、Google Cloud サポートにお問い合わせください。
  • – 機能が利用できないか、サポートされていないことを示します。

デフォルト機能とオプション機能は、Google Cloud サポートで完全にサポートされています。表に記載されていない機能はベスト エフォート型のサポートになります。

コントロール プレーンの実装を決定するもの

マネージド Cloud Service Mesh をフリートで初めてプロビジョニングするときに、使用するコントロール プレーンの実装が決定されます。そのフリートでマネージド Cloud Service Mesh をプロビジョニングするすべてのクラスタで、同じ実装が使用されます。

マネージド Cloud Service Mesh にオンボーディングする新しいフリートは、TRAFFIC_DIRECTOR コントロール プレーンの実装を受け取ります。ただし、特定の例外があります。

  • 既存のマネージド Anthos Service Mesh ユーザーの場合、少なくともTODO(DATE-IN-MSA)までは、同じ Google Cloud 組織内の新しいフリートをマネージド Cloud Service Mesh にオンボーディングすると、ISTIOD コントロール プレーンの実装が表示されます。 該当するユーザーは、サポートに連絡してこの動作を微調整できます。
  • マネージド Cloud Service Mesh をプロビジョニングするときにフリート内のクラスタが Certificate Authority Service を使用する場合は、ISTIOD コントロール プレーン実装が提供されます。
    Certificate Authority Service を初めて使用する前に、サポートに連絡して、将来のコントロール プレーンの移行の負荷を軽減する方法を確認してください。
  • マネージド Cloud Service Mesh をプロビジョニングするときに、フリート内のいずれかのクラスタにクラスタ内 Cloud Service Mesh コントロール プレーンが含まれている場合、ISTIOD コントロール プレーンの実装を受け取ります。
  • フリート内のいずれかのクラスタが GKE Sandbox を使用している場合、マネージド Cloud Service Mesh をプロビジョニングすると、ISTIOD コントロール プレーンの実装を受け取ります。

コントロール プレーンの実装を特定する

次のコマンドを実行して、コントロール プレーンの実装を特定します。

  gcloud container fleet mesh describe --project FLEET_PROJECT_ID

Google Cloud APIs で Cloud Service Mesh を使用している場合(Cloud Service Mesh についてを参照)、このコマンドは機能しません。

出力は次のようになります。

  ...
  membershipSpecs:
    projects/746296320118/locations/us-central1/memberships/demo-cluster-1:
      mesh:
        management: MANAGEMENT_AUTOMATIC
  membershipStates:
    projects/746296320118/locations/us-central1/memberships/demo-cluster-1:
      servicemesh:
        controlPlaneManagement:
          details:
          - code: REVISION_READY
            details: 'Ready: asm-managed'
          state: ACTIVE
          implementation: TRAFFIC_DIRECTOR
  ...

implementation: 使用できる値:

  • TRAFFIC_DIRECTOR: Google Cloud のコア インフラストラクチャは、Cloud Service Mesh コントロール プレーンとして機能します。
  • ISTIOD: istiod のマネージド インスタンスは Cloud Service Mesh のコントロール プレーンとして機能します。
  • UPDATING: クラスタは実装間で移行されています。まもなく TRAFFIC_DIRECTOR の実装が提供される予定です。

マネージド コントロール プレーンでサポートされている機能

インストール、アップグレード、ロールバック

特徴 管理対象(TD) マネージド(Istiod)
フリート機能 API を使用した GKE クラスタへのインストール
Mesh CA を使用する ASM 1.9 バージョンからアップグレード
1.9 より前のバージョンの Cloud Service Mesh から直接(スキップレベル)アップグレード(間接的なアップグレードに関する注意事項を参照)
Istio OSS からの直接(スキップレベル)アップグレード(間接アップグレードに関する注意事項を参照)
Istio-on-GKE アドオンから直接(スキップレベル)アップグレード(間接アップグレードに関する注意事項を参照)
オプション機能の有効化

環境

特徴 管理対象(TD) マネージド(Istiod)
サポート対象のいずれかのリージョンの GKE 1.25~1.27
Autopilot の GKE 1.25~1.27 クラスタ
Google Cloud 以外の環境(GKE Enterprise オンプレミス、他のパブリック クラウドの GKE Enterprise、Amazon EKS、Microsoft AKS、その他の Kubernetes クラスタ)

スケーリング

特徴 管理対象(TD) マネージド(Istiod)
クラスタあたり 1,000 個のサービスと 5,000 個のワークロード
メッシュあたり 50 個の ServicePorts、ServicePort あたり 36 個の Pod

プラットフォーム環境

特徴 管理対象(TD) マネージド(Istiod)
単一ネットワーク
マルチネットワーク
単一プロジェクト
共有 VPC を使用したマルチプロジェクト

マルチクラスタ デプロイ

特徴 管理対象(TD) マネージド(istiod)
マルチプライマリ
プライマリリモート
宣言型 API を使用したマルチクラスタ エンドポイントの検出
リモート シークレットを使用したマルチクラスタ エンドポイント ディスカバリ

用語に関する注意事項

  • マルチプライマリ構成とは、すべてのクラスタでその構成を複製する必要があることを意味います。
  • プライマリリモート構成とは、単一のクラスタにその構成が含まれ、信頼できる送信元と見なされることを意味します。
  • Cloud Service Mesh では、一般的な接続に基づいて、簡素化されたネットワーク定義を使用しています。ワークロード インスタンスは、ゲートウェイなしで直接通信できる場合は同じネットワーク上に存在します。

ベースイメージ

特徴 管理対象(TD) マネージド(Istiod)
Distroless プロキシ イメージ

† マネージド(TD)コントロール プレーンを備えた Cloud Service Mesh は、distroless イメージタイプのみをサポートします。これは変更できません。

distroless イメージのバイナリは最小限であり、distroless イメージには存在しないため、bash や curl などの通常のコマンドを実行できません。 ただし、エフェメラル コンテナを使用して実行中のワークロード Pod に接続し、Pod を検査してカスタム コマンドを実行できます。たとえば、Cloud Service Mesh ログの収集をご覧ください。

セキュリティ

VPC Service Controls

特徴 管理対象(TD) マネージド(Istiod)
VPC Service Controls プレビュー
VPC Service Controls GA

証明書の配布とローテーションのメカニズム

特徴 管理対象(TD) マネージド(Istiod)
ワークロード証明書の管理
Ingress ゲートウェイと Egress ゲートウェイでの外部証明書の管理。

認証局(CA)のサポート

特徴 管理対象(TD) マネージド(istiod)
Anthos Service Mesh 認証局(Mesh CA)
Certificate Authority Service
Istio CA
カスタム CA との統合

セキュリティ機能

Cloud Service Mesh は、Istio のセキュリティ機能をサポートしているだけでなく、アプリケーションの保護に役立つ機能をさらに提供します。

特徴 管理対象(TD) マネージド(Istiod)
IAP の統合
エンドユーザー認証
ドライラン モード
拒否ロギング
監査ポリシー(サポート対象外)

認可ポリシー

特徴 管理対象(TD) マネージド(istiod)
認証 v1beta1 ポリシー
CUSTOM 認可ポリシー §

† Traffic Director のコントロール プレーンの実装では、rules.from.source.RemoteIp フィールドと rules.from.source.NotRemoteIp フィールドはサポートされていません。

ピア認証

特徴 管理対象(TD) マネージド(Istiod)
自動 mTLS
mTLS PERMISSIVE モード
mTLS の STRICT モード * *
mTLS 無効モード

認証のリクエスト

特徴 管理対象(TD) マネージド(Istiod)
JWT 認証(注 1)
JWT 申し立てベースルーティング
JWT ヘッダーへの申し立てのコピー

メモ:

  1. サードパーティの JWT はデフォルトで有効になっています。
  2. RequestAuthentication API を定義するときに、完全な fqdn/ホスト名を JWKSURI に追加します。
  3. マネージド コントロール プレーンでは、JWKS URI を指定するときに Envoy が JWKS を取得します。

テレメトリー

指標

特徴 管理対象(TD) マネージド(Istiod)
Cloud Monitoring(HTTP プロキシ内指標)
Cloud Monitoring(TCP プロキシ内指標)
Prometheus 指標の Grafana へのエクスポート(Envoy 指標のみ) * *
Prometheus の指標を Kiali にエクスポート
Google Cloud Managed Service for Prometheus(Cloud Service Mesh ダッシュボード以外) * *
Istio Telemetry API
カスタム アダプタ / バックエンド(プロセス内またはプロセス外)
任意のテレメトリーとロギング バックエンド

† Traffic Director コントロール プレーンは、アクセスログtraceの構成に使用される Istio テレメトリー API のサブセットをサポートしています。

プロキシ リクエストのロギング

特徴 管理対象(TD) マネージド(Istiod)
トラフィック ログ
アクセスログ * *

トレース

特徴 管理対象(TD) マネージド(Istiod)
Cloud Trace * *
Jaeger トレース(顧客管理の Jaeger の使用を許可する) 互換
Zipkin トレース(顧客管理の Zipkin の使用を許可する) 互換

ネットワーキング

トラフィックのインターセプトとリダイレクトのメカニズム

特徴 管理対象(TD) マネージド(istiod)
CAP_NET_ADMINinit コンテナを使用する iptables の従来のユースケース
Istio Container Network Interface(CNI)
ホワイトボックス サイドカー

プロトコル サポート

特徴 管理対象(TD) マネージド(Istiod)
IPv4
HTTP/1.1
HTTP/2
TCP バイト ストリーム(注 1)
gRPC
IPv6

メモ:

  1. TCP はネットワーキング用のプロトコルですが、TCP 指標は収集されますが、報告されません。指標は、Google Cloud コンソール内の HTTP サービスにのみ表示されます。
  2. レイヤ 7 機能で WebSocket、MongoDB、Redis、Kafka、Cassandra、RabbitMQ、Cloud SQL のプロトコル向けに構成されているサービスはサポートされません。TCP バイト ストリームのサポートを使用して、プロトコルを機能させることができます。TCP バイト ストリームがプロトコルをサポートできない場合(たとえば、Kafka がプロトコル固有の応答でリダイレクト アドレスを送信し、このリダイレクトが Cloud Service Mesh のルーティング ロジックに対応していない場合)、プロトコルはサポートされません。

Envoy のデプロイ

特徴 管理対象(TD) マネージド(Istiod)
サイドカー
Ingress ゲートウェイ
サイドカーから直接の下り(外向き)
Egress ゲートウェイを使用した下り(外向き) * *

CRD サポート

特徴 管理対象(TD) マネージド(Istiod)
サイドカー リソース
サービス エントリ リソース
割合、フォールト インジェクション、パスマッチング、リダイレクト、再試行、書き換え、タイムアウト、再試行、ミラーリング、ヘッダー操作、CORS ルーティング ルール
「EnvoyFilter」API §
wamPlugin API
Istio Operator

Istio Ingress ゲートウェイのロードバランサ

特徴 管理対象(TD) マネージド(Istiod)
サードパーティの外部ロードバランサ
Google Cloud 内部ロードバランサ * *

サービス メッシュ クラウド ゲートウェイ

特徴 管理対象(TD) マネージド(istiod)
サービス メッシュ クラウド ゲートウェイ

ロード バランシング ポリシー

特徴 管理対象(TD) マネージド(Istiod)
ラウンドロビン
最小接続
ランダム
パススルー
コンシステント ハッシュ
局所性

サービス エントリ

特徴 管理対象(TD) マネージド(Istiod)
ServiceEntry v1beta1

† Traffic Director コントロール プレーンの実装は、次のフィールドとフィールド内の値をサポートしていません。

  • workloadSelector フィールド
  • endpoints[].network フィールド
  • endpoints[].locality フィールド
  • endpoints[].weight フィールド
  • endpoints[].serviceAccount フィールド
  • resolution フィールドの DNS_ROUND_ROBIN
  • location フィールドの MESH_INTERNAL
  • endpoints[].address フィールドの Unix ドメイン ソケット アドレス

宛先ルール

特徴 管理対象(TD) マネージド(Istiod)
宛先ルール v1beta1

† Traffic Director コントロール プレーンの実装では、trafficPolicy.loadBalancer.localityLbSetting フィールドと trafficPolicy.tunnel フィールドはサポートされていません。また、Traffic Director のコントロール プレーンの実装では、サブセットを定義する宛先ルールが、Kubernetes Service または ServiceEntry と同じ名前空間とクラスタ内に存在する必要があります。

サイドカー

特徴 管理対象(TD) マネージド(Istiod)
Sidecar v1beta1

† Traffic Director のコントロール プレーンの実装では、次のフィールドとフィールド値はサポートされていません。

  • ingress フィールド
  • egress.port フィールド
  • egress.bind フィールド
  • egress.captureMode フィールド
  • inboundConnectionPool フィールド

MeshConfig

特徴 管理対象(TD) マネージド(Istiod)
LocalityLB §
ExtensionProviders §
CACert
ImageType - distroless §
OutboundTrafficPolicy §
defaultProviders.accessLogging
defaultProviders.tracing
defaultConfig.tracing.stackdriver §
accessLogFile §

ProxyConfig

特徴 管理対象(TD) マネージド(Istiod)
DNS プロキシ(ISTIO_META_DNS_CAPTURE、ISTIO_META_DNS_AUTO_ALLOCATE)
HTTP/1.0 のサポート(ISTIO_META_NETWORK)
イメージの選択(Distroless またはベースイメージ)

Distroless イメージがインジェクションに使用されます。

リージョン

GKE クラスタは、次のいずれかのリージョンに存在するか、次のリージョン内の任意のゾーンに存在する必要があります。

リージョン ロケーション
asia-east1 台湾
asia-east2 香港
asia-northeast1 東京(日本)
asia-northeast2 大阪(日本)
asia-northeast3 韓国
asia-south1 ムンバイ(インド)
asia-south2 デリー(インド)
asia-southeast1 シンガポール
asia-southeast2 ジャカルタ
australia-southeast1 シドニー(オーストラリア)
australia-southeast2 メルボルン(オーストラリア)
europe-central2 ポーランド
europe-north1 フィンランド
europe-southwest1 スペイン
europe-west1 ベルギー
europe-west2 イングランド
europe-west3 ドイツ
europe-west4 オランダ
europe-west6 スイス
europe-west8 イタリア
europe-west9 フランス
me-central1 ドーハ
me-central2 ダンマーム(サウジアラビア)
me-west1 テルアビブ
northamerica-northeast1 モントリオール(カナダ)
northamerica-northeast2 トロント(カナダ)
southamerica-east1 ブラジル
southamerica-west1 チリ
us-central1 アイオワ
us-east1 サウスカロライナ
us-east4 北バージニア
us-east5 オハイオ
us-south1 ダラス
us-west1 オレゴン
us-west2 ロサンゼルス
us-west3 ソルトレイクシティ
us-west4 ラスベガス

ユーザー インターフェース

特徴 管理対象(TD) マネージド(Istiod)
Google Cloud コンソールでの Anthos Service Mesh ダッシュボード
Cloud Monitoring
Cloud Logging

ツール

特徴 管理対象(TD) マネージド(istiod)
gcloud beta container fleet mesh debug ツール