Istio
技術

Istio

マイクロサービスの接続、保護、可観測性のためのサービスメッシュ

Istio は、アプリケーションコードを変更せずに、マイクロサービスのネットワークにトラフィック管理、セキュリティ、可観測性を追加するサービスメッシュです。すべてのワークロードの隣にプロキシ(Envoy)を透過的に注入し、そのプロキシ群を中央のコントロールプレーンから管理することで動作します。

仕組み

Istio のコントロールプレーンである istiod は、各アプリケーションコンテナの隣に注入された Envoy サイドカープロキシを設定します。サービス間のすべてのトラフィックはこれらのサイドカーを通過するため、Istio は相互 TLS の適用、リトライとタイムアウトの適用、カナリアリリースのためのバージョン間でのトラフィック分割、一貫したメトリクスとトレースの収集を、すべて設定だけで、アプリケーションレベルの変更なしに行えます。

主要な概念

  • サイドカープロキシ — 各ワークロードの Pod の隣に注入される Envoy インスタンスで、そのすべてのインバウンドとアウトバウンドのトラフィックを傍受して管理します。
  • VirtualService — サービスへのトラフィックのルーティングルールを定義します。バージョンの分割、リトライ、タイムアウト、フォールトインジェクションなどです。
  • DestinationRule — ルーティング後に適用されるポリシーを定義します。特定のサービスのサブセットに対する、ロードバランシング戦略や相互 TLS の設定などです。
  • Gateway — メッシュの端にあるロードバランサーを、ingress または egress トラフィック用に設定します。

チームが Istio を採用する理由

  • コード変更なしの mTLS。 サービス間のトラフィックを、設定だけでメッシュ全体にわたって暗号化し、認証できます。
  • きめ細かなトラフィック制御。 カナリアリリース、A/B テスト、フォールトインジェクションは、アプリケーションのロジックではなく、宣言的なルーティングルールです。
  • 一貫した可観測性。 自分で計装していないサービスも含め、すべてのサービスが、一貫したメトリクス、ログ、分散トレースを得ます。
  • ポリシーの適用。 認可、レート制限、リトライが、メッシュ内のすべてのサービスで一貫して適用されます。

はじめに

Istio をクラスターにインストールし、メッシュに含めたい namespace にサイドカーの自動注入のラベルを付け、ワークロードを通常どおりにデプロイします。プロキシは自動的にアタッチされます。以降のガイドでは、メッシュの有効化、トラフィックの分割、サービス間通信の保護を説明します。