Slide 1

Slide 1 text

Istioのハマりどころ ~BookInfoのその先へ~ 株式会社ユーザベース 阿南

Slide 2

Slide 2 text

Istio使ったことある人?

Slide 3

Slide 3 text

BookInfo 構築したことある人?

Slide 4

Slide 4 text

本番で利用してる人?

Slide 5

Slide 5 text

LTの目的 ◎ こんな人におすすめ - ServiceMeshについてはなんとなく理解している - Bookinfoは触ったことあるけど、その先に進みたい方へ - 自作のアプリケーションでIstio適用したら動かなかった

Slide 6

Slide 6 text

- 阿南 肇史 (Anan Toshifumi) - Twitter: @toshanan - Site Reliability Engineer @ UZABASE, Inc. - Istioについてのインタビュー記事(宣伝) - https://employment.en-japan.com/engineerhub/entry/2019/05/21/103000 自己紹介

Slide 7

Slide 7 text

- 阿南 肇史 (Anan Toshifumi) - Twitter: @toshanan - Site Reliability Engineer @ UZABASE, Inc. - Istioについてのインタビュー記事(宣伝) - https://employment.en-japan.com/engineerhub/entry/2019/05/21/103000 自己紹介

Slide 8

Slide 8 text

さっそくIstioにハマろう

Slide 9

Slide 9 text

ハマりポイント#1

Slide 10

Slide 10 text

● Pod と Service の Requirementsでハマる ○ Service Port名は命名規則がある (正しくroutingされない) ■ name: [-] i.e) http2-foo, http ○ Deploymentのlabelにapp, version は必須 (metrics取得に必要) ○ 詳細はこちら: https://istio.io/docs/setup/additional-setup/requirements/ ○ Istio 1.3 になるとServiceのプロトコルは自動検知してくれる模様 ■ https://istio.io/blog/2019/announcing-1.3/ ハマりポイント#1

Slide 11

Slide 11 text

ハマりポイント#2

Slide 12

Slide 12 text

● Headerを引き継いでハマる ハマりポイント#2 istio-proxy Service C istio-proxy Service A istio-proxy Service B istio-proxy Service D x-hoge-id: 100 x-hoge-language: ja host: b-service x-hoge-id: 100 x-hoge-language: ja host: api.example.com x-hoge-id: 100 x-hoge-language: ja

Slide 13

Slide 13 text

istio-proxy Service C istio-proxy Service A istio-proxy Service B istio-proxy Service D ハマりポイント#2 ● Headerを引き継いでハマる x-hoge-id: 100 x-hoge-language: ja x-hoge-id: 100 x-hoge-language: ja x-hoge-id: 100 x-hoge-language: ja

Slide 14

Slide 14 text

istio-proxy Service C istio-proxy Service A istio-proxy Service B istio-proxy Service D ハマりポイント#2 ● 自身のhostが設定されており、正 しくroutingできない Host: b-service:8080 x-hoge-id: 100 x-hoge-language: ja Host: b-service:8080 x-hoge-id: 100 x-hoge-language: ja

Slide 15

Slide 15 text

istio-proxy Service C istio-proxy Service A istio-proxy Service B istio-proxy Service D ハマりポイント#2 ● 必要なヘッダーのみ引き継ぐ Host: b-service:8080 x-hoge-id: 100 x-hoge-language: ja x-hoge-id: 100 x-hoge-language: ja

Slide 16

Slide 16 text

ハマりポイント#3

Slide 17

Slide 17 text

ハマりポイント#3 ● istio-proxyを使いこなしてハマる ○ ○ istio-proxyには調査に役立つコマンドが多く入っている ■ curl ■ tcpdump ■ ip ■ iptables ■ netstat ■ ... ○ トラブル時の疎通確認、意図した versionに到達するか等確認したくなる

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

● virtual serviceでsubsetを付与することにより、 特定バージョンにルーティングが可能 ○ istio-proxyからrequestを送っても全バージョンに均等に リクエストが送られるので確認にならない ハマりポイント#3

Slide 20

Slide 20 text

ハマりポイント#4

Slide 21

Slide 21 text

● GKEでInternal Load Balancerが作成できない ○ Issue : https://github.com/istio/istio/issues/11365 ○ GCPは cloud.google.com/load-balancer-type: "internal"を付与するとInternal LBが作成可能 ○ ただし、istio-ingressgatewayは公開するPort数の制限により作成不可 ■ Internal LBのMaxは 5 ports ハマりポイント#4

Slide 22

Slide 22 text

● Sidecarコンテナ追加するだけと思いきや、うまくいかないことも ● バージョンによってDefault値がガラッと変わることもあるので要確認 ● 意図した挙動にならない場合は、Deployment単位でistio-proxyを disableにすることも可能 ○ https://istio.io/docs/setup/additional-setup/sidecar-injection/ まとめ

Slide 23

Slide 23 text

楽しいIstioライフを!

Slide 24

Slide 24 text

ご静聴 ありがとうございました