Istioとは?
Istioは、既存の分散アプリケーションに透過的にレイヤー化されるオープンソースのサービスメッシュです。Istioの強力な機能は、サービスを保護、接続、監視するための統一されたより効率的な方法を提供します。Istioは、ロードバランシング、サービス間の認証、および監視への道を提供します。サービスのコード変更はほとんど、またはまったく必要ありません。それはあなたに以下を与えます
- 相互TLS暗号化、強力なIDベースの認証および承認を備えたクラスター内の安全なサービス間通信
- HTTP、gRPC、WebSocket、およびTCPトラフィックの自動ロードバランシング
- 豊富なルーティングルール、リトライ、フェイルオーバー、およびフォールトインジェクションによるトラフィック動作のきめ細かい制御
- アクセス制御、レート制限、およびクォータをサポートするプラグ可能なポリシーレイヤーおよび構成API
- クラスターのイングレスおよびイーグレスを含む、クラスター内のすべてのトラフィックの自動メトリクス、ログ、およびトレース
Istioは拡張性を考慮して設計されており、多様なデプロイメントニーズに対応できます。IstioのコントロールプレーンはKubernetes上で実行され、そのクラスターにデプロイされたアプリケーションをメッシュに追加したり、メッシュを他のクラスターに拡張したり、さらにはKubernetesの外部で実行されているVMやその他のエンドポイントを接続したりできます。
大規模なコントリビューター、パートナー、統合、およびディストリビューターのエコシステムが、さまざまなシナリオでIstioを拡張および活用しています。Istioを自分でインストールするか、多数のベンダーがIstioを統合し、管理する製品を提供しています。
仕組み
Istioは、ネットワークトラフィックをすべて傍受するプロキシを使用しており、設定した構成に基づいて、アプリケーションを認識した広範な機能を利用できます。
コントロールプレーンは、あなたが設定した構成とサービスに関するビューを取り込み、プロキシサーバーを動的にプログラムし、ルールや環境の変化に応じてそれらを更新します。
データプレーンは、サービス間の通信です。サービスメッシュがない場合、ネットワークは送信されているトラフィックを理解できず、トラフィックの種類や送信元/送信先に基づいて判断を下すことができません。
Istioは2つのデータプレーンモードをサポートしています。
- サイドカーモードは、クラスターで起動する各ポッド、またはVM上で実行中のサービスと一緒にEnvoyプロキシをデプロイします。
- アンビエントモードは、ノードごとのレイヤー4プロキシと、オプションでレイヤー7機能のための名前空間ごとのEnvoyプロキシを使用します。