【さいどかーぷろきしー】

サイドカープロキシ とは?

最終更新:
💡 サイドカーのように横にくっついて通信を取り次ぐ相棒

アプリのコンテナと同じPodに置かれ、そのアプリが送受信する通信を仲介するプロキシのこと。通信の暗号化やリトライ、メトリクスの収集などを、アプリ本体を書き換えずに追加できる。

📌 このページのポイント
サイドカープロキシの仕組み Pod A アプリ コンテナ サイドカー プロキシ mTLS暗号化 リトライ メトリクス収集 Pod B サイドカー プロキシ アプリ コンテナ mTLS コントロールプレーン 各サイドカーに設定・証明書を配布
サイドカープロキシによるサービス間通信のイメージ
ひよこ ひよこ
サイドカープロキシって、なんでわざわざ別のコンテナを横に置くの?
ペンギン先生 ペンギン先生
アプリ本体には業務の処理に集中してほしいからだよ。通信の暗号化やリトライといった共通の仕事は、同じPodの横にいるプロキシに任せるんだ。同じPodのコンテナはネットワークを共有しているから、アプリの出入りする通信をプロキシが取り次げるんだよ
ひよこ ひよこ
でも、コンテナが増えたらその分リソースを食わない?
ペンギン先生 ペンギン先生
食うよ。Istioの公式の測定では、1秒間に1000リクエスト(1KB)を処理する条件で、サイドカー1つあたり約0.20 vCPUと60MBのメモリを使ったとされている。これがPodの数だけ必要になるから、規模が大きいと無視できない量になるんだ。通信の処理をアプリごとに作り込む手間と比べて判断することになるね
ひよこ ひよこ
サービスメッシュって言葉もよく一緒に出てくるけど、どう関係するの?
ペンギン先生 ペンギン先生
サービスメッシュは、サービス間の通信をプロキシの層でまとめて管理する仕組みのことだよ。サイドカー方式では、各Podに置いたサイドカープロキシがデータプレーンになって、コントロールプレーンがそこに設定や証明書を配るんだ
ひよこ ひよこ
最近「サイドカーレス」って話も聞くけど、なくなっちゃうの?
ペンギン先生 ペンギン先生
Istioのアンビエントモードは、ノードごとの共有プロキシで暗号化などを担当して、高度な機能が必要なときだけ別のプロキシを足す方式だよ。公式の比較では資源の消費が少ないとされている。一方でサイドカーモードは複数クラスターでも安定版として使えるなど対応範囲が広いから、要件に合わせて選ぶ形だね
もっと詳しく知りたい人へ

Kubernetesの「ネイティブサイドカー」とは何が違うの?

サイドカープロキシは「アプリの横で通信を仲介する」という役割の話で、ネイティブサイドカーはKubernetesがPodの中の補助コンテナを扱う仕組みの話です。Kubernetes v1.33で安定版になった機能では、initContainersにrestartPolicy Alwaysを指定した補助コンテナをサイドカーとして扱い、アプリより先に起動し、Pod終了時はアプリが止まってから終了させます。これにより、プロキシより先にアプリが通信を始めてしまう、といった起動順の問題を避けやすくなります。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「サイドカープロキシ」って出てきたら「アプリの横に付いて通信を取り次ぐ番人」と思えればだいたいOK!
📖 おまけ:英語の意味
「Sidecar Proxy」 = 側車型の代理サーバー
💬 バイクの横に付いている座席「サイドカー」が由来。メインのコンテナにぴったり寄り添って動く様子がそっくりだよ

参考資料

← 用語集にもどる