Istio
https://gyazo.com/0c831f5d57810d395ffb33146c2893b4
Kubernetes 上で動作するService Mesh
website
github
#wip
EnvoyがData Planeで、Istioはそれらを取りまとめるControl Planeという感じらしいmrsekut.icon
https://istio.io/latest/docs/setup/getting-started/
gpt-4.icon
✅ Istio の基本構成
Istio は以下のコンポーネントで構成されています:
Envoy
各 Pod に sidecar として自動注入されるプロキシ(通信制御の中心)
istiod
Istio のコントロールプレーン
Envoy に設定を配信し、サービス検出や認証設定などを担う
Gateway (istio)
外部トラフィックの入口(L7 Ingress)を提供するカスタムリソース
VirtualService / DestinationRule (istio)
トラフィックのルーティングポリシーを定義する CRD(Custom Resource)
✅ Istio が提供する主な機能
1. トラフィック管理
VirtualService/DestinationRule により、A/Bテスト や カナリアリリース、フェイルオーバー などが実現可能。
例: 特定の割合で新しいバージョンにリクエストを流す
2. セキュリティ
mTLS によるサービス間通信の暗号化(デフォルトで自動有効化可能)
サービス間の 認証・認可(RBAC) をポリシーベースで管理
3. 可観測性(Observability)
Prometheus/Grafana や Jaeger/Zipkin などと連携して、トラフィックやレイテンシ、エラー率などを 詳細に可視化
Istio が通信のメタデータを自動収集
4. ポリシーと制御
リトライ、タイムアウト、サーキットブレーカーなどを YAML 設定のみで構成可能
外部通信制限や、認可ポリシーも柔軟に設定可能
✅ Istio の通信の流れ(簡易図)
code:text
Client
|
v
Envoy Sidecar <--> Envoy Sidecar <--> Service B
^ ^
mTLS mTLS
各サービスの Pod に自動的に注入される Envoy Sidecar が、トラフィックを受け取り、制御し、通信情報を収集します。
導入のポイント
Istio は powerful だが 導入・運用コストがそれなりに高い
小規模なシステムではオーバーヘッドになりがち
最近では Ambient Mesh(sidecar 不要なモード)も登場し、軽量化が進められている
Istio は Kubernetes 上のサービスメッシュを構築するためのオープンソースのプロジェクトで、多くの独自用語が登場します。以下に代表的な用語を列挙し、それぞれ簡潔に解説します。
✅ 基本構成要素
table:_
用語 解説
Service Mesh マイクロサービス間の通信を制御・観測・保護するインフラ層。Istio が提供する。
Control Plane Istio の中核コンポーネント群。設定の配信やポリシー管理、テレメトリ収集を担当。
Data Plane 各 Pod にサイドカーとして動作する Proxy(Envoy)群。実際の通信の仲介・制御を行う。
✅ コンポーネント
table:_
Envoy Istio がサイドカーとして各 Pod に挿入する高性能な L7 Proxy。通信のルーティング・TLS 終端などを担当。
istiod Istio の主要なコントロールプレーンコンポーネント。設定配信、証明書管理、サービスディスカバリなどを行う。以前の Mixer, Pilot, Citadel, Galley の統合後の形
✅ カスタムリソース定義(CRD)
VirtualService
特定のホストに対するルーティングルールを定義。リクエストの振り分けやリトライ、フェイルオーバーなどが可能。
DestinationRule
VirtualService で定義された宛先に対してのポリシー(ロードバランシング方式、TLS 設定など)を定義。
Gateway (istio)
外部トラフィック(IngressやEgress)を受け入れるエントリーポイントを定義。Kubernetes の Ingress とは異なる。
ServiceEntry (istio)
Istio メッシュの外部サービスを仮想的に Istio 内で認識させるためのリソース。外部へのアクセス制御に使う。
Sidecar(CRD)
通信の可視範囲(スコープ)を細かく制御するためのリソース。どのサービスに通信できるかなどを指定。
PeerAuthentication
mTLS を有効にするためのリソース。名前の通り、通信相手の認証方法を設定。
AuthorizationPolicy
RBAC に基づいた通信制御ポリシー。どのサービス/ユーザーがどこにアクセス可能かを定義。
EnvoyFilter
より細かなカスタマイズをするための低レベルのフィルター挿入リソース。上級者向け。
✅ ネットワーク関連
table:_
用語 解説
mTLS (mutual TLS) 通信の両端(クライアントとサーバ)が相互に証明書を使って認証する TLS の形式。Istio では通信暗号化と認証のためにデフォルトで使用可能。
Ingress Gateway 外部からの HTTP/HTTPS トラフィックをメッシュに入れるための入口。
Egress Gateway メッシュから外部(インターネットなど)への通信を制御・監視する出口。
Workload Entry Istio メッシュ外のワークロードを仮想的にメッシュ内のワークロードとして登録するためのリソース。VM との連携などで使用。
✅ 可観測性とテレメトリ
table:_
用語 解説
Telemetry Istio によって収集されるトラフィックのメトリクス、ログ、トレース情報。
Tracing 分散トレーシング情報(例: Jaeger, Zipkin)を収集・表示する仕組み。
Metrics Prometheus などで取得される HTTP レスポンスコード、レイテンシなどの統計情報。
Logging Envoy Proxy によるアクセスログなど。
✅ その他の関連用語
table:_
用語 解説
Istio Injection Pod に自動的に Envoy サイドカーを注入する仕組み。Namespace 単位や Pod 単位で有効化可能。
Pilot 旧コンポーネント名。istiod に統合される前のルーティング制御担当コンポーネント。
Mixer 旧コンポーネント名。ポリシー制御・テレメトリ収集などを担当していたが、現在は廃止済み。
https://knowledge.sakura.ad.jp/20489/
https://speakerdeck.com/nutslove/istioru-men?slide=12
https://engineering.mercari.com/blog/entry/20220210-how-istio-solved-our-problems/
https://techblog.zozo.com/entry/zozotown-istio-production-ready
https://qiita.com/Ladicle/items/979d59ef0303425752c8