Istio情報
Istioとは
Istio(イスティオ)は、マイクロサービスをセキュアに管理するためのマイクロサービス管理フレームワークです。
Istioは、Google、IBM、Lyftが開発し、2017年5月にオープンソース化され、2022年4月にはCNCF(Cloud Native Computing Foundation)プロジェクトとなっています。
マイクロサービスは従来のような、ある目的に対して1つのアーキテクチャでサービスを提供する形ではなく、1つの目的に対して、コンポーネントのような小さいソフトウェア群(サービス)を多数組み合わせ、1つのサービスとして提供するものを指します。
このマイクロサービスアーキテクチャを備えたアプリケーションの内部は、各サービス間をつなぐためのネットワークが網の目のように張り巡らされ、そこではさまざまなトラフィックが日々発生していきます。
このネットワークを安定的かつ効率的に、またセキュアに運用することがマイクロサービスの運用には欠かせない基盤となります。そのため、トラフィックのルーティングルールの設定、ロードバランシング、暗号化通信や認証サービス、ポリシーの設定や全体のモニタリングなどが必要であり、これらを統一的な仕組みで制御するネットワークサービス群(サービスメッシュ)を提供しているのがIstioです。
ちなみにIstioとはギリシャ語で「Sail」(帆)を意味する単語です。
Istioはプラットフォーム非依存を掲げており、Kubernetes が動作している環境であれば利用可能です。
主な特徴
マルチ・プラットフォーム対応 |
Kubernetes、Consul、Nomadをサポートしており、各環境におけるセットアップ手順を公開しています。また、今後Mesos、Cloud Foundry等のほかのオーケストレーションフレームワークへの展開も検討されています(一部開発が開始されています)。 |
---|---|
アプリケーション非依存 |
Istioはコンテナ・オーケストレーション層の上位に位置しアプリケーション層の下位に位置するため、配置されるアプリケーションには依存せず、アプリケーション(サービス)間の通信を仲介することが可能です。 |
トラフィック管理 |
簡単なルール設定により、ルーティングやロードバランシング、タイムアウトや再試行等のサービス間通信に求められる基本機能を提供しています。 |
ブルー/グリーンデプロイメント |
前述のトラフィック管理を利用することで、サービスを停止することなく、新たなサービスをリリースすることが可能です。現行本番環境「ブルー」とは別に次期本番環境「グリーン」を用意し、あるタイミングでエンドユーザのアクセス先をグリーンに切り替えることで、継続的なサービスをリリースすることが可能です。 |
カナリアリリース |
アクセスの90%を本番系システムへ、10%を開発中の時期システムへと経路を振り分けることで、次期システム稼動に問題が無いかを確認し、問題が無ければ全てのアクセスを次期システムへ切り替えるといったリリース手法をとることも可能です。 |
フォールトインジェクション |
カオスエンジニアリングとも呼ばれる手法で、意図的にネットワーク遅延やエラーコードを送信することで、システムの耐障害性テストを容易に実施することが可能です。 |
サーキットブレーカー |
一定回数のマイクロサービスの呼び出しに失敗した場合に、プロキシサーバが即座にエラーを返し、システムリソースのブロックやシステム全体ダウンを防ぐことが可能です。 |
テレメトリー |
管理している複数のサービスからログやトレース、メトリクスなどを収集し、それらのデータを監視に提供する基盤機能です。Istio自身がログ等を監視するのではなく、ログ可視化ツールや監視ツールなどの既存コンポーネントと連携させることで監視機能を実現します。 |
セキュリティ機能 |
サービス間通信の認証・認可、および暗号化を管理することが可能です。 |
Istioは、下記のようなアプリケーションと組み合わせることで機能を強化することができます。
cert-manager |
cert-manager は証明書管理を自動化するツールです。TLS証明書を管理できるようになります。 |
---|---|
Grafana |
Grafana はデータ可視化ツールです。Istioのダッシュボードを構成し、サービスメッシュ内のアプリケーションの状態を可視化できます。 |
Jaeger |
Jaegerは分散トレーシングシステムです。分散システムのトランザクションの監視、及びトラブルシューティングが出来ます。 |
Kiali |
kialiはサービスメッシュ構成および検証機能を備えたIstioの可観測性コンソールです。Grafana総合による高度なクエリ、Jaeger統合による分散トレースも提供出来ます。 |
Prometheus |
Prometheusはオープンソースの監視システムおよび時系列データベースです。Istioとサービスメッシュ内のアプリケーションの状態を追跡するメトリックを記録でき、GrafanaやKialiなどのツールを使用してメトリックを視覚化できます。 |
SPIRE |
SPIREは、SPIFFE仕様の実装です。さまざまなワークロード認証オプションが可能になります。 |
Zipkin |
Zipkinは、分散トレースシステムです。サービスアーキテクチャの遅延の問題をトラブルシューティングするために必要なタイミングデータを収集するのに役立ちます。 |
同様の機能を提供する商用製品
Linkerd、HashiCorp ConsulがIstioと同様にサービスメッシュを実現する機能を提供しています。また、2019年にはMicrosoft の主導によりサービスメッシュの標準仕様であるService Mesh Interface(SMI)が発表され、Istio 向けに smi-adapter-istio も提供されています。
ユースケース
Istioの恩恵を受けるのは以下のようなユースケースです。
- マイクロサービスを導入してサービスを展開したい
- 既に導入しているが、ネットワーク構成が煩雑と認識している
- シームレスにサービスの展開を行いたい
- サービス間通信をより堅牢なものにしたい
動作環境
Istio が動作するKubernetesのバージョンは下記です。
バージョン |
リリース日 |
End of Life |
サポートするKubernetes バージョン |
テスト済Kubernetes バージョン(非サポート) |
---|---|---|---|---|
1.14 |
2022年5月24日 |
~2023年1月 (予定) |
1.21, 1.22, 1.23, 1.24 |
1.16, 1.17, 1.18, 1.19, 1.20 |
1.13 |
2022年2月11日 |
~2022年10月(予定) |
1.20, 1.21, 1.22, 1.23 |
1.16, 1.17, 1.18, 1.19 |
1.12 |
2021年11月18日 |
2022年6月12日 |
1.19, 1.20, 1.21, 1.22 |
1.16, 1.17, 1.18 |
1.11 |
2021年8月12日 |
2022年3月25日 |
1.18, 1.19, 1.20, 1.21, 1.22 |
1.16, 1.17 |
1.1 |
2021年5月18日 |
2022年1月7日 |
1.18, 1.19, 1.20, 1.21 |
1.16, 1.17, 1.22 |
1.9 |
2021年2月9日 |
2021年10月8日 |
1.17, 1.18, 1.19, 1.20 |
1.15, 1.16 |
1.8 |
2020年11月10日 |
2021年5月12日 |
1.16, 1.17, 1.18, 1.19 |
1.15 |
1.7 |
2020年8月21日 |
2021年2月25日 |
1.16, 1.17, 1.18 |
1.15 |
Istioのライセンス
Istioのライセンスは、 「Apacheライセンスバージョン2」(Apache License version2)に基づいて公開され、営利、非営利を問わず、 誰でも自由かつ無償で利用・改変・再配布できるようになっています。
製品ダウンロード
上記URLよりダウンロードが可能です。
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。
あわせてご確認ください。