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
APIWasmPlugin
APIIstioOperator
APIKubernetes 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
のみをサポートします。マネージド Cloud Service Mesh を新規にインストールすると、その動作が有効になっていない他のクラスタがフリート内に存在しない限り、Envoy のみを使用して JWKS が取得されます。これは、
PILOT_JWT_ENABLE_REMOTE_JWKS=envoy
Istio オプションと同じです。VPCSC_GA_SUPPORTED 条件がないインストール(下記を参照)と比較して、ServiceEntry
とDestinationRule
の構成に追加の構成が必要になる場合があります。例については、requestauthn-with-se.yaml.tmpl
をご覧ください。現在のオペレーション モードがPILOT_JWT_ENABLE_REMOTE_JWKS=envoy
に相当するかどうかは、コントロール プレーンで VPC Service Controls がサポートされているかどうか(VPCSC_GA_SUPPORTED 条件が表示されているかどうか)で判断できます。マネージド データプレーンは、追加のサイドカー(Cloud Service Mesh サイドカーを除く)のないワークロードでのみサポートされます。
コントロール プレーンの違い
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 をプロビジョニングする際にフリートのいずれかの GKE on クラスタにクラスタ内 Cloud Service Mesh コントロール プレーンが含まれている場合、
ISTIOD
コントロール プレーンの実装を受け取ります。 Google Cloud - マネージド 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 |
証明書の配布とローテーションのメカニズム
認証局(CA)のサポート
機能 | マネージド(TD) | マネージド(istiod) |
---|---|---|
Cloud Service Mesh 認証局 | ||
Certificate Authority Service | ||
Istio CA | ||
カスタム CA との統合 |
セキュリティ機能
Cloud Service Mesh は、Istio のセキュリティ機能をサポートしているだけでなく、アプリケーションの保護に役立つ機能をさらに提供します。
認可ポリシー
機能 | マネージド(TD) | マネージド(istiod) |
---|---|---|
認証 v1beta1 ポリシー | † | |
CUSTOM 認可ポリシー | § |
† 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 |
注:
- サードパーティの JWT はデフォルトで有効になっています。
- RequestAuthentication API を定義するときに、JWKSURI に完全な FQDN/ホスト名を追加します。
- マネージド コントロール プレーンは、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) |
---|---|---|
Cloud Trace | * | * |
Jaeger トレース(顧客管理の Jaeger の使用を許可する) | 互換 | |
Zipkin トレース(顧客管理の Zipkin の使用を許可する) | 互換 |
ネットワーキング
トラフィックのインターセプトとリダイレクトのメカニズム
機能 | マネージド(TD) | マネージド(istiod) |
---|---|---|
CAP_NET_ADMIN と init コンテナを使用する iptables の使用 |
† | |
Istio Container Network Interface(CNI) | ||
ホワイトボックス サイドカー |
† init
コンテナではなく、Container Network Interface(CNI)を使用することを強くおすすめします。
プロトコル サポート
注:
- TCP はネットワーキング対応のプロトコルで、TCP 指標は収集されますが、報告されません。指標は、Google Cloud コンソール内の HTTP サービスにのみ表示されます。
- レイヤ 7 機能で WebSocket、MongoDB、Redis、Kafka、Cassandra、RabbitMQ、Cloud SQL のプロトコル向けに構成されているサービスはサポートされません。TCP バイト ストリームのサポートを使用して、プロトコルを機能させることができます。TCP バイト ストリームがプロトコルをサポートできない場合(たとえば、Kafka がプロトコル固有の応答でリダイレクト アドレスを送信し、このリダイレクトが Cloud Service Mesh のルーティング ロジックに対応していない場合)、プロトコルはサポートされません。
- † 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) |
---|---|---|
ラウンドロビン | ||
最小接続 | ||
ランダム | ||
パススルー | ||
コンシステント ハッシュ | ||
地域区分 | ||
GCPTrafficDistributionPolicy | ||
GCPBackendPolicy |
サービス エントリ
機能 | マネージド(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 と同じ名前空間とクラスタにある必要があります。
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 またはベースイメージ) | † | |
Kubernetes ネイティブ サイドカー(ENABLE_NATIVE_SIDECARS) |
† インジェクションには distroless イメージが使用されます。
リージョン
GKE クラスタは、次のいずれかのリージョンまたは、次のリージョン内の任意のゾーンに存在する必要があります。
リージョン | 場所 |
---|---|
africa-south1 |
ヨハネスブルグ |
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 |
フランス |
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 ツール |