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

  • 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 がさまざまなプラットフォームで異なる場合があることを示します。
  • * - 機能がプラットフォームでサポートされていることを示します。有効にする手順は、オプション機能の有効化または機能の表にリンクされている機能ガイドに記載されています。
  • § - 許可リストでサポートされている機能であることを示します。マネージド Anthos Service Mesh の以前のユーザーは、組織レベルで自動的に許可リストに登録されます。アクセスをリクエストするか、許可リストのステータスを確認するには、Google Cloud サポートにお問い合わせください。
  • – 機能が利用できないか、サポートされていないことを示します。

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

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

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

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

  • 既存のマネージド Cloud Service Mesh ユーザーの場合、少なくとも 2024 年 6 月 30 日までは、同じ Google Cloud 組織内の新しいフリートをマネージド Cloud Service Mesh にオンボーディングすると、ISTIOD コントロール プレーンの実装が表示されます。 これらのユーザーである場合、この動作をファイン チューニングするにはサポートにお問い合わせください。 既存の使用方法が変更なしで TRAFFIC_DIRECTOR 実装と互換性がないユーザーは、2024 年 9 月 8 日まで ISTIOD 実装を引き続き使用できました。(これらのユーザーにはサービスに関するお知らせが届いています)。
  • マネージド Cloud Service Mesh をプロビジョニングする際にフリートのいずれかのクラスタで Certificate Authority Service を使用する場合、ISTIOD コントロール プレーンの実装を受け取ります。
  • マネージド Cloud Service Mesh をプロビジョニングする際にフリートのいずれかの GKE on Google Cloud クラスタにクラスタ内 Cloud Service Mesh コントロール プレーンが含まれている場合、ISTIOD コントロール プレーンの実装を受け取ります。
  • マネージド Cloud Service Mesh をプロビジョニングする際にフリートのいずれかのクラスタで GKE Sandbox を使用する場合、ISTIOD コントロール プレーンの実装を受け取ります。

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

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

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

環境

機能 マネージド(TD) マネージド(istiod)
サポートされているいずれかのリージョンで、現在リリース チャンネルで利用可能な GKE バージョン
サポートされているリージョンのいずれかにある、現在リリース チャンネルで利用可能な GKE バージョンの GKE Autopilot クラスタ
Google Cloud 以外の環境(GKE Enterprise オンプレミス、他のパブリック クラウドの GKE Enterprise、Amazon EKS、Microsoft AKS、その他の Kubernetes クラスタ)

スケール

機能 マネージド(TD) マネージド(istiod)
クラスタあたり 1,000 個のサービスと 5,000 個のワークロード
メッシュあたり 50 個の Headless Service Port、Headless ServicePort あたり 36 個の Pod

プラットフォーム環境

機能 マネージド(TD) マネージド(istiod)
単一ネットワーク
マルチネットワーク
単一プロジェクト
共有 VPC を使用したマルチプロジェクト

マルチクラスタ デプロイ

機能 マネージド(TD) マネージド(istiod)
マルチプライマリ
プライマリリモート
宣言型 API を使用したマルチクラスタ エンドポイント検出
リモート シークレットを使用したマルチクラスタ エンドポイント検出

用語に関する注意事項

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

ベースイメージ

機能 マネージド(TD) マネージド(istiod)
Distroless プロキシ イメージ

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

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

セキュリティ

VPC Service Controls

機能 マネージド(TD) マネージド(istiod)
VPC Service Controls

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

機能 マネージド(TD) マネージド(istiod)
ワークロード証明書の管理
Ingress ゲートウェイと Egress ゲートウェイでの外部証明書の管理。

認証局(CA)のサポート

機能 マネージド(TD) マネージド(istiod)
Cloud Service Mesh 認証局
Certificate Authority Service
Istio CA
カスタム CA との統合

セキュリティ機能

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

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

認可ポリシー

機能 マネージド(TD) マネージド(istiod)
認証 v1beta1 ポリシー
カスタム認可ポリシー §

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

ピア認証

機能 マネージド(TD) マネージド(istiod)
自動 mTLS
mTLS PERMISSIVE モード
mTLS の STRICT モード * *
mTLS DISABLE モード

認証のリクエスト

機能 マネージド(TD) マネージド(istiod)
JWT 認証(注 1)
JWT Claim Based Routing
JWT Copy Claim to Headers

注:

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

Telemetry

指標

機能 マネージド(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 コントロール プレーンは、アクセスログトレースの構成に使用される Istio テレメトリー API のサブセットをサポートしています。TRAFFIC_DIRECTOR コントロール プレーンは、トレース サンプリング レートの構成をサポートしていません。

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

機能 マネージド(TD) マネージド(istiod)
トラフィック ログ
アクセスログ * *

トレース

機能 マネージド(TD) マネージド(istiod)
Cloud Trace * *
Jaeger トレース(顧客管理の Jaeger の使用を許可する) 互換
Zipkin トレース(顧客管理の Zipkin の使用を許可する) 互換

ネットワーキング

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

機能 マネージド(TD) マネージド(istiod)
CAP_NET_ADMINinit コンテナを使用する iptables の使用
Istio Container Network Interface(CNI)
ホワイトボックス サイドカー

init コンテナではなく、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 のルーティング ロジックに対応していない場合)、プロトコルはサポートされません。
  3. † IPv6 は、デュアルスタック ネットワーキングのプレビュー機能として使用できます。プロキシレス gRPC では、デュアルスタック機能は C++Python の gRPC 1.66.1 以降、または gRPC Node.js v1.12 でのみサポートされています。デュアルスタックをサポートしていないバージョンの gRPC でデュアルスタック機能を構成しようとすると、クライアントは Traffic Director から送信された最初のアドレスのみを使用します。

Envoy のデプロイ

機能 マネージド(TD) マネージド(istiod)
サイドカー
Ingress ゲートウェイ
サイドカーから直接の下り(外向き)
Egress ゲートウェイを使用した下り(外向き) * *

CRD サポート

機能 マネージド(TD) マネージド(istiod)
サイドカー リソース
サービス エントリ リソース
割合、フォールト インジェクション、パスマッチング、リダイレクト、再試行、書き換え、タイムアウト、再試行、ミラーリング、ヘッダー操作、CORS ルーティング ルール
EnvoyFilter API §
`WasmPlugin` API
Istio Operator

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

機能 マネージド(TD) マネージド(istiod)
サードパーティの外部ロードバランサ
Google Cloud 内部ロードバランサ * *

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

機能 マネージド(TD) マネージド(istiod)
サービス メッシュ クラウド ゲートウェイ

Kubernetes Gateway API

機能 マネージド(TD) マネージド(istiod)
Kubernetes Gateway API

負荷分散ポリシー

機能 マネージド(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 ドメイン ソケット アドレス
  • subjectAltNames フィールド

宛先ルール

機能 マネージド(TD) マネージド(istiod)
DestinationRule v1beta1

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

  • trafficPolicy.loadBalancer.localityLbSetting フィールド
  • trafficPolicy.tunnel フィールド
  • trafficPolicy.tls.credentialName フィールド
  • trafficPolicy.portLevelSettings[].tls.credentialName フィールド

また、TRAFFIC_DIRECTOR コントロール プレーンの実装では、サブセットを定義する宛先ルールが Kubernetes Service または ServiceEntry と同じ Namespace とクラスタにある必要があります。

Sidecar

機能 マネージド(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 クラスタは、次のいずれかのリージョンまたは、次のリージョン内の任意のゾーンに存在する必要があります。

リージョン ロケーション
africa-south1 ヨハネスブルグ
asia-east1 台湾
asia-east2 香港
asia-northeast1 東京(日本)
asia-northeast2 大阪(日本)
asia-northeast3 韓国
asia-south1 ムンバイ(インド)
asia-south2 デリー(インド)
asia-southeast1 Singapore
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 フランス
europe-west10 ベルリン(ドイツ)
europe-west12 トリノ(イタリア)
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 Oregon
us-west2 ロサンゼルス
us-west3 ソルトレイクシティ
us-west4 ラスベガス

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

機能 マネージド(TD) マネージド(istiod)
Google Cloud コンソールの Cloud Service Mesh ダッシュボード
Cloud Monitoring
Cloud Logging

ツール

機能 マネージド(TD) マネージド(istiod)
gcloud beta container fleet mesh debug ツール