Skip to content
Latchkey

sidecar container とは?アプリと並んで動くヘルパー

sidecar とは、同じ pod 内でメインのアプリと並んで動く二次的なコンテナで、そのネットワークと lifecycle を共有して補助的な機能を提供します。

ときには、ある機能 - ログ転送、proxy、メトリクス - がアプリの内部には属さないが、そのすぐ隣で動く必要があります。sidecar パターンは、そのヘルパーを同じ pod 内の別コンテナに置き、アプリケーションイメージを肥大化させることなく、アプリのネットワークと storage を共有させます。

sidecar がコンテキストを共有する仕組み

同じ pod に存在するため、sidecar はネットワーク namespace を共有し(localhost で到達可能)、メインコンテナと volume を共有できます。両者は一緒にスケジュールされ、生死をともにします。

一般的な用途

  • 共有ファイルを読むログ・メトリクスのコレクター。
  • トラフィックを扱う service-mesh の proxy(例: Envoy)。
  • アプリの前段に立つローカル cache や auth proxy。

sidecar と init container の違い

init container はアプリの起動前に完了まで実行されます(セットアップ作業)。sidecar は pod の生涯を通じて、アプリと並行して動きます。異なる仕事、異なる lifecycle です。

凝集性を保つ

sidecar は本当にそのアプリに属するべきです - 同じ lifecycle、同じ pod。「pod を節約する」ためだけに無関係なサービスを1つの pod に入れると、独立してスケールすべきものを結合させてしまいます。

CI における sidecar

同じ考え方は、CI では job と並んで動く service container やヘルパープロセス(例: cache proxy)として現れます。マネージド runner はしばしばそうしたヘルパーを組み込みで提供するため、追加のセットアップなしに job が caching や proxy を得られます。

重要なポイント

  • sidecar は同じ pod 内でアプリと並んで動き、ネットワークと storage を共有します。
  • アプリケーションイメージを肥大化させずに機能を追加します。
  • sidecar は pod の生涯を通じて動きますが、init container は最初に動いて終了します。

関連ガイド