アーキテクチャ
Istioサービスメッシュは、論理的には**データプレーン**と**コントロールプレーン**に分割されます。
**データプレーン**は、サイドカーとしてデプロイされたインテリジェントプロキシ(Envoy)のセットで構成されます。これらのプロキシは、マイクロサービス間のすべてのネットワーク通信を仲介および制御します。また、すべてのメッシュトラフィックに関するテレメトリーを収集して報告します。
**コントロールプレーン**は、トラフィックをルーティングするためにプロキシを管理および構成します。
次の図は、各プレーンを構成するさまざまなコンポーネントを示しています
コンポーネント
次のセクションでは、Istioの各コアコンポーネントの概要を簡単に説明します。
Envoy
Istioは、Envoyプロキシの拡張バージョンを使用します。Envoyは、サービスメッシュ内のすべてのサービスのすべてのインバウンドおよびアウトバウンドトラフィックを仲介するためにC++で開発された高性能プロキシです。Envoyプロキシは、データプレーンのトラフィックと対話する唯一のIstioコンポーネントです。
Envoyプロキシは、サービスへのサイドカーとしてデプロイされ、たとえば、Envoyの多くの組み込み機能でサービスを論理的に拡張します。
- 動的なサービス検出
- 負荷分散
- TLS終端
- HTTP/2およびgRPCプロキシ
- サーキットブレーカー
- ヘルスチェック
- %ベースのトラフィック分割による段階的なロールアウト
- フォールトインジェクション
- 豊富なメトリクス
このサイドカーデプロイメントにより、Istioはポリシー決定を適用し、メッシュ全体の動作に関する情報を提供するために監視システムに送信できる豊富なテレメトリーを抽出できます。
サイドカープロキシモデルを使用すると、再設計やコードの書き換えを必要とせずに、既存のデプロイメントにIstio機能を追加することもできます。
Envoyプロキシによって有効になるIstioの機能とタスクには、次のようなものがあります。
トラフィック制御機能:HTTP、gRPC、WebSocket、およびTCPトラフィックの豊富なルーティングルールを使用して、きめ細かいトラフィック制御を適用します。
ネットワーク回復力機能:再試行、フェイルオーバー、サーキットブレーカー、およびフォールトインジェクションを設定します。
セキュリティおよび認証機能:構成APIを通じて定義されたセキュリティポリシーを適用し、アクセス制御とレート制限を適用します。
メッシュトラフィックのカスタムポリシー適用とテレメトリ生成を可能にする、WebAssemblyベースのプラグイン可能な拡張モデル。
Istiod
Istiodは、サービスディスカバリ、構成、および証明書管理を提供します。
Istiodは、トラフィックの動作を制御する高レベルのルーティングルールをEnvoy固有の構成に変換し、実行時にサイドカーに伝播します。プラットフォーム固有のサービスディスカバリメカニズムを抽象化し、Envoy APIに準拠する任意のサイドカーが利用できる標準フォーマットに合成します。
Istioは、KubernetesやVMなどの複数の環境でのディスカバリをサポートできます。
Istioのトラフィック管理APIを使用して、IstiodにEnvoy構成を調整させ、サービスメッシュ内のトラフィックをより詳細に制御できます。
Istiodのセキュリティは、組み込みのIDおよびクレデンシャル管理により、強力なサービス間およびエンドユーザー認証を可能にします。 Istioを使用して、サービスメッシュ内の暗号化されていないトラフィックをアップグレードできます。 Istioを使用すると、オペレーターは比較的不安定なレイヤー3またはレイヤー4のネットワーク識別子ではなく、サービスIDに基づいてポリシーを適用できます。さらに、Istioの認証機能を使用して、サービスにアクセスできるユーザーを制御できます。
Istiodは認証局(CA)として機能し、データプレーンでの安全なmTLS通信を可能にする証明書を生成します。