La continuacion del ejercicio anterior es actualizar el frontend con rolling update. Curioso que hoy estuve peleandome con ansible automation platform en OC y tuve que hacer un monton de rollouts.
El enunciado
Modifica el Deployment frontend para actualizar la imagen a nginx:1.21-alpine sin downtime (rolling update).
He tenido muchos dias de vago, asi que primero revisare mi ambiente a ver si no lo borre.
kubectl get pods –all-namespaces deberia bastar.

Felizmente si estan ‘exam-ns’
Sigamos, entonces no recuerdo que tiene en esos pods, un describe deberia bastar. Del pod o del deployment
kubectl desbribe deployment frontend -n exam-ns
kubectl describe pod frontend -n exam-ns

Estamos en nginx:stable asi que debemos cambiar a Alpine, si recuerdo bien estos ejercicios los hice declarativos,
Asi que con editar mi archivo deberia tener
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend
namespace: exam-ns
spec:
replicas: 3
selector:
matchLabels:
app: frontend
template:
metadata:
labels:
app: frontend
spec:
containers:
- name: frontend
image: nginx:1.21-alpine
ports:
- containerPort: 80
Pero llegamos a una parte que no se.
¿Como se aplica con rollout el declarativo?
Basicamente kubectl apply -f archivo.yaml
¿Como se aplica con edit / imperativo?
❯ kubectl set image deployment frontend frontend=nginx:1.21-alpine -n exam-ns
❯ kubectl edit deployment frontend -n exam-ns
El edit necesita antes este export porque VI apesta, prefiero VIM
export KUBE_EDITOR=”vim”
Y ¿como se monitorea?
kubectl rollout status nombredeploy -n exam-ns
kubectl rollout history nombredeploy -n exam-ns
¿Y de bonus como hago rollback y rollout otra vez?
Asi se puede ver el detalle de la version
kubectl rollout history deployment/nginx-deployment --revision=2
❯ kubectl rollout undo deployment/frontend -n exam-ns
Algo interesante cada rollout undo crea una nueva version incremental, se puede entrar en un loop de undos
Tambien se puede pausar
kubectl rollout pause nombredeploy -n exam-ns
Eso es todo por hoy porque me queda poca bateria.
Ah cierto las referencias:
https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-back-a-deployment
https://kubernetes.io/docs/reference/kubectl/generated/kubectl_rollout