Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
KubeCon + CNCon Europe 2022 Recap ~ Istio Today...
Search
ksudate
November 24, 2022
Programming
640
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
KubeCon + CNCon Europe 2022 Recap ~ Istio Today and Tomorrow: Sidecars and Beyond
Kubernetes Meetup Tokyo #54 (
https://k8sjp.connpass.com/event/264501/
)
の登壇資料になります
ksudate
November 24, 2022
More Decks by ksudate
See All by ksudate
ZOZOTOWNにおけるKubernetes Cluster Upgradeの これまでとこれから
ksudate
2
2.6k
KubeCon + CNCon Europe 2023 Recap Flux Beyond Git: Harnessing the Power of OCI
ksudate
1
19k
分散負荷試験の自動化を実現するGatling Operatorの紹介
ksudate
1
5.1k
PodのAZ分散を実現する Pod Topology Spread ConstraintsとDescheduler
ksudate
1
970
Other Decks in Programming
See All in Programming
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
150
GKE で Pod の見方を変えたら、スケールアウト時の挙動を真に捉えられた話
stkk
0
130
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
200
速習iPhone Duo対応
yuukiw00w
1
660
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
180
Jetpack Compose メカニズム
skydoves
0
450
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
180
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
120
Family mrubyの進捗
kishima
1
130
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
190
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
3k
XHTMLが残したもの
yosuke_furukawa
PRO
2
820
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
57
14k
A better future with KSS
kneath
240
18k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
540
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.8k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
420
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Code Review Best Practice
trishagee
74
20k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
The Curious Case for Waylosing
cassininazir
1
510
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Transcript
KubeCon + CNCon Europe 2022 Recap Istio Today and Tomorrow:
Sidecars and Beyond Kubernetes Meetup Tokyo #54 株式会社ZOZO 技術本部 SRE部 ECプラットフォーム基盤SREブロック 巣立 健太郎 Copyright © ZOZO, Inc. 1
© ZOZO, Inc. 株式会社ZOZO 技術本部 SRE部 ECプラットフォーム基盤SREブロック 巣立 健太郎 /
Kentaro Sudate Kubecon初参加🔰 Twitter: @ksudate 2
© ZOZO, Inc. 3 会場
© ZOZO, Inc. 4 会場飯
© ZOZO, Inc. Agenda 5 • セッション概要 • セッション紹介 •
ZOZOTOWNのIstio Service Meshと運用課題 • Ambient Meshが解決するIstio Service Meshの運用課題
© ZOZO, Inc. セッション概要 6 Slide https://static.sched.com/hosted_files/kccncna2022/08/Istio %20Maintainer%20Session.pptx.pdf Video https://youtu.be/bKNngrE4cc8
© ZOZO, Inc. セッション概要 7 2022年9月にIstioの新しいアーキテクチャであるAmbient Meshが発表され ました。 このセッションでは既存のSidecarの課題とSidecarlessであるAmbient Mesh
により解決される課題について紹介されました。
© ZOZO, Inc. その前に… 8
© ZOZO, Inc. Service Meshとは 9 • Applicationのコードに追加することなく、Observability、トラフィック管 理、セキュリティなどの機能を透過的に追加できる ◦
Service Meshなし ▪ サービスAではJavaでRetry実装、サービスBではGoでRetry実装 ◦ Serice Meshあり ▪ istioの場合、istio-proxyでRetry処理
© ZOZO, Inc. Istioとは 10 • Service Meshを実現するOSS • Application
Podにistio-proxyコンテナをデプロイすることで実現 https://istio.io/latest/about/service-mesh/#how-it-works
© ZOZO, Inc. Sidecarが抱える課題 11 • Sidecarのinjectが必要 • AppコンテナとSidecarの起動・終了時のシーケンスについて •
SidecarをUpgradeすると、Applicationの再起動が必要 • Kubernetes Jobとの相性は?Server-send-firstプロトコルとの相性は?
© ZOZO, Inc. Sidecarが抱える課題 12 • Sidecarのinjectが必要 ◦ Application PodにSidecarコンテナをデプロイする必要がある
◦ Podの数が多くなるほどSidecarコンテナの数も多くなりその分リソース が必要になる…
© ZOZO, Inc. Sidecarが抱える課題 13 • AppコンテナとSidecarの起動・終了時のシーケンスについて ◦ Sidecarが起動する前にAppコンテナが起動し、通信しようとしてErrorに なる
◦ SidecarがAppコンテナの終了を待たず先に終了してAppコンテナが通信 できなくなる
© ZOZO, Inc. Sidecarが抱える課題 14 • AppコンテナとSidecarの起動・終了時のシーケンスについて ◦ Sidecarが起動する前にAppコンテナが起動し、通信しようとしてError になる
© ZOZO, Inc. Sidecarが抱える課題 15 • AppコンテナとSidecarの起動・終了時のシーケンスについて ◦ SidecarがAppコンテナの終了を待たず先に終了してAppコンテナが通信 できなくなる
© ZOZO, Inc. Sidecarが抱える課題 16 • AppコンテナとSidecarの起動・終了時のシーケンスについて ◦ Istioでは対策としていくつかのOptionが提供されているが複雑なことに 変わりはない…
© ZOZO, Inc. Sidecarが抱える課題 17 • SidecarをUpgradeすると、アプリケーションの再起動が必要 ◦ Sidecarをアップグレードする際にApplication PodをRestartする必要が
ある ◦ アップグレードの度にSidecarがInjectされたDeploymentを全てRestart するのは辛い…
© 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
© ZOZO, Inc. Sidecar、辛い… 19
© ZOZO, Inc. そこで、Ambient Mesh 20
© ZOZO, Inc. Ambient Meshとは? 21 • Sidecarless ◦ Before
1Pod/Container = 1 Proxy ◦ After 1Node = 1 ztunnel (Daemonset)
© ZOZO, Inc. Ambient Meshとは? 22 • レイヤーの分割 ◦ Ztunnelを利用したSecure
Overlay Layer ◦ Waypoint Proxyを利用したL7 Processing Layer
© ZOZO, Inc. Ambient Meshとは? 23 • Secure Overlay Layerの役割
◦ L4 Trafficのルーティング ◦ 全てのサービス接続にmTLSを使用 ◦ AuthorizationPolicyを利用したシンプルなL4レベルでの認可 ◦ TCPメトリクス・ロギングの提供 これらは、Ztunnel (zero-trust tunnel)によって実装されている
© ZOZO, Inc. Secure Overlay Layer 24 • Ztunnel ◦
Daemonsetとして動作 ◦ 現在のベースはEnvoy Proxy ▪ 今後、シンプルで高性能なレイヤ4コンポーネントに変更される予定 • https://github.com/istio/istio/issues/40956
© ZOZO, Inc. Secure Overlay Layer 25 • Ztunnel ▪
全てのTrafficはHTTP Connectを使用したmTLS接続でトンネル化 (HBONE) • データプレーンのプロキシ間の専用ポート(15008)で動作 • 既存のIstioの動作と同様にSPIFEE IDを使用
© ZOZO, Inc. Secure Overlay Layer 26 より詳しくは、solo.ioの以下の記事がおすすめ https://www.solo.io/blog/understanding-istio-ambient-ztunnel-and-secure-overlay/
© ZOZO, Inc. L7 Processing Layer 27 • L7 Processing
Layerの役割 ◦ HTTPルーティング、Retry、Timeout、Circuit breaking、etc... ◦ AuthorizationPolicyを利用した高度なL7レベルでの認可 ◦ HTTPメトリクス、アクセスログ、トレースの提供 これらは、Waypoint Proxyによって実装されている
© 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/
© ZOZO, Inc. 結局、何が嬉しいの? 29
© ZOZO, Inc. 結局、何が嬉しいの? 30 • アプリケーションを再起動しなくて導入・更新が可能 🎉 ◦ Upgrade時、Podの再起動が必要ない!
• レイヤーを分割したことで、段階的な導入が可能 🎉 ◦ Meshなし → Secure Overylay → 完全なL7 Processing • Sidecarに比べて、必要なリソースが大幅に削減可能 🎉
© ZOZO, Inc. DEMO 31
© ZOZO, Inc. 32 Install Istio with Ambient Mode
© ZOZO, Inc. 33 What is installed? • Istio CNI
Plugin ◦ 同じノードに同居するすべてのポッドをチェックし、Ambient Meshの一部で あるかどうかを確認し、Ztunnel にRedirectされるように構成する • ztunnel • Istiod • Istio ingress gateway
© ZOZO, Inc. 34 構成 https://istio.io/latest/blog/2022/get-started-ambient/#adding-your-application-to-the-ambient-mesh
© ZOZO, Inc. ZOZOTOWNのIstio Service Mesh 35 ZOZOTOWNのマイクロサービス基盤では、Istioを用いたService Meshを構築して いる。詳しくは、Techblogをご覧下さい。
https://techblog.zozo.com/entry/zozotown-microservices-alb-istio
© ZOZO, Inc. Istioの運用課題 36 1. 増え続けるSidecarのリソース 2. AppコンテナとSidecarの起動・終了時のシーケンスが複雑 3.
頻度の高いリリースへの追従とそれに伴うUpgradeにかかる工数
© ZOZO, Inc. Istioの運用課題 その1 37 • 増え続けるSidecarのリソース ◦ Sidecar構成では1Podあたり1Proxy必要となる
◦ CPU/MemoryはそのPodが受ける最大Request数を元に設定 ▪ 普段は少ないリソースで足りるが、最大の使用量を想定してCPU/Memoryを 割り当てる必要がある
© 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
© 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/
© 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/
© ZOZO, Inc. Istioの運用課題 その2 41 • AppコンテナとSidecarの起動・終了時のシーケンスが複雑 ◦ Sidecarが起動する前にAppコンテナが起動し、通信しようとしてErrorになる
◦ SidecarがAppコンテナの終了を待たず先に終了してAppコンテナが通信できな くなる
© ZOZO, Inc. Ambient Meshが解決するIstioの運用課題 その2 42 • AppコンテナとSidecarの起動・終了時のシーケンスが複雑 ◦
Ambient MeshではSidecarlessなので全て解決 🎉 ◦ ApplicationはMeshを意識することなく起動・終了することができる 🎉
© ZOZO, Inc. Istioの運用課題 その3 43 • 頻度の高いリリースへの追従とそれに伴うUpgradeにかかる工数 ◦ Istioはリリースサイクル、EOLサイクルが短い
◦ その分、Upgradeの頻度も多くなる 安全かつ少ない工数でUpgradeを完了できることが求められる
© ZOZO, Inc. Istioの運用課題 その3 44 • 現状のUpgrade手順 1. Control
Plane & Ingress Gateway In-place Upgrade 2. Data Plane Upgrade a. 各MicroserviceのDeploymentを再起動し、Upgrade
© ZOZO, Inc. Istioの運用課題 その3 45 • 現状のUpgrade手順 1. Control
Plane & Ingress Gateway In-place Upgrade 2. Data Plane Upgrade a. 各MicroserviceのDeploymentを再起動し、Upgrade
© ZOZO, Inc. Istioの運用課題 その3 46 • 各MicroserviceのDeploymentを再起動し、Upgradeを行う ◦ Microserviceが増えるたびに対象のDeploymentも増える。
◦ PRDはペア作業にてDeploymentを再起動 ◦ 再起動時は、各マイクロサービスのSREへ連絡 増え続けるMicroserviceを全て再起動するのは作業的にもメンタル的にも辛い… 各MicroserviceのSREとのコミュニケーションコストも高くて大変…
© ZOZO, Inc. Ambient Meshが解決するIstioの運用課題 その3 47 • 頻度の高いリリースへの追従とそれに伴うUpgradeにかかる工数 ◦
Ambient Meshでは、ZtunnelとWaypoint ProxyのUpgradeでOK 🎉 ◦ Application Podの再起動は必要ない 🎉
© ZOZO, Inc. 注意点 48 • Ambient Meshは、2022年11月時点ではProduction環境での利用は推奨されて いません。 2023年の本番環境への移行に向けて開発中です。
https://istio.io/latest/blog/2022/introducing-ambient-mesh/
© 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楽しかった🔰
© 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
None