Estudio de CKAD – Día 18

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