【いすてぃお】

Istio とは?

最終更新:
💡 マイクロサービスの通信を「透明に」管理する

主にKubernetes上のサービス間通信を管理するオープンソースのサービスメッシュ。通信の暗号化、トラフィック制御、可観測性をアプリのコードを変えずに追加できる。

📌 このページのポイント
Istio サービスメッシュの構造 コントロールプレーン(Istiod) 設定管理 ・ 証明書発行 ・ サービスディスカバリ データプレーン サービス A Envoy Proxy サービス B Envoy Proxy サービス C Envoy Proxy トラフィック制御 mTLS暗号化 可観測性 認証・認可 サイドカーモードの例(アンビエントモードではノードごとのプロキシを使う)
Istioのイメージ
ひよこ ひよこ
なぜサービスメッシュが必要なの?
ペンギン先生 ペンギン先生
マイクロサービスが増えると、リトライ、タイムアウト、暗号化、認証みたいな通信まわりの処理を各サービスに作り込むのが大変になるんだ。Istioは通信をプロキシ経由にして、こうした処理をアプリのコードを変えずに設定で追加できるようにするんだよ。
ひよこ ひよこ
具体的に何ができるの?
ペンギン先生 ペンギン先生
①トラフィック制御(例えば新バージョンに25%だけ流すカナリアリリース、トラフィックのミラーリング)、②セキュリティ(mTLSによる暗号化とサービスの身元にもとづく認証)、③可観測性(メトリクス・ログ・トレースの自動収集)が代表的だよ。
ひよこ ひよこ
入れるだけで全部の通信が暗号化されるの?
ペンギン先生 ペンギン先生
サイドカーモードでは、既定のPERMISSIVEだとmTLSと平文の両方を受け付けるよ。移行中にプロキシのないサービスともつながるようにするためだね。mTLSを必須にしたいならPeerAuthenticationでSTRICTを設定する。一方、アンビエントモードではノード上のztunnelが通信を仲介し、プロキシ間はmTLSで暗号化される。こちらのSTRICTは、メッシュを迂回する接続を防ぐためにも使うんだ。モードごとの条件を分けて確認しようね。
ひよこ ひよこ
導入は難しい?
ペンギン先生 ペンギン先生
VirtualService、DestinationRule、Gatewayといった独自のリソースを理解する必要があって、学習コストはかかるよ。サイドカーモードは各Podにプロキシが増えるぶんCPU・メモリも必要になる。公式ドキュメントは、この負担を減らす選択肢として、ノードごとのプロキシを使うアンビエントモードも用意しているよ。
ひよこ ひよこ
代替ツールはある?
ペンギン先生 ペンギン先生
例えばLinkerdは、Rust製の専用プロキシを使うサービスメッシュで、CNCFの卒業プロジェクトでもあるよ。必要な機能、運用体制、対応する環境を比べて選ぼうね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Istio」って出てきたら「Kubernetesなどのサービス間通信を、コードを変えずに管理するサービスメッシュ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Istio」 = 帆(ギリシャ語)
💬 公式FAQによると、ギリシャ語で「帆」という意味だよ。Kubernetes(ギリシャ語で操舵手)と同じく船にちなんだ名前だね

参考資料

← 用語集にもどる