Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Traffic Management with Istio

loftkun
July 11, 2019

Traffic Management with Istio

2019/07/11 #ふくばねてす node-2

https://fukubernetes.connpass.com/event/135117/

- Introduction
 - What is Istio?
 - What is a service mesh?
 - Why use Istio?
 - Core features
 - Traffic management
 - Architecture
- How to use
 - Install
 - Sidecar Injection
 - Apply rule
- Bookinfo
- Traffic Management
 - Request Routing
 - Traffic Shifting
 - Fault Injection (delay )
- Tools
 - Prometheus
 - Grafana
 - Kiali

loftkun

July 11, 2019
Tweet

More Decks by loftkun

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  3. Event

    View Slide

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

    View Slide

  5. My k8s Environment

    View Slide

  6. 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

    View Slide

  7. 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
    でログイン可能

    View Slide

  8. 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

    View Slide

  9. 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間の通信をキャプチャできるぞ

    View Slide

  10. Agenda
    Introduction
    How to use
    Bookinfo
    Traffic Management
    Tools

    View Slide

  11. Introduction
    What is Istio?

    View Slide

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

    View Slide

  13. View Slide

  14. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  25. 帆︖

    View Slide

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

    View Slide

  27. How to use
    Install à Sidecar Injection à Apply rule

    View Slide

  28. 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して使おう

    View Slide

  29. 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 )

    View Slide

  30. 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する

    View Slide

  31. neo4j.yaml neo4j-injected.yaml

    View Slide

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

    View Slide

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

    View Slide

  34. Bookinfo
    Istioのサンプルアプリ

    View Slide

  35. review v1のレスポンス

    View Slide

  36. reload

    View Slide

  37. View Slide

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

    View Slide

  39. reload

    View Slide

  40. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  44. After Sidecer Injection
    Letʼs Traffic Management !

    View Slide

  45. Traffic Management
    Routing, Shifting, Fault Injection

    View Slide

  46. Request Routing

    View Slide

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

    View Slide

  48. Request Routing (headers)

    View Slide

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

    View Slide

  50. View Slide

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

    View Slide

  52. Traffic Shifting

    View Slide

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

    View Slide

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

    View Slide

  55. Fault Injection (delay )
    Injected
    Delay : 7sec

    View Slide

  56. View Slide

  57. View Slide

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

    View Slide

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

    View Slide

  60. View Slide

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

    View Slide

  62. Tools
    便利なOSSたち

    View Slide

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

    View Slide

  64. 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

    View Slide

  65. View Slide

  66. View Slide

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

    View Slide

  68. View Slide

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

    View Slide