Istioの概要
Istio(イスティオ)は、マイクロサービスをセキュアにマネージメントするため、Google、IBM、Lyftが開発し、2017年5月にオープンソース化したマイクロサービス管理フレームワークです。
マイクロサービスは従来のような、ある目的に対して1つのアーキテクチャでサービスを提供する形ではなく、1つの目的に対して、コンポーネントのような小さいソフトウェア群(サービス)を多数組み合わせ、1つのサービスとして提供するものを指します。
このマイクロサービスアーキテクチャを備えたアプリケーションの内部は、各サービス間をつなぐためのネットワークが網の目のように張り巡らされ、そこではさまざまなトラフィックが日々発生していきます。
このネットワークを安定的かつ効率的に、またセキュアに運用することがマイクロサービスの運用には欠かせない基盤となります。そのため、トラフィックのルーティングルールの設定、ロードバランシング、暗号化通信や認証サービス、ポリシーの設定や全体のモニタリングなどが必要であり、これらを統一的な仕組みで制御するネットワークサービス群(サービスメッシュ)を提供しているのがIstioです。
ちなみにIstioとはギリシャ語で「Sail」(帆)を意味する単語です。
オープンソース化した当初はIstio 0.1として提供され、プラットフォームはKubernetesをサポートしていました。2018年7月31日に正式版となるIstio1.0がリリースされ、サポートされるプラットフォームに新たにNomad&Consulが追加されていますが、Istioはプラットフォーム非依存を掲げているため「Mesos」など複数のプラットフォームでの動作も想定しています。
Istioの開発ペースは速く、2019年3月11日にはスケーラビリティなどのエンタープライズ向け機能を強化した Istio 1.1 がリリースされ、2019年6月18日にはリリース間隔と品質の向上を目的とした改善を行った Istio 1.2 がリリースされ、2019年9月12日にはユーザーエクスペリエンスの改善が行われた Istio 1.3 がリリースされています。
現在の最新バージョンは、Istio 1.6.7です。(2020年8月現在)
Istioの主な特徴
マルチ・プラットフォーム対応 | Kubernetes、Consul、Nomadをサポートしており、各環境におけるセットアップ手順を公開しています。また、今後Mesos、Cloud Foundry等のほかのオーケストレーションフレームワークへの展開も示唆しています。 |
---|---|
アプリケーション非依存 | Istioはコンテナ・オーケストレーション層の上位に位置しアプリケーション層の下位に位置するため、配置されるアプリケーションには依存せず、アプリケーション(サービス)間の通信を仲介することが可能です。 |
トラフィック管理 | 簡単なルール設定により、ルーティングやロードバランシング、タイムアウトや再試行等のサービス間通信に求められる基本機能を提供しています。 |
ブルー/グリーンデプロイメント | 前述のトラフィック管理を利用することで、サービスを停止することなく、新たなサービスをリリースすることが可能です。現行本番環境「ブルー」とは別に次期本番環境「グリーン」を用意し、あるタイミングでエンドユーザのアクセス先をグリーンに切り替えることで、継続的なサービスをリリースすることが可能です。 |
カナリアリリース | アクセスの90%を本番系システムへ、10%を開発中の時期システムへと経路を振り分けることで、次期システム稼動に問題が無いかを確認し、問題が無ければ全てのアクセスを次期システムへ切り替えるといったリリース手法をとることも可能です。 |
フォールトインジェクション | カオスエンジニアリングとも呼ばれる手法で、意図的にネットワーク遅延やエラーコードを送信することで、システムの耐障害性テストを容易に実施することが可能です。 |
サーキットブレーカー | 一定回数のマイクロサービスの呼び出しに失敗した場合に、プロキシサーバが即座にエラーを返し、システムリソースのブロックやシステム全体ダウンを防ぐことが可能です。 |
テレメトリー | 管理している複数のサービスからログやトレース、メトリクスなどを収集し、それらのデータを監視に供する基盤機能です。Istio自身がログ等を監視するのではなく、ログ可視化ツールや監視ツールなどの既存コンポーネントと連携させることで監視機能を実現します。 |
セキュリティ機能 | サービス間通信の認証・認可、および暗号化を管理することが可能です。 |
Istioのユースケース
Istioの恩恵を受けるのは以下のようなユースケースです。
- マイクロサービスを導入してサービスを展開したい
- 既に導入しているが、ネットワーク構成が煩雑と認識している
- シームレスにサービスの展開を行いたい
- サービス間通信をより堅牢なものにしたい
Istioの動作環境
Istioはプラットフォームに依存せず、クラウド、オンプレミス、Kubernetes、Mesosなどのさまざまな環境で動作するように設計されています。Istioでは以下をサポートしています。
- Kubernetesでのサービスデプロイ
- Consulに登録されたサービス
- 個々の仮想マシン上で実行されるサービス
Istioと同様の機能を提供する製品
Envoy、Linkerd、Hashicorp ConsulがIstioと同様にサービスメッシュを実現する機能を提供しています。
Istioのライセンス
Istioのライセンスは、 「Apacheライセンスバージョン2」(Apache License version2)に基づいて公開され、営利、非営利を問わず、 誰でも自由かつ無償で利用・改変・再配布できるようになっています。
Istioのダウンロード
https://github.com/istio/istio/releases
上記、URLよりダウンロードが可能です。