Slide 1

Slide 1 text

Istio 2018/02/09 Iino Masaki

Slide 2

Slide 2 text

Istio IstioはK8sと同様にCNCFがホストする OSSであり、マイクロサービスにおける複 雑なネットワークで発生する課題を解決 する 主な機能 ● ロードバランシング ● 動的なルーティング ● リトライ制御 ● サーキットブレイカー ● サービス間認証 ● モニタリング... https://istio.io/

Slide 3

Slide 3 text

Traffic Management Istioを使うとこんなことができる 図の上部①と② 1. Pod1~3へのラウンドロビン 2. Trafficの95%をPod1~3のラウン ドロビンにし、5%をPod4へ 図の下部①と② 1. Pod1~3へのラウンドロビン 2. UAがAndroidであればPod1へ、 iPhoneであればPod4へ、その他 はラウンドロビンにする

Slide 4

Slide 4 text

Acrchitecture

Slide 5

Slide 5 text

Envoy サービスメッシュのイン/アウトバウントの 全てのトラフィックを管理するプロキシ サーバ。各サービスにサイドカーとしてデ プロイします。 引用:https://istio.io/docs/concepts/what-is-istio/overview.html

Slide 6

Slide 6 text

Mixer Envoyから各サービスのデータを収集し、 サービスメッシュ全体のアクセス制御をや ポリシーをコントロールするプラットフォー ムに依存しないコンポーネントです。プラ グインモデルを取っており、柔軟なカスタ マイズが可能です。 引用:https://istio.io/docs/concepts/what-is-istio/overview.html

Slide 7

Slide 7 text

Pilot サービスディスカバリやトラフィック管理を 担当。Kubernetesの場合、サービスディ スカバリはWatch APIによるEnvoyのス テータス変更を検知することで実現してい ます。 引用:https://istio.io/docs/concepts/what-is-istio/overview.html

Slide 8

Slide 8 text

Istio-Auth KubernetesのService Accountを利用し たユーザ認証や、サービス間のTLS相互 認証を行います。この認証を利用するこ とで、ポリシーベースでサービスメッシュ を管理することができます。また、将来的 には属性・ロールベースでのアクセス制 御などが追加される予定です。 引用:https://istio.io/docs/concepts/what-is-istio/overview.html

Slide 9

Slide 9 text

Demo

Slide 10

Slide 10 text

Bookinfo ● Istio公式サンプル ○ https://istio.io/docs/guides/bookinfo.html ○ 4つのPodで構成されたマイクロサービスなアプリケーション ○ Ver0.5を使用:https://github.com/istio/istio/releases/tag/0.5.0 ● プラットフォームにGKEを使用 ○ https://cloud.google.com/kubernetes-engine/docs/tutorials/istio-on-g ke

Slide 11

Slide 11 text

Bookinfo ● オンラインブックストアを模したものである ● 本に関する情報を掲載 ○ 書籍説明、ISBN・ページ数、レビュー

Slide 12

Slide 12 text

Bookinfo

Slide 13

Slide 13 text

Bookinfo without Istio ● Product Page ○ DetailsとReviewsを呼び 出し商品情報に埋め込む ● Details ○ 書籍情報 ● Reviews(v1-v3) ○ 書籍レビュー ○ v1: rating無し ○ v2: ratingを黒い★で表示 ○ v3: ratingを赤い★で表示 ● Ratings ○ 書籍評価 引用:https://istio.io/docs/guides/bookinfo.html

Slide 14

Slide 14 text

Bookinfo with Istio ● 各サービスにEnvoyをサイドカーコ ンテナとしてデプロイ ● Envoyが全ての通信をプロキシす る ● インバウンドだけでなく、アウトバ ウンドも管理できる 引用:https://istio.io/docs/guides/bookinfo.html

Slide 15

Slide 15 text

Install Istio ● リリースページからIstioのパッケージをDL ● 展開してディレクトリ内に移動 ● GKEにIstioをデプロイ ○ export PATH=$PWD/bin:$PATH ○ kubectl apply -f install/kubernetes/istio-auth.yaml

Slide 16

Slide 16 text

Deploy Bookinfo ● BookinfoとIstioの機能を一緒にデプロイ ○ kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/kube/bookinfo.yaml)

Slide 17

Slide 17 text

Confirm Bookinfo ● curl -I http://{ADDRESS}/productpage ○ もしくは、open http://{ADDRESS}/productpage ● Bookinfoが表示される ● アクセスする度にラウンドロビンでレーティング表示が変化

Slide 18

Slide 18 text

RouteRule Match cookieに`user=review-2`を含んでいれ ば、リクエストをReviews-v2に固定する istioctl create -f samples/bookinfo/kube/route-rule-revi ews-cookie-1.yaml

Slide 19

Slide 19 text

RouteRule Match cookieに`user=review-2`を含んでいれ ば、リクエストをReviews-v2に固定する 引用:https://istio.io/docs/guides/bookinfo.html

Slide 20

Slide 20 text

まとめ Kubernetesへ組み込みが簡単で、手軽に動作検証することができました。 Nginxと役割が重なる部分もありますが、動的に反映できる点やアウトバウンド制御 でき、より高度なコントロールを可能にしてくれると思います。 今回紹介しなかった、トレーシングダッシュボードであるZipkinやJaegerと組み合わ せるとさらに便利になるでしょう。 今後がとても楽しみなプロダクトでした。