サイドカーパターン
メインコンテナと同じ Pod に補助コンテナを配置し、横断的関心事を分離する設計パターン
サイドカーパターンとは
サイドカーパターンは、メインのアプリケーションコンテナと同じ Pod に補助コンテナを配置し、ログ収集、監視、プロキシなどの横断的関心事をメインから分離する設計パターンである。
サイドカーのユースケース
サイドカーはメインコンテナの機能を拡張する補助コンテナで、ログ収集、プロキシ、監視、シークレット管理などの横断的関心事を担当する。メインコンテナのコードを変更せずに機能を追加できる点が利点。
| サイドカー | 役割 | 例 |
|---|---|---|
| ログ収集 | ログを集約・転送 | Fluent Bit |
| プロキシ | トラフィック制御、mTLS | Envoy (Istio) |
| 監視 | メトリクス収集 | ADOT Collector |
| シークレット | 秘密情報の注入 | Vault Agent |
Kubernetes での定義
Kubernetes での定義の例を示す。
apiVersion: v1
kind: Pod
spec:
containers:
- name: app
image: my-app:latest
ports: [{ containerPort: 8080 }]
- name: log-collector
image: fluent/fluent-bit:latest
volumeMounts:
- name: logs
mountPath: /var/log/app
volumes:
- name: logs
emptyDir: {}
サイドカー vs Lambda Layer
サイドカーと Lambda Layer の違いを以下にまとめる。
| 観点 | サイドカー (ECS/EKS) | Lambda Layer |
|---|---|---|
| 実行環境 | 別コンテナ | 同一プロセス |
| 通信 | localhost | 関数内呼び出し |
| 用途 | プロキシ、ログ収集 | 共通ライブラリ、ADOT |
| リソース | 独立した CPU/メモリ | Lambda のメモリを共有 |
サイドカーの注意点
サイドカーの注意点を以下にまとめる。
| 注意点 | 対策 |
|---|---|
| リソース消費 | サイドカーの CPU/メモリを制限 |
| 起動順序 | Init Container で依存を解決 |
| 複雑さ | 必要なサイドカーだけ追加 |
現場での応用を知るには関連書籍も役立つ。
この記事は役に立ちましたか?
関連用語
サービスメッシュ
マイクロサービス間の通信を透過的に管理するインフラ層で、トラフィック制御・認証・監視を提供する
Pod
Kubernetes の最小デプロイ単位で、1 つ以上のコンテナをまとめて管理するリソース
コンテナオーケストレーション
コンテナのデプロイ、スケーリング、ネットワーキングを自動管理するプラットフォーム
サイドカーインジェクション
Kubernetes で Pod にサイドカーコンテナを自動的に注入し、横断的関心事を透過的に追加する仕組み
Init コンテナ
Kubernetes でメインコンテナの起動前に初期化処理を実行する特殊なコンテナ
Namespace と cgroup
Linux コンテナの基盤技術で、プロセスの隔離とリソース制限を実現するカーネル機能
関連する記事
OS・低レイヤー本ガイド - コンピュータの仕組みを学ぶ技術書の選び方
OS、コンパイラ、ネットワークなど低レイヤーを学べる技術書の 4 ジャンルと、どこから始めるべきかの指針、賞味期限の見極め方を紹介します。
技術書を Kindle で読むコツ - 電子書籍ならではの活用術
技術書を Kindle で効率的に読むための具体的なテクニックを紹介します。ハイライト、検索、フォントサイズの調整など、紙にはない電子書籍の強みを活かす方法。
設計・アーキテクチャ本ガイド - 設計力を上げる技術書の選び方
ソフトウェア設計を学べる技術書をコード・モジュール・システムの 3 レイヤーに分類し、レベルに応じた読む順番の指針を紹介します。