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

KubeCon + CNCon Europe 2022 Recap ~ Istio Today and Tomorrow: Sidecars and Beyond

ksudate
November 24, 2022

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
Tweet

More Decks by ksudate

Other Decks in Programming

Transcript

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

    View full-size slide

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


    2

    View full-size slide

  3. © ZOZO, Inc.
    3
    会場

    View full-size slide

  4. © ZOZO, Inc.
    4
    会場飯

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  8. © ZOZO, Inc.
    その前に…
    8

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  18. © 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

    View full-size slide

  19. © ZOZO, Inc.
    Sidecar、辛い…
    19

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  28. © 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/

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  31. © ZOZO, Inc.
    DEMO
    31

    View full-size slide

  32. © ZOZO, Inc.
    32
    Install Istio with Ambient Mode

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  38. © 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

    View full-size slide

  39. © 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/

    View full-size slide

  40. © 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/

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  49. © 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楽しかった🔰

    View full-size slide

  50. © 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

    View full-size slide