Slide 1

Slide 1 text

KubeCon + CNCon Europe 2022 Recap Istio Today and Tomorrow: Sidecars and Beyond Kubernetes Meetup Tokyo #54 株式会社ZOZO 技術本部 SRE部 ECプラットフォーム基盤SREブロック 巣立 健太郎 Copyright © ZOZO, Inc. 1

Slide 2

Slide 2 text

© ZOZO, Inc. 株式会社ZOZO 技術本部 SRE部 ECプラットフォーム基盤SREブロック 巣立 健太郎 / Kentaro Sudate Kubecon初参加🔰 Twitter: @ksudate 
 
 2

Slide 3

Slide 3 text

© ZOZO, Inc. 3 会場

Slide 4

Slide 4 text

© ZOZO, Inc. 4 会場飯

Slide 5

Slide 5 text

© ZOZO, Inc. Agenda 5 ● セッション概要 ● セッション紹介 ● ZOZOTOWNのIstio Service Meshと運用課題 ● Ambient Meshが解決するIstio Service Meshの運用課題

Slide 6

Slide 6 text

© ZOZO, Inc. セッション概要 6 Slide https://static.sched.com/hosted_files/kccncna2022/08/Istio %20Maintainer%20Session.pptx.pdf Video https://youtu.be/bKNngrE4cc8

Slide 7

Slide 7 text

© ZOZO, Inc. セッション概要 7 2022年9月にIstioの新しいアーキテクチャであるAmbient Meshが発表され ました。 このセッションでは既存のSidecarの課題とSidecarlessであるAmbient Mesh により解決される課題について紹介されました。

Slide 8

Slide 8 text

© ZOZO, Inc. その前に… 8

Slide 9

Slide 9 text

© ZOZO, Inc. Service Meshとは 9 ● Applicationのコードに追加することなく、Observability、トラフィック管 理、セキュリティなどの機能を透過的に追加できる ○ Service Meshなし ■ サービスAではJavaでRetry実装、サービスBではGoでRetry実装 ○ Serice Meshあり ■ istioの場合、istio-proxyでRetry処理

Slide 10

Slide 10 text

© ZOZO, Inc. Istioとは 10 ● Service Meshを実現するOSS ● Application Podにistio-proxyコンテナをデプロイすることで実現 https://istio.io/latest/about/service-mesh/#how-it-works

Slide 11

Slide 11 text

© ZOZO, Inc. Sidecarが抱える課題 11 ● Sidecarのinjectが必要 ● AppコンテナとSidecarの起動・終了時のシーケンスについて ● SidecarをUpgradeすると、Applicationの再起動が必要 ● Kubernetes Jobとの相性は?Server-send-firstプロトコルとの相性は?

Slide 12

Slide 12 text

© ZOZO, Inc. Sidecarが抱える課題 12 ● Sidecarのinjectが必要 ○ Application PodにSidecarコンテナをデプロイする必要がある ○ Podの数が多くなるほどSidecarコンテナの数も多くなりその分リソース が必要になる…

Slide 13

Slide 13 text

© ZOZO, Inc. Sidecarが抱える課題 13 ● AppコンテナとSidecarの起動・終了時のシーケンスについて ○ Sidecarが起動する前にAppコンテナが起動し、通信しようとしてErrorに なる ○ SidecarがAppコンテナの終了を待たず先に終了してAppコンテナが通信 できなくなる

Slide 14

Slide 14 text

© ZOZO, Inc. Sidecarが抱える課題 14 ● AppコンテナとSidecarの起動・終了時のシーケンスについて ○ Sidecarが起動する前にAppコンテナが起動し、通信しようとしてError になる

Slide 15

Slide 15 text

© ZOZO, Inc. Sidecarが抱える課題 15 ● AppコンテナとSidecarの起動・終了時のシーケンスについて ○ SidecarがAppコンテナの終了を待たず先に終了してAppコンテナが通信 できなくなる

Slide 16

Slide 16 text

© ZOZO, Inc. Sidecarが抱える課題 16 ● AppコンテナとSidecarの起動・終了時のシーケンスについて ○ Istioでは対策としていくつかのOptionが提供されているが複雑なことに 変わりはない…

Slide 17

Slide 17 text

© ZOZO, Inc. Sidecarが抱える課題 17 ● SidecarをUpgradeすると、アプリケーションの再起動が必要 ○ Sidecarをアップグレードする際にApplication PodをRestartする必要が ある ○ アップグレードの度にSidecarがInjectされたDeploymentを全てRestart するのは辛い…

Slide 18

Slide 18 text

© ZOZO, Inc. Sidecarが抱える課題 18 ● Kubernetes Jobとの相性は?Server-send-firstプロトコルとの相性は? ○ Jobは完了してもSidecarは終了しないのでJobは実行され続ける… ■ https://github.com/istio/istio/issues/6324 ○ IstioではMySQLなどのServer-send-first protocol (Clientではなく Serverが最初にデータを送る)を利用する場合、いくつかの問題がある ■ https://istio.io/latest/about/faq/#mysql-with-mtls

Slide 19

Slide 19 text

© ZOZO, Inc. Sidecar、辛い… 19

Slide 20

Slide 20 text

© ZOZO, Inc. そこで、Ambient Mesh 20

Slide 21

Slide 21 text

© ZOZO, Inc. Ambient Meshとは? 21 ● Sidecarless ○ Before 1Pod/Container = 1 Proxy ○ After 1Node = 1 ztunnel (Daemonset)

Slide 22

Slide 22 text

© ZOZO, Inc. Ambient Meshとは? 22 ● レイヤーの分割 ○ Ztunnelを利用したSecure Overlay Layer ○ Waypoint Proxyを利用したL7 Processing Layer

Slide 23

Slide 23 text

© ZOZO, Inc. Ambient Meshとは? 23 ● Secure Overlay Layerの役割 ○ L4 Trafficのルーティング ○ 全てのサービス接続にmTLSを使用 ○ AuthorizationPolicyを利用したシンプルなL4レベルでの認可 ○ TCPメトリクス・ロギングの提供 これらは、Ztunnel (zero-trust tunnel)によって実装されている

Slide 24

Slide 24 text

© ZOZO, Inc. Secure Overlay Layer 24 ● Ztunnel ○ Daemonsetとして動作 ○ 現在のベースはEnvoy Proxy ■ 今後、シンプルで高性能なレイヤ4コンポーネントに変更される予定 ● https://github.com/istio/istio/issues/40956

Slide 25

Slide 25 text

© ZOZO, Inc. Secure Overlay Layer 25 ● Ztunnel ■ 全てのTrafficはHTTP Connectを使用したmTLS接続でトンネル化 (HBONE) ● データプレーンのプロキシ間の専用ポート(15008)で動作 ● 既存のIstioの動作と同様にSPIFEE IDを使用

Slide 26

Slide 26 text

© ZOZO, Inc. Secure Overlay Layer 26 より詳しくは、solo.ioの以下の記事がおすすめ https://www.solo.io/blog/understanding-istio-ambient-ztunnel-and-secure-overlay/

Slide 27

Slide 27 text

© ZOZO, Inc. L7 Processing Layer 27 ● L7 Processing Layerの役割 ○ HTTPルーティング、Retry、Timeout、Circuit breaking、etc... ○ AuthorizationPolicyを利用した高度なL7レベルでの認可 ○ HTTPメトリクス、アクセスログ、トレースの提供 これらは、Waypoint Proxyによって実装されている

Slide 28

Slide 28 text

© ZOZO, Inc. L7 Processing Layer 28 ● Waypoint Proxy ○ Gateway APIを利用してデプロイが可能 ○ ベースはEnvoy Proxy ○ Waypoint ProxyをデプロイすることでVirtualServiceやDestinationRuleを 利用したHTTP Routingが可能 https://istio.io/latest/blog/2022/get-started-ambient/

Slide 29

Slide 29 text

© ZOZO, Inc. 結局、何が嬉しいの? 29

Slide 30

Slide 30 text

© ZOZO, Inc. 結局、何が嬉しいの? 30 ● アプリケーションを再起動しなくて導入・更新が可能 🎉 ○ Upgrade時、Podの再起動が必要ない! ● レイヤーを分割したことで、段階的な導入が可能 🎉 ○ Meshなし → Secure Overylay → 完全なL7 Processing ● Sidecarに比べて、必要なリソースが大幅に削減可能 🎉

Slide 31

Slide 31 text

© ZOZO, Inc. DEMO 31

Slide 32

Slide 32 text

© ZOZO, Inc. 32 Install Istio with Ambient Mode

Slide 33

Slide 33 text

© ZOZO, Inc. 33 What is installed? ● Istio CNI Plugin ○ 同じノードに同居するすべてのポッドをチェックし、Ambient Meshの一部で あるかどうかを確認し、Ztunnel にRedirectされるように構成する ● ztunnel ● Istiod ● Istio ingress gateway

Slide 34

Slide 34 text

© ZOZO, Inc. 34 構成 https://istio.io/latest/blog/2022/get-started-ambient/#adding-your-application-to-the-ambient-mesh

Slide 35

Slide 35 text

© ZOZO, Inc. ZOZOTOWNのIstio Service Mesh 35 ZOZOTOWNのマイクロサービス基盤では、Istioを用いたService Meshを構築して いる。詳しくは、Techblogをご覧下さい。 https://techblog.zozo.com/entry/zozotown-microservices-alb-istio

Slide 36

Slide 36 text

© ZOZO, Inc. Istioの運用課題 36 1. 増え続けるSidecarのリソース 2. AppコンテナとSidecarの起動・終了時のシーケンスが複雑 3. 頻度の高いリリースへの追従とそれに伴うUpgradeにかかる工数

Slide 37

Slide 37 text

© ZOZO, Inc. Istioの運用課題 その1 37 ● 増え続けるSidecarのリソース ○ Sidecar構成では1Podあたり1Proxy必要となる ○ CPU/MemoryはそのPodが受ける最大Request数を元に設定 ■ 普段は少ないリソースで足りるが、最大の使用量を想定してCPU/Memoryを 割り当てる必要がある

Slide 38

Slide 38 text

© ZOZO, Inc. Ambient Meshが解決するIstioの運用課題 その1 38 ● 増え続けるSidecarのリソース ○ Sidecar ■ 1 Pod = 1 Proxy ○ Ambient Mesh ■ 1 Node = 1 ztunnel ■ 1 Service Account = 1 Waypoint Proxy

Slide 39

Slide 39 text

© ZOZO, Inc. Ambient Meshが解決するIstioの運用課題 その1 39 例えば、3Nodeで動作する以下のような構成のApplicationの場合、 ● Sidecar構成では、6Podなので6つのコンテナが必要 ● Ambient Meshでは、3 Ztunnelと1 WaypointProxyで4つのコンテナが必要 https://www.solo.io/blog/what-istio-ambient-mesh-means-for-your-wallet/

Slide 40

Slide 40 text

© ZOZO, Inc. Ambient Meshが解決するIstioの運用課題 その1 40 例えばInstanceを3つにスケールすると… ● Sidecar構成では6Pod * 3なので18個のコンテナが必要 ● Ambient Meshでは、必要なのは4つのコンテナのまま変わらない 🎉 https://www.solo.io/blog/what-istio-ambient-mesh-means-for-your-wallet/

Slide 41

Slide 41 text

© ZOZO, Inc. Istioの運用課題 その2 41 ● AppコンテナとSidecarの起動・終了時のシーケンスが複雑 ○ Sidecarが起動する前にAppコンテナが起動し、通信しようとしてErrorになる ○ SidecarがAppコンテナの終了を待たず先に終了してAppコンテナが通信できな くなる

Slide 42

Slide 42 text

© ZOZO, Inc. Ambient Meshが解決するIstioの運用課題 その2 42 ● AppコンテナとSidecarの起動・終了時のシーケンスが複雑 ○ Ambient MeshではSidecarlessなので全て解決 🎉 ○ ApplicationはMeshを意識することなく起動・終了することができる 🎉

Slide 43

Slide 43 text

© ZOZO, Inc. Istioの運用課題 その3 43 ● 頻度の高いリリースへの追従とそれに伴うUpgradeにかかる工数 ○ Istioはリリースサイクル、EOLサイクルが短い ○ その分、Upgradeの頻度も多くなる 安全かつ少ない工数でUpgradeを完了できることが求められる

Slide 44

Slide 44 text

© ZOZO, Inc. Istioの運用課題 その3 44 ● 現状のUpgrade手順 1. Control Plane & Ingress Gateway In-place Upgrade 2. Data Plane Upgrade a. 各MicroserviceのDeploymentを再起動し、Upgrade

Slide 45

Slide 45 text

© ZOZO, Inc. Istioの運用課題 その3 45 ● 現状のUpgrade手順 1. Control Plane & Ingress Gateway In-place Upgrade 2. Data Plane Upgrade a. 各MicroserviceのDeploymentを再起動し、Upgrade

Slide 46

Slide 46 text

© ZOZO, Inc. Istioの運用課題 その3 46 ● 各MicroserviceのDeploymentを再起動し、Upgradeを行う ○ Microserviceが増えるたびに対象のDeploymentも増える。 ○ PRDはペア作業にてDeploymentを再起動 ○ 再起動時は、各マイクロサービスのSREへ連絡 増え続けるMicroserviceを全て再起動するのは作業的にもメンタル的にも辛い… 各MicroserviceのSREとのコミュニケーションコストも高くて大変…

Slide 47

Slide 47 text

© ZOZO, Inc. Ambient Meshが解決するIstioの運用課題 その3 47 ● 頻度の高いリリースへの追従とそれに伴うUpgradeにかかる工数 ○ Ambient Meshでは、ZtunnelとWaypoint ProxyのUpgradeでOK 🎉 ○ Application Podの再起動は必要ない 🎉

Slide 48

Slide 48 text

© ZOZO, Inc. 注意点 48 ● Ambient Meshは、2022年11月時点ではProduction環境での利用は推奨されて いません。 2023年の本番環境への移行に向けて開発中です。 https://istio.io/latest/blog/2022/introducing-ambient-mesh/

Slide 49

Slide 49 text

© ZOZO, Inc. まとめ 49 ● Ambient Meshは今後Istioの最良の選択肢になる ● Ambient Meshを試す際は、solo.io ACADEMYがおすすめ https://academy.solo.io/get-started-with-istio-ambient-mesh-with-istio-ambient-mesh- foundation-certification ● 初のKubecon楽しかった🔰

Slide 50

Slide 50 text

© ZOZO, Inc. 参考リンク 50 ● https://istio.io/latest/blog/2022/get-started-ambient/ ● https://istio.io/latest/blog/2022/introducing-ambient-mesh/ ● https://www.solo.io/blog/understanding-istio-ambient-ztunnel-and-secure-overlay/ ● https://www.solo.io/blog/what-istio-ambient-mesh-means-for-your-wallet/ ● (Ambient Mesh 開発ブランチ) https://github.com/istio/istio/commits/experimental-ambient

Slide 51

Slide 51 text

No content