【いすてぃお】

Istio とは?

💡 マイクロサービスの通信を「透明に」管理する
📌 このページのポイント
Istio サービスメッシュの構造 コントロールプレーン(Istiod) 設定管理 ・ 証明書発行 ・ サービスディスカバリ データプレーン サービス A Envoy Proxy サービス B Envoy Proxy サービス C Envoy Proxy トラフィック制御 mTLS暗号化 可観測性 認証・認可 サイドカーパターンで各サービスにプロキシを配置
Istioのイメージ
ひよこ ひよこ

なぜサービスメッシュが必要なの?

ペンギン先生 ペンギン先生

マイクロサービスが10、50、100と増えると、サービス間の通信管理が爆発的に複雑になる。リトライタイムアウトサーキットブレーカー、認証を各サービスに実装するのは現実的じゃない。Istioなら各Podサイドカープロキシを注入して、アプリコードを変更せずにこれらを一括管理できるんだよ

ひよこ ひよこ

具体的に何ができるの?

ペンギン先生 ペンギン先生

トラフィック制御(カナリアリリースで新バージョンに10%だけ流す、A/Bテスト)、②セキュリティmTLSで全通信を暗号化、サービス間のアクセス制御)、③可観測性(Jaeger分散トレーシング、Kialiでサービスマップ表示、Prometheusメトリクス送信)。コード変更なしで全部できるのが強みだよ

ひよこ ひよこ

導入は難しい?

ペンギン先生 ペンギン先生

正直、学習コストは高い。VirtualService、DestinationRule、Gateway等の独自リソース定義を理解する必要がある。リソース消費も増えるし、デバッグが複雑になる。小規模なうちは不要で、マイクロサービスが20以上になった頃から検討するのが良い。まずはトラフィック制御だけ使うスモールスタートがおすすめだよ

ひよこ ひよこ

代替ツールはある?

ペンギン先生 ペンギン先生

Linkerd(軽量でシンプル、Rust製のプロキシ)、Cilium Service Mesh(eBPFベースでサイドカー不要)、Consul Connect(HashiCorp製、マルチプラットフォーム対応)がある。Linkerdは学習コストが低くリソース消費も少ない。Ciliumはサイドカーレスで高性能。プロジェクトの規模と要件で選ぼうね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Istio」って出てきたら「Kubernetesのサービス間通信を管理するメッシュ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Istio」 = 帆(ギリシャ語)
💬 ギリシャ語で「帆」の意味。Kubernetesが「操舵手」ならIstioは「帆」で航海を助けるよ
← 用語集にもどる