Traffic Management with Istio

4cb5b950cfd0eabf5d6b828c951d4549?s=47 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

4cb5b950cfd0eabf5d6b828c951d4549?s=128

loftkun

July 11, 2019
Tweet

Transcript

  1. 2.

    About me • @loftkun • 将棋好き • 対局結果検索サイトなど公開してます • ⾳楽好き

    • ROCK IN JAPAN FESTIVAL ⾏きます • ピアノ習いたい • コンテナ好き、k8sは前職で使ってた、現職でも使いたい
  2. 3.
  3. 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
  4. 7.

    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 でログイン可能
  5. 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
  6. 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間の通信をキャプチャできるぞ
  7. 12.

    https://istio.io/ • サービスメッシュを構成するOSS • CNCF Platinum Member • Pod内にProxyコンテナ(Envoy)をSidecarとしてInjectionして利⽤する •

    ruleをapplyすることで様々な制御が可能(後ほどご紹介) • 便利なメトリクスや、サービスメッシュの可視化ツールも同梱されている • v1.2でDatadogへのメトリクス送信に対応 • Rancher 2.3 Preview 2 がIstioに対応
  8. 13.
  9. 14.
  10. 16.

    What is a service mesh? https://istio.io/docs/concepts/what-is-istio/ • 以下を含む • ディスカバリ

    • ロードバランシング • 障害回復 • メトリック • モニタリング • 複雑な運⽤要件も含む • A / Bテスト • カナリーロールアウト • レート制限 • アクセス制御 • エンドツーエンド認証など
  11. 18.

    Core features • Traffic management • Security • Observability (

    可観測性 ) • Platform support • Integration and customization https://istio.io/docs/concepts/what-is-istio/
  12. 20.

    • platform-independent (プラットフォーム⾮依存) • Kubernetes • Consul • VM •

    Integration and customization • 既存のソリューションと統合するように拡張およびカスタマイズできる • ACL • ログ記録 • 監視 • クォータ • 監査など https://istio.io/docs/concepts/what-is-istio/
  13. 25.
  14. 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して使おう
  15. 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 )
  16. 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する
  17. 36.
  18. 37.
  19. 39.
  20. 40.
  21. 50.
  22. 56.
  23. 57.
  24. 59.

    hard-corded Timeout : 3sec Retry : 1 hard-corded Timeout :

    10sec Injected Delay : 7sec Chaos Engineering に使えそう︕
  25. 60.
  26. 61.

    Other Traffic Managements • Circuit Breaking • Mirroring and more

    ! https://istio.io/docs/tasks/traffic-management/
  27. 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
  28. 65.
  29. 66.
  30. 68.