Aide-mémoire CKAD
exemple YAML sidecar k8s
Même Pod, conteneur en plus. Init doit finir. Un sidecar reste up et partage les volumes.
apiVersion: v1
kind: Pod
metadata:
name: web
spec:
initContainers:
- name: fetch
image: busybox:1.36
command: ["sh", "-c", "echo hi > /data/index.html"]
volumeMounts:
- name: html
mountPath: /data
containers:
- name: web
image: nginx:1.27
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
volumes:
- name: html
emptyDir: {}
spec:
containers:
- name: app
image: nginx:1.27
volumeMounts:
- name: logs
mountPath: /var/log/nginx
- name: shipper
image: busybox:1.36
command: ["sh", "-c", "tail -F /var/log/nginx/access.log"]
volumeMounts:
- name: logs
mountPath: /var/log/nginx
volumes:
- name: logs
emptyDir: {}
spec:
initContainers:
- name: shipper
image: busybox:1.36
restartPolicy: Always
command: ["sh", "-c", "tail -F /var/log/app.log"]
volumeMounts:
- name: logs
mountPath: /var/log
containers:
- name: app
image: nginx:1.27
volumeMounts:
- name: logs
mountPath: /var/log
volumes:
- name: logs
emptyDir: {}
Champs
- initContainers
- Vont au bout, dans l’ordre, avant les conteneurs app. Un init en échec bloque le Pod.
- restartPolicy
- Always sur un initContainer = sidecar natif. Il reste up avec l’app.
- emptyDir
- Comment les conteneurs partagent les fichiers. Même name de volume partout.
Pièges
- Les init containers vont au bout, dans l’ordre, avant les conteneurs app. Un init en échec bloque le Pod.
- Sidecar classique = 2e item dans containers[]. Sidecar natif = initContainers[] + restartPolicy: Always.
- Partager les fichiers avec emptyDir. Même name de volume dans chaque volumeMounts.
Doc officielle Init containers Sidecar containers