Slide 1

Slide 1 text

Traffic Management with Istio 2019/07/11 #ふくばねてす node-2 loftkun

Slide 2

Slide 2 text

About me • @loftkun • 将棋好き • 対局結果検索サイトなど公開してます • ⾳楽好き • ROCK IN JAPAN FESTIVAL ⾏きます • ピアノ習いたい • コンテナ好き、k8sは前職で使ってた、現職でも使いたい

Slide 3

Slide 3 text

Event

Slide 4

Slide 4 text

Bot 福岡新着ITイベント @ITEventFukuoka

Slide 5

Slide 5 text

My k8s Environment

Slide 6

Slide 6 text

Machine CPU Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz 6C/12T RAM 64GB OS Ubuntu 17.10 k8s minikube v1.2.0 ( Kubernetes v1.15.0 ) kubectl v1.15.0 istio v1.2.2 helm v2.14.1

Slide 7

Slide 7 text

minikube start vm-driver=virtualbox Container VM ( Node ) Minikube BareMetal ssh -fNL 12345:192.168.99.100:12345 [email protected] 192.168.3.5 grafana service のnodePortが12345の場合 http://localhost:12345 でアクセスできるぞ 192.168.99.100 192.168.3.4 Minikube ssh でログイン可能

Slide 8

Slide 8 text

minikube start vm-driver=none Container Minikube BareMetal 192.168.3.5 ( Node ) grafana service のnodePortが12345の場合 http://192.168.3.5:12345 でアクセスできるぞ 192.168.3.4

Slide 9

Slide 9 text

minikube start vm-driver=none Container Minikube BareMetal 192.168.3.5 ( Node ) grafana service のnodePortが12345の場合 http://192.168.3.5:12345 でアクセスできるぞ 192.168.3.4 tcpdump –i docker0 全Pod間の通信をキャプチャできるぞ

Slide 10

Slide 10 text

Agenda Introduction How to use Bookinfo Traffic Management Tools

Slide 11

Slide 11 text

Introduction What is Istio?

Slide 12

Slide 12 text

https://istio.io/ • サービスメッシュを構成するOSS • CNCF Platinum Member • Pod内にProxyコンテナ(Envoy)をSidecarとしてInjectionして利⽤する • ruleをapplyすることで様々な制御が可能(後ほどご紹介) • 便利なメトリクスや、サービスメッシュの可視化ツールも同梱されている • v1.2でDatadogへのメトリクス送信に対応 • Rancher 2.3 Preview 2 がIstioに対応

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

What is Istio? • 既存の分散アプリケーションの上に透過的に重なる完全なオープンソースのサービス メッシュ • 分散型マイクロサービスアーキテクチャを正常にかつ効率的に実⾏でき、マイクロ サービスを安全に接続し、監視する統⼀的な⽅法を提供する https://istio.io/docs/concepts/what-is-istio/

Slide 16

Slide 16 text

What is a service mesh? https://istio.io/docs/concepts/what-is-istio/ • 以下を含む • ディスカバリ • ロードバランシング • 障害回復 • メトリック • モニタリング • 複雑な運⽤要件も含む • A / Bテスト • カナリーロールアウト • レート制限 • アクセス制御 • エンドツーエンド認証など

Slide 17

Slide 17 text

Why use Istio? • コードを変更することなく、ロードバランシング、サービス 間認証、監視などのサービスをdeployしたネットワーク を簡単に作成できる https://istio.io/docs/concepts/what-is-istio/

Slide 18

Slide 18 text

Core features • Traffic management • Security • Observability ( 可観測性 ) • Platform support • Integration and customization https://istio.io/docs/concepts/what-is-istio/

Slide 19

Slide 19 text

• Traffic management • サービス間のトラフィックとAPIコールの流れを制御できる • Security • 安全な通信チャネルを提供し、サービス通信の認証、承認、および暗号 化を⼤規模に管理 • Observability(可観測性) • 強⼒なトレース、監視、およびログ記録機能 https://istio.io/docs/concepts/what-is-istio/

Slide 20

Slide 20 text

• platform-independent (プラットフォーム⾮依存) • Kubernetes • Consul • VM • Integration and customization • 既存のソリューションと統合するように拡張およびカスタマイズできる • ACL • ログ記録 • 監視 • クォータ • 監査など https://istio.io/docs/concepts/what-is-istio/

Slide 21

Slide 21 text

Proxy Proxy Architecture Proxy Mixer Pilot config metrics data plane control plane

Slide 22

Slide 22 text

https://istio.io/docs/concepts/what-is-istio/ data plane a set of Proxies

Slide 23

Slide 23 text

https://istio.io/docs/concepts/what-is-istio/ control plane manages and configures the proxies to route traffic

Slide 24

Slide 24 text

https://istio.io/docs/concepts/what-is-istio/ Mixer collects telemetry data from the Envoy proxy and other services

Slide 25

Slide 25 text

帆︖

Slide 26

Slide 26 text

Sea・・・ Kubernetes 操舵手(ギリシャ語) Helm 舵 tiller 舵柄(かじを操作するレバー) Istio 帆(ギリシャ語) Spinnaker 大きな三角形の帆

Slide 27

Slide 27 text

How to use Install à Sidecar Injection à Apply rule

Slide 28

Slide 28 text

Install Use Helm? $ kubectl apply istio- demo.yaml Cluster has tiller? $ helm template istio | kubectl apply $ helm install istio N N Y Y Helm Chart • incubator/istioはメンテが⽌まってるので使わない • istio.ioのdoc記載の最新版をdownloadして使おう

Slide 29

Slide 29 text

Sidecar Injection • 2way • Automatic • Manual $ kubectl label namespace my-namespace istio-injection=enabled 対象のnamespaceにラベルを設定しておくだけでOK! istioctl kube-injectコマンドを利⽤してSidecarを埋め込む $ kubectl apply -f < ( istioctl kube-inject -f my-manifests.yaml )

Slide 30

Slide 30 text

Manual ( Helm Chart ) helm fetch stable/neo4j helm template neo4j-0.9.0.tgz > neo4j.yaml istioctl kube-inject -f ./neo4j.yaml > ./neo4j-injected.yaml kubectl apply –f ./neo4j-injected.yaml • chartのmanifestを出⼒する • istioctl kube-injectコマンドを利⽤し、Sidecarが埋め込まれたyaml を⽣成する • ⽣成したyamlをapplyする

Slide 31

Slide 31 text

neo4j.yaml neo4j-injected.yaml

Slide 32

Slide 32 text

neo4j.yaml neo4j-injected.yaml istio-proxyコンテナ

Slide 33

Slide 33 text

Apply rule kubectl apply –f ./rule.yaml • Reviewsサービスへのリクエストをルーティングするルールの例 • VirtualService • Routing を定義する • その他様々な設定が可能(後ほどご紹介)

Slide 34

Slide 34 text

Bookinfo Istioのサンプルアプリ

Slide 35

Slide 35 text

review v1のレスポンス

Slide 36

Slide 36 text

reload

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

review v2のレスポンス(⿊い星)

Slide 39

Slide 39 text

reload

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

review v3のレスポンス(⾚い星)

Slide 42

Slide 42 text

Architecture https://istio.io/docs/examples/bookinfo/

Slide 43

Slide 43 text

Architecture round-robin ( by reviews service ) https://istio.io/docs/examples/bookinfo/

Slide 44

Slide 44 text

After Sidecer Injection Letʼs Traffic Management !

Slide 45

Slide 45 text

Traffic Management Routing, Shifting, Fault Injection

Slide 46

Slide 46 text

Request Routing

Slide 47

Slide 47 text

review v1のレスポンス(星なし)

Slide 48

Slide 48 text

Request Routing (headers)

Slide 49

Slide 49 text

review v1のレスポンス(星なし)

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

Canary Release に使えそう︕ review v2のレスポンス(⿊い星)

Slide 52

Slide 52 text

Traffic Shifting

Slide 53

Slide 53 text

review v1のレスポンス(星なし)

Slide 54

Slide 54 text

Canary Release に使えそう︕ review v3のレスポンス(⾚い星)

Slide 55

Slide 55 text

Fault Injection (delay ) Injected Delay : 7sec

Slide 56

Slide 56 text

No content

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

hard-corded Timeout : 10sec Injected Delay : 7sec

Slide 59

Slide 59 text

hard-corded Timeout : 3sec Retry : 1 hard-corded Timeout : 10sec Injected Delay : 7sec Chaos Engineering に使えそう︕

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

Other Traffic Managements • Circuit Breaking • Mirroring and more ! https://istio.io/docs/tasks/traffic-management/

Slide 62

Slide 62 text

Tools 便利なOSSたち

Slide 63

Slide 63 text

Prometheus • 経路毎のメトリクスを取得できる • istio_requests_total{destination_service="reviews.default.svc.cluste r.local", destination_version="v3"}

Slide 64

Slide 64 text

Prometheus/Grafana • Istio Dashboard • Istio Galley Dashboard • Istio Mesh Dashboard • Istio Mixer Dashboard • Istio Performance Dashboard • Istio Pilot Dashboard • Istio Service Dashboard • Istio Workload Dashboard

Slide 65

Slide 65 text

No content

Slide 66

Slide 66 text

No content

Slide 67

Slide 67 text

Kiali • サービスメッシュをGraph構造として可視化できる • https://www.kiali.io/

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

Letʼs Traffic Management with Istio! Thank you for listening !