Traffic Management
with Istio ( with Demo )
2019/08/08 Cloud Native FUKUOKA #02
loftkun
About me
• @loftkun
• ヤフー株式会社 SRE部
• 将棋好き
• 対局結果検索サイトなど公開してます
• ⾳楽好き
• ROCK IN JAPAN FESTIVAL ⾏きます
• ピアノ習いたい
• コンテナ好き、k8sは前職で使ってた、現職でも使いたい
My k8s Environment
Machine
CPU Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz
6Core/12Threads
RAM 64GB
OS Ubuntu 17.10
k8s
minikube v1.2.0 ( Kubernetes v1.15.0 )
assign 12cpu & 40GB RAM
kubectl v1.15.0
istio v1.2.2
helm v2.14.1
minikube start vm-driver=virtualbox
Container
VM ( Node )
Minikube
BareMetal
ssh -fNL 12345:192.168.99.100:12345 loft@192.168.3.5
192.168.3.5
grafana service のnodePortが12345の場合
http://localhost:12345 でアクセスできるぞ
192.168.99.100
192.168.3.4
Minikube ssh
でログイン可能
minikube start vm-driver=none
Container
Minikube
BareMetal192.168.3.5
( Node )
grafana service のnodePortが12345の場合
http://192.168.3.5:12345 でアクセスできるぞ
192.168.3.4
tcpdump –i docker0
全Pod間の通信をキャプチャできるぞ
Agenda
Introduction
How to use
Bookinfo
Traffic Management
Introduction
What is Istio?
https://istio.io/
• サービスメッシュを構成するOSS
• CNCF Platinum Member
• Proxyコンテナ(Envoy)をSidecarとしてPod内にInjectionしてくれる
• 様々な制御をkubectl applyできる(後ほどご紹介)
• 便利なOSS同梱
• メトリクス (Prometheus/Grafana)
• トレース (Jaeger/Zipkin)
• サービスメッシュグラフの可視化(Kiali)
https://github.com/cncf/trailmap
https://github.com/cncf/trailmap
How to use
Install à Sidecar Injection à Apply traffic rules
3 steps
Install
Sidecar Injection
Apply traffic rules
Install
Use Helm? $ kubectl apply istio-demo.yaml
Cluster has
tiller?
$ helm template istio | kubectl apply
$ helm install istio
Y
Y
おすすめはHelm使⽤。パラメタ設定が楽。
• incubator/istioはメンテが⽌まってるので使わない
• istio.ioのdoc記載の最新版をdownloadして使おう
N
N
Sidecar Injection
Manual
istioctl kube-injectコマンドでSidecarを埋め込んだmanifestを出⼒する
$ kubectl apply -f < ( istioctl kube-inject -f my-manifests.yaml )
Automatic
対象のnamespaceにラベルを設定しておくだけでOK!
$ kubectl label ns my-ns istio-injection=enabled
Apply traffic rules
kubectl apply –f my-virtualservice.yaml
• VirtualService
• a set of traffic routing rules
• 宛先別に様々なruleを設定できる
Istio setup is done, Letʼs Traffic Management !
Bookinfo
Istioが提供するサンプルアプリ
Architecture
https://istio.io/docs/examples/bookinfo/
load balancing
( by reviews service )
Demo
Traffic Management
Routing, Fault Injection, etc
Request Routing
https://istio.io/docs/examples/bookinfo/
Demo
review v1 (星なし)
Request Routing ( by header )
https://istio.io/docs/examples/bookinfo/
Demo
Canary Release に使えそう︕ review v2 (⿊い星)
Fault Injection (delay )
Injected
Delay : 7sec
https://istio.io/docs/examples/bookinfo/
Demo
https://istio.io/docs/examples/bookinfo/
hard-corded
Timeout : 10sec
Injected
Delay : 7sec
https://istio.io/docs/examples/bookinfo/
hard-corded
Timeout : 3sec
Retry : 1
hard-corded
Timeout : 10sec
Injected
Delay : 7sec
Chaos Engineering に使えそう︕ https://istio.io/docs/examples/bookinfo/
Other Traffic Managements
• Traffic Shifting
• Circuit Breaking
• Mirroring
and more !
https://istio.io/docs/tasks/traffic-management/
Appendix
なぜヨット︖
いろいろ船関連だった
Kubernetes 操舵手(ギリシャ語)
Helm 舵
tiller 舵柄(かじを操作するレバー)
Istio 帆(ギリシャ語)
Spinnaker 大きな三角形の帆
Thank you for listening !
福岡新着ITイベント
@ITEventFukuoka
Appendix :
commands for demo
with my home k8s
ssh config
• ~/.ssh/config
• ログイン
ssh my-k8s
ssh port forwarding
INGRESS_HOST=192.168.99.100
INGRESS_PORT=31380
ssh -fNL ${INGRESS_PORT}:${INGRESS_HOST}:${INGRESS_PORT} my-k8s
• ローカルの31380ポートをnode(MinikubeのVM) 内の
31380ポートにforwarding
• BookInfoは localhost:31380/productpage で⾒れる
ref
• Request Routing
• https://istio.io/docs/tasks/traffic-management/request-routing/
• Fault Injection
• https://istio.io/docs/tasks/traffic-management/fault-injection/
Appendix :
BookInfo screenshot
review v1のレスポンス
reload
review v2のレスポンス(⿊い星)
reload
review v3のレスポンス(⾚い星)

Traffic Management with Istio ( with Demo )