Aide-mémoire CKAD
exemple YAML Deployment k8s
Un Deployment possède un ReplicaSet. Scale et rollout sur le Deployment, pas sur les Pods.
kubectl create deployment web --image=nginx:1.27 --replicas=3
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
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
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