Ответ
Да, применял. Sidecar-паттерн предполагает запуск вспомогательного контейнера (sidecar) рядом с основным контейнером приложения в одном Pod (Kubernetes) или на одной ноде для предоставления общих инфраструктурных возможностей.
Типичные use-cases:
- Сетевой прокси / Service Mesh (например, Envoy, Linkerd).
- Сбор логов и метрик (Fluentd, Prometheus node-exporter).
- Аутентификация и авторизация (проxy-контейнер, проверяющий токены).
Пример манифеста Pod в Kubernetes с Sidecar (Envoy):
apiVersion: v1
kind: Pod
metadata:
name: product-service
spec:
containers:
- name: app # Основной контейнер приложения
image: my-registry/product-service:latest
ports:
- containerPort: 8080
- name: envoy-sidecar # Sidecar-контейнер
image: envoyproxy/envoy:v1.25-latest
ports:
- containerPort: 9901 # Админ-интерфейс
- containerPort: 15001 # Входящий трафик
volumeMounts:
- name: envoy-config
mountPath: /etc/envoy
volumes:
- name: envoy-config
configMap:
name: envoy-sidecar-config
Преимущества паттерна:
- Разделение ответственности: бизнес-логика отделена от инфраструктурного кода.
- Единообразие: все сервисы получают одинаковые возможности (логирование, TLS).
- Независимое обновление: sidecar можно обновлять без передеплоя основного приложения.
На практике часто используется в рамках сервисных сеток (Istio, Consul Connect), где sidecar инжектируется автоматически.