サイドカーパターン
メインコンテナと同じ Pod に補助コンテナを配置し、横断的関心事を分離する設計パターン
Kubernetes設計パターン
サイドカーパターンとは
サイドカーパターンは、メインのアプリケーションコンテナと同じ Pod に補助コンテナを配置し、ログ収集、監視、プロキシなどの横断的関心事をメインから分離する設計パターンである。
サイドカーのユースケース
| サイドカー | 役割 | 例 |
|---|---|---|
| ログ収集 | ログを集約・転送 | Fluent Bit |
| プロキシ | トラフィック制御、mTLS | Envoy (Istio) |
| 監視 | メトリクス収集 | ADOT Collector |
| シークレット | 秘密情報の注入 | Vault Agent |
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
| 観点 | サイドカー (ECS/EKS) | Lambda Layer |
|---|---|---|
| 実行環境 | 別コンテナ | 同一プロセス |
| 通信 | localhost | 関数内呼び出し |
| 用途 | プロキシ、ログ収集 | 共通ライブラリ、ADOT |
| リソース | 独立した CPU/メモリ | Lambda のメモリを共有 |
サイドカーの注意点
| 注意点 | 対策 |
|---|---|
| リソース消費 | サイドカーの CPU/メモリを制限 |
| 起動順序 | Init Container で依存を解決 |
| 複雑さ | 必要なサイドカーだけ追加 |
現場での応用を知るには関連書籍も役立つ。