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.

Une canonnière au-dessus d’un canyon orange, un éclaireur clampé sous l’aile. Une canonnière au-dessus d’un canyon orange, un éclaireur clampé sous l’aile.
Init + app
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: {}
Sidecar classique
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: {}
Sidecar natif
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

S’entraîner sur un cluster réel →