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

Traffic Management with Istio ( with Demo )

loftkun
August 08, 2019

Traffic Management with Istio ( with Demo )

2019/08/08 Thu

Cloud Native FUKUOKA #02 - connpass
https://cnjp.connpass.com/event/139837/

loftkun

August 08, 2019
Tweet

More Decks by loftkun

Other Decks in Technology

Transcript

  1. About me • @loftkun • ヤフー株式会社 SRE部 • 将棋好き •

    対局結果検索サイトなど公開してます • ⾳楽好き • ROCK IN JAPAN FESTIVAL ⾏きます • ピアノ習いたい • コンテナ好き、k8sは前職で使ってた、現職でも使いたい
  2. 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
  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 tcpdump –i docker0 全Pod間の通信をキャプチャできるぞ
  5. https://istio.io/ • サービスメッシュを構成するOSS • CNCF Platinum Member • Proxyコンテナ(Envoy)をSidecarとしてPod内にInjectionしてくれる •

    様々な制御をkubectl applyできる(後ほどご紹介) • 便利なOSS同梱 • メトリクス (Prometheus/Grafana) • トレース (Jaeger/Zipkin) • サービスメッシュグラフの可視化(Kiali)
  6. 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
  7. 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
  8. 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 !
  9. hard-corded Timeout : 3sec Retry : 1 hard-corded Timeout :

    10sec Injected Delay : 7sec Chaos Engineering に使えそう︕ https://istio.io/docs/examples/bookinfo/
  10. Other Traffic Managements • Traffic Shifting • Circuit Breaking •

    Mirroring and more ! https://istio.io/docs/tasks/traffic-management/
  11. 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 で⾒れる