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. About me • @loftkun • 将棋好き • 対局結果検索サイトなど公開してます • ⾳楽好き

    • ROCK IN JAPAN FESTIVAL ⾏きます • ピアノ習いたい • コンテナ好き、k8sは前職で使ってた、現職でも使いたい
  2. 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
  3. 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 でログイン可能
  4. 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
  5. 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間の通信をキャプチャできるぞ
  6. https://istio.io/ • サービスメッシュを構成するOSS • CNCF Platinum Member • Pod内にProxyコンテナ(Envoy)をSidecarとしてInjectionして利⽤する •

    ruleをapplyすることで様々な制御が可能(後ほどご紹介) • 便利なメトリクスや、サービスメッシュの可視化ツールも同梱されている • v1.2でDatadogへのメトリクス送信に対応 • Rancher 2.3 Preview 2 がIstioに対応
  7. What is a service mesh? https://istio.io/docs/concepts/what-is-istio/ • 以下を含む • ディスカバリ

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

    可観測性 ) • Platform support • Integration and customization https://istio.io/docs/concepts/what-is-istio/
  9. • platform-independent (プラットフォーム⾮依存) • Kubernetes • Consul • VM •

    Integration and customization • 既存のソリューションと統合するように拡張およびカスタマイズできる • ACL • ログ記録 • 監視 • クォータ • 監査など https://istio.io/docs/concepts/what-is-istio/
  10. 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して使おう
  11. 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 )
  12. 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する
  13. hard-corded Timeout : 3sec Retry : 1 hard-corded Timeout :

    10sec Injected Delay : 7sec Chaos Engineering に使えそう︕
  14. Other Traffic Managements • Circuit Breaking • Mirroring and more

    ! https://istio.io/docs/tasks/traffic-management/
  15. 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