こんにちは、JJ Asgharです。IBM Cloudのデベロッパー・アドボケイトです。 今日はIstioについてお話したいと思います。Istioはオープン・プラットフォームの独立したサービス・メッシュです。
トラフィック管理、ポリシー適用、テレメトリー収集を行います。Kubernetes、Nomad、Consul上で実行されます。今回はKubernetesに焦点を当てますが、ほとんどの内容がNomadやConsulにも当てはまります。
ビデオをお楽しみください。
サービス・メッシュとは?
まず、サービス・メッシュと呼ばれるものについてお話しましょう。簡単に言うと、サービス・メッシュとは、マイクロサービスのためのネットワークです。 サービスAとサービスBが対話できるようにし、その対話に関連する制御を行います。
サービス・メッシュが大きくなるほど複雑になってくるため、AとBのような異なるサービス同士の対話を制御する手段が必要になります。そこでIstioの登場です。
Istioの機能
ではIstioの機能についてお話しましょう。まず、ロード・バランシング機能です。HTTP、TCPや任意のWebSocketのトラフィックで、サービスAとサービスBの間の対話や外部からの情報の取り込みを制御できます。
次に、きめ細かい制御機能です。ルール、再試行、フェイルオーバー、さらには故障注入も実行できます。特定の状況で、サービスBではなくサービスAだけと対話できるというような設定も行えます。
さらに、アクセス制御機能です。クラウドネイティブ・アプリケーションのポリシーが適切で適用可能であることを確認できます。
最後に一番重要なのが可視性です。ロギングやグラフですべてが機能しているかどうか確認できます。これらはすべて無料でIstioと併せてインストールされます。自動メトリックで状態が希望通りかどうか確認できます。
Istioのコンポーネント
Pilot
ではIstioのコンポーネントを見てみましょう。まずPilotですが、Istioのサービス・メッシュを実際に動かすものです。ABテスト、カナリア・デプロイメントの管理、タイムアウトなど、すべてがうまく実行されているか確認する機能を持っています。つまり、Istioのドライバーです。
Citadel
ではIstioアーキテクチャーの次のコンポーネントを見てみましょう。Citadelと呼ばれるものです。サービス・メッシュのセキュリティー面を司ります。CAとしての機能が内蔵されています。これにより必要に応じてサービスAとサービスBが対話できるようになります。サービス・メッシュとCitadelを通して暗号化されていないトラフィックをアップグレードし暗号化して通信できるようにします。
1つだったKubernetesクラスターを複数使うようになり、サービス・メッシュを全体に拡張して様々な情報をインターネットで送信するようになると保護が必要になります。この保護を行うのがCitadelです。
Mixer
そして最後にMixerです。すべてのサイドカー、Istioで使われるすべての通信がここに集まります。すべてのテレメトリーを収集し、可視性での説明時に触れたグラフ表示ができるように、Pilotに送ります。
またMixerはプラグ可能なので、Istioの基本機能以外にも追加が可能です。実際に、Mixerを活用して自社アプリケーションを使えるようにしているサード・パーティーもあります。
これがIstioの基本です。 Pilot、Mixer、そしてCitadelさらに詳しい内容についてはIBM Cloud BlogやDocsをご覧ください。 JJでした。またお会いしましょう。最後までご覧いただきありがとうございました。
JJ Asghar Developer Advocate