Quantcast
Channel: Blog Virtualizacion
Viewing all articles
Browse latest Browse all 679

Kubernetes: RollingUpdate y RollBacks de Contenedores

$
0
0

Kubernetes: RollingUpdate y RollBacks de Contenedores

Una de las mayores ventajas que veo al usar Kubernetes, es la facilidad de hacer despliegues de nuevas versiones de aplicaciones (Updates) y poder volver a atrás (Rollbacks) relativamente rápido si hay un problema.

Lo vamos a explicar con un despliegue clásico a través de un Deployment de Nginx. Imaginaros que tenéis corriendo un contenedor Nginx. Generamos un contenedor mediante un Deployment que se llama «nginx»:

raulunzue@KBMASTER:~$ kubectl create deployment nginx --image=nginx:1.17.9
deployment.apps/nginx created

Revisamos en el propio contenedor que la versión es la adecuada:

raulunzue@KBMASTER:~$ kubectl exec -it nginx-5c95c56f6f-h4767 -- /bin/bash
root@nginx01-nginx-5c95c56f6f-h4767:/# nginx -v
nginx version: nginx/1.17.9

Ahora vamos a forzar un update a la versión 1.17.10:

raulunzue@KBMASTER:~$ kubectl set image deploy nginx nginx=nginx:1.17.10 --record
deployment.apps/nginx image updated

Si observamos el comportamiento, la versión antigua del contenedor, se muere y arranca un nuevo contenedor con la nueva versión:

raulunzue@KBMASTER:~$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
nginx-5c95c56f6f-h4767 1/1 Terminating 0 3m3s 10.69.2.132 kubernetes02
nginx-5df596bbf9-rmrx9 1/1 Running 0 14s 10.69.5.63 kubernetes01

Comprobamos la versión nuevamente, pero del nuevo contenedor:

raulunzue@KBMASTER:~$ kubectl exec -it nginx-5df596bbf9-rmrx9 -- /bin/bash
root@nginx01-nginx-5df596bbf9-rmrx9:/# nginx -v
nginx version: nginx/1.17.10

Si queremos volver a la versión anterior, podemos consultar el histórico mediante:

raulunzue@KBMASTER:~$ kubectl rollout history deployment nginx
deployment.apps/nginx
REVISION CHANGE-CAUSE
1
2 kubectl set image deploy nginx nginx=nginx:1.17.10 --record=true

kubernetes-rollingupdate-rollback-de-contenedores-1

Observaremos al hacer el rollback con el siguiente comando, que el proceso es a la inversa, se termina el nuevo contenedor y se ejecuta otro con la versión antigua:

raulunzue@KBMASTER:~$ kubectl rollout undo deployment nginx --to-revision=1
deployment.apps/nginx rolled back

kubernetes-rollingupdate-rollback-de-contenedores-2

Volvemos a comprobar la versión de Nginx:

raulunzue@KBMASTER:~$ kubectl exec -it nginx-5c95c56f6f-8rd49 -- /bin/bash
root@nginx-5c95c56f6f-8rd49:/# nginx -v
nginx version: nginx/1.17.9

Si os parece interesante, el poder es que lo podéis hacer con otros objetos como deployments, daemonset…

Espero os parezca interesante…

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Kubernetes: RollingUpdate y RollBacks de Contenedores se publicó primero en Blog Virtualizacion.


Viewing all articles
Browse latest Browse all 679