Aide-mémoire CKAD

exemple YAML Deployment k8s

Un Deployment possède un ReplicaSet. Scale et rollout sur le Deployment, pas sur les Pods.

Un officier observe un escadron identique tenir position autour d’une navette au sol. Un officier observe un escadron identique tenir position autour d’une navette au sol.
Créer
kubectl create deployment web --image=nginx:1.27 --replicas=3
YAML puis apply
kubectl create deployment web --image=nginx:1.27 --replicas=3 -o yaml --dry-run=client > deployment.yaml
# edit deployment.yaml
kubectl apply -f deployment.yaml
YAML
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: nginx
          image: nginx:1.27
          ports:
            - containerPort: 80
Rollout
kubectl scale deploy/web --replicas=5
kubectl set image deploy/web nginx=nginx:1.28
kubectl rollout status deploy/web
kubectl rollout history deploy/web
kubectl rollout undo deploy/web
kubectl get deploy,rs,po -l app=web

Champs

selector
Doit matcher template.metadata.labels. Immuable après create.
template
Le Pod. Les labels qu’un Service doit matcher vont ici, pas sur le Deployment.
replicas
Nombre de Pods voulu. Scaler le Deployment, pas les Pods.
containers.name
kubectl create deployment web --image=nginx nomme ceci nginx, pas web.
kubectl create deployment
Nom court : deploy. Le nom du conteneur est celui de l’image, pas du Deployment.
kubectl set image
Lance un rollout. Puis suivre avec rollout status.
kubectl rollout undo
Revient d’une révision. Ne pas supprimer les Pods pour rollback.

Pièges

  • selector.matchLabels et template.metadata.labels doivent matcher. Le selector est immuable après create.
  • kubectl create deployment web --image=nginx nomme le conteneur nginx, pas web.
  • Ne pas supprimer les Pods pour rollback. kubectl rollout undo deploy/<name>.
  • Le nom habituel est deployment.yaml. deploy.yml est le même fichier.

Doc officielle Deployments

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