Sidecar または Ambient?

Istio サービスメッシュは、論理的にデータプレーンとコントロールプレーンに分割されます。

データプレーンは、マイクロサービス間のすべてのネットワーク通信を仲介および制御するプロキシのセットです。また、メッシュトラフィックに関するテレメトリを収集して報告します。

コントロールプレーンは、データプレーン内のプロキシを管理および構成します。

Istio は、主に2つのデータプレーンモードをサポートしています。

  • サイドカーモード。これは、クラスターで起動する各ポッドと一緒に、またはVM上で実行されているサービスと一緒に、Envoyプロキシをデプロイします。
  • アンビエントモード。これは、ノードごとのレイヤー4プロキシと、オプションでレイヤー7機能用の名前空間ごとのEnvoyプロキシを使用します。

特定の名前空間またはワークロードを各モードに選択できます。

Sidecarモード

Istioは、2017年の最初のリリースからサイドカーパターンに基づいて構築されています。サイドカーモードはよく理解されており、徹底的に実戦テストされていますが、リソースコストと運用上のオーバーヘッドが伴います。

  • デプロイする各アプリケーションには、サイドカーとしてインジェクションされたEnvoyプロキシがあります。
  • すべてのプロキシは、レイヤー4とレイヤー7の両方を処理できます。

Ambientモード

2022年に開始されたアンビエントモードは、サイドカーモードのユーザーから報告された欠点に対処するために構築されました。Istio 1.22の時点で、シングルクラスターのユースケースに対応できる本番環境に対応しています。

  • すべてのトラフィックは、レイヤー4のみのノードプロキシを介してプロキシされます。
  • アプリケーションは、レイヤー7機能を取得するためにEnvoyプロキシを介したルーティングを選択できます。

SidecarとAmbientの選択

ユーザーは、多くの場合、最初のステップとしてゼロトラストセキュリティ体制を有効にするためにメッシュをデプロイし、必要に応じてL7機能を選択的に有効にします。アンビエントメッシュを使用すると、ユーザーは不要な場合にL7処理のコストを完全に回避できます。

Sidecarアンビエント
トラフィック管理Istioの全機能セットIstioの全機能セット(ウェイポイントの使用が必要)
セキュリティIstioの全機能セットIstioの全機能セット:アンビエントモードでの暗号化とL4認証。L7認証にはウェイポイントが必要です。
可観測性Istioの全機能セットIstioの全機能セット:アンビエントモードでのL4テレメトリ。ウェイポイント使用時のL7可観測性
拡張性Istioの全機能セットIstioの全機能セット(ウェイポイントの使用が必要)α
メッシュへのワークロードの追加名前空間にラベルを付け、すべてのポッドを再起動してサイドカーを追加します名前空間にラベルを付ける - ポッドの再起動は不要
段階的なデプロイバイナリ:サイドカーはインジェクションされるか、されないかのどちらかです段階的:L4は常にオン、L7は構成によって追加可能
ライフサイクル管理アプリケーション開発者が管理するプロキシプラットフォーム管理者
リソースの利用無駄が多い。個々のポッドの最悪のケースの使用量に対してCPUおよびメモリリソースをプロビジョニングする必要がありますウェイポイントプロキシは、他のKubernetesデプロイメントのように自動スケーリングできます。
レプリカ数の多いワークロードは、それぞれが独自のサイドカーを持つのではなく、1つのウェイポイントを使用できます。
平均リソースコスト
平均レイテンシ(p90/p99)0.63ms~0.88msアンビエント:0.16ms~0.20ms
ウェイポイント:0.40ms~0.50ms
L7処理ステップ2(送信元と宛先のサイドカー)1(宛先ウェイポイント)
大規模な構成構成を減らすためには、各サイドカーのスコープを構成する必要がありますカスタム構成なしで動作します
「サーバーファースト」プロトコルをサポート構成が必要ですはい
Kubernetesジョブのサポートサイドカーの寿命が長いため複雑透過的
セキュリティモデル最も強力:各ワークロードに独自のキーがある強力:各ノードエージェントには、そのノード上のワークロードのキーのみがある
侵害されたアプリケーションポッド
メッシュキーへのアクセスを提供します
はいいいえ
サポートマルチクラスターを含む安定版ベータ版、シングルクラスター
サポートされているプラットフォームKubernetes(任意のCNI)
仮想マシン
Kubernetes(任意のCNI)

レイヤー4対レイヤー7機能

レイヤー7でプロトコルを処理するためのオーバーヘッドは、レイヤー4でネットワークパケットを処理するよりも大幅に高くなります。特定のサービスの場合、要件がL4で満たされるのであれば、サービスメッシュを大幅に低いコストで提供できます。

セキュリティ

L4L7
暗号化ポッド間のすべてのトラフィックは、mTLSを使用して暗号化されます。N/A—IstioのサービスIDはTLSに基づいています。
サービス間認証SPIFFE(mTLS証明書経由)。Istioは、ポッドのサービスアカウントIDをエンコードする有効期間の短いX.509証明書を発行します。N/A—IstioのサービスIDはTLSに基づいています。
サービス間承認ネットワークベースの承認と、IDベースのポリシー(例)
  • Aは「10.2.0.0/16」からのみインバウンドコールを受け入れることができます。
  • AはBを呼び出すことができます。
完全なポリシー(例)
  • Aは、READスコープを含む有効なエンドユーザー資格情報を持つ場合にのみ、Bの/fooに対してGETを実行できます。
エンドユーザー認証N/A—ユーザーごとの設定を適用することはできません。JWTのローカル認証、OAuthおよびOIDCフローを介したリモート認証のサポート。
エンドユーザー承認N/A—上記を参照してください。サービス間ポリシーは、特定のスコープ、発行者、プリンシパル、オーディエンスなどを持つエンドユーザー資格情報を要求するように拡張できます。
外部承認を使用して、完全なユーザーからリソースへのアクセスを実装できます。これにより、外部サービス(例:OPA)からの決定を含むリクエストごとのポリシーが可能になります。

可観測性

L4L7
ロギング基本的なネットワーク情報:ネットワーク5タプル、送受信されたバイト数など。Envoyドキュメントを参照基本的なネットワーク情報に加えて、完全なリクエストメタデータロギング
トレース現在はまだありません。最終的にはHBONEで可能です。Envoyは分散トレースに参加します。トレースに関するIstioの概要を参照
メトリクスTCPのみ(送受信されたバイト数、パケット数など)。L7 REDメトリクス:リクエストのレート、エラーのレート、リクエスト期間(レイテンシ)。

トラフィック管理

L4L7
ロードバランシング接続レベルのみ。TCPトラフィックシフトタスクを参照リクエストごと。これにより、カナリアデプロイメント、gRPCトラフィックなどが可能になります。HTTPトラフィックシフトタスクを参照
サーキットブレーキングTCPのみ.TCPに加えて、HTTP設定
外れ値の検出接続の確立/失敗時。リクエストの成功/失敗時。
レート制限接続確立時のL4接続データのみのレート制限。グローバルおよびローカルのレート制限オプション付き。リクエストごとのL7リクエストメタデータのレート制限
タイムアウト接続確立のみ(接続キープアライブはサーキットブレーキング設定で構成されます)。リクエストごと。
リトライ接続確立のリトライリクエスト失敗ごとのリトライ。
障害注入N/A—TCP接続では障害注入を構成できません。完全なアプリケーションおよび接続レベルの障害(タイムアウト、遅延、特定の応答コード)。
トラフィックミラーリングN/A—HTTPのみ複数のバックエンドへのリクエストの割合ベースのミラーリング.

サポートされていない機能

次の機能はサイドカーモードでは使用できますが、アンビエントモードではまだ実装されていません

  • サイドカーからウェイポイントへの相互運用性
  • マルチクラスターインストール
  • マルチネットワークサポート
  • VMサポート
この情報は役に立ちましたか?
改善のためのご提案はありますか?

フィードバックありがとうございます!