Sidecar Container
Sidecar Container
Sidecar Container laufen parallel zum Hauptcontainer im selben Pod und teilen sich Netzwerk und Storage.
Übersicht
Sidecar Container haben dieselbe Funktionalität wie der Hauptcontainer, mit einer Einschränkung:
Basis-Konfiguration
chart:
enabled: true
container:
image: myapp/api:latest
ports:
- name: http
containerPort: 8080
sidecar:
enabled: true
image: nginx:alpine
Anwendungsfälle
Logging-Sidecar
Ein Sidecar, der Logs sammelt und weiterleitet:
chart:
container:
image: myapp/api:latest
volumeMounts:
- name: logs
mountPath: /var/log/app
sidecar:
enabled: true
image: fluent/fluent-bit:latest
volumeMounts:
- name: logs
mountPath: /var/log/app
env:
- name: FLUENT_ELASTICSEARCH_HOST
value: elasticsearch.logging.svc.cluster.local
deploymentVolume:
volumes:
- name: logs
emptyDir: {}
Proxy-Sidecar
Ein Sidecar als Reverse Proxy oder Service Mesh:
chart:
container:
image: myapp/api:latest
ports:
- name: http
containerPort: 8080
sidecar:
enabled: true
image: envoyproxy/envoy:latest
env:
- name: UPSTREAM_HOST
value: localhost
- name: UPSTREAM_PORT
value: "8080"
Datenbank-Backup-Sidecar
Ein Sidecar für periodische Backups:
chart:
container:
image: postgres:14
ports:
- name: postgres
containerPort: 5432
sidecar:
enabled: true
image: mycompany/pg-backup:latest
env:
- name: BACKUP_SCHEDULE
value: "0 2 * * *"
- name: POSTGRES_HOST
value: localhost
- name: S3_BUCKET
value: my-backups
Volume-Sharing
Mit useContainerVolume: true übernimmt der Sidecar die Volume-Mounts des Haupt-Containers:
chart:
sidecar:
enabled: true
image: myapp/processor:latest
useContainerVolume: true
Konfigurationsoptionen
Ressourcen
chart:
sidecar:
enabled: true
image: fluent/fluent-bit:latest
resources:
limits:
cpu: 200m
memory: 256Mi
requests:
cpu: 50m
memory: 64Mi
Health Checks
Der Sidecar unterstützt dieselben Probe-Typen wie der Haupt-Container — einschließlich startupProbe (seit Version 1.18.0):
chart:
sidecar:
enabled: true
image: nginx:alpine
livenessProbe:
httpGet:
path: /health
port: 8081
initialDelaySeconds: 10
periodSeconds: 5
readinessProbe:
httpGet:
path: /ready
port: 8081
initialDelaySeconds: 5
periodSeconds: 3
startupProbe:
failureThreshold: 30
periodSeconds: 10
httpGet:
path: /
port: 8081
→ Details: Probes
Umgebungsvariablen
chart:
sidecar:
enabled: true
image: myproxy:latest
staticEnv:
- name: PROXY_MODE
value: "reverse"
env:
- name: CONFIG_FILE
value: /etc/proxy/config.yaml
extraEnv:
- name: DEBUG
value: "true"
Shared Volumes
Hauptcontainer und Sidecar können Volumes teilen:
chart:
container:
image: myapp/api:latest
volumeMounts:
- name: shared-data
mountPath: /data
- name: shared-config
mountPath: /config
sidecar:
enabled: true
image: myapp/processor:latest
volumeMounts:
- name: shared-data
mountPath: /data
- name: shared-config
mountPath: /config
deploymentVolume:
volumes:
- name: shared-data
emptyDir: {}
- name: shared-config
configMap:
name: app-config
Best Practices
- Begrenzen Sie Ressourcen für Sidecars, um den Hauptcontainer nicht zu beeinträchtigen
- Verwenden Sie Health Checks um sicherzustellen, dass der Sidecar funktioniert
- Teilen Sie Volumes nur wenn nötig für bessere Isolation
- Loggen Sie separat für einfacheres Debugging
- Verwenden Sie leichtgewichtige Images für Sidecars um Pod-Startzeiten zu minimieren