Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
KubeCon + CNCon Europe 2022 Recap ~ Istio Today...
Search
ksudate
November 24, 2022
Programming
630
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.5k
KubeCon + CNCon Europe 2023 Recap Flux Beyond Git: Harnessing the Power of OCI
ksudate
1
19k
分散負荷試験の自動化を実現するGatling Operatorの紹介
ksudate
1
5k
PodのAZ分散を実現する Pod Topology Spread ConstraintsとDescheduler
ksudate
1
960
Other Decks in Programming
See All in Programming
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
870
symfony/aiとlaravel/boost
77web
0
130
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
590
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
140
20260623_Loop Engineeringで自分の分身の問い合わせBotを作る
ryugen04
0
220
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
0
290
1B+ /day規模のログを管理する技術
broadleaf
0
140
霧の中の代数的エフェクト
funnyycat
1
410
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
210
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
860
5分で問診!Composer セキュリティ健康診断
codmoninc
0
360
フィードバックで育てるAI開発
kotaminato
1
120
Featured
See All Featured
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
180
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
370
Agile that works and the tools we love
rasmusluckow
331
22k
Utilizing Notion as your number one productivity tool
mfonobong
4
430
Building Adaptive Systems
keathley
44
3.1k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Practical Orchestrator
shlominoach
191
11k
Everyday Curiosity
cassininazir
0
260
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
400
Designing for Timeless Needs
cassininazir
1
380
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
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