Despliegues Controlados
Es muy común desplegar nuevas versiones en nuestros clusters, lo que se hace es generar una imagen de docker nueva con una nueva versión de nuestro código o un feature nuevo o bugfix, por lo tanto es necesario llevar la nueva versión a nuestro cluster de la manera más fiel posible y si hay un error necesitamos de K8 nos ayude a evitar el despliegue sin tener una versión completa, para poder hacer un rollback y minimizar el impacto a nuestros usuarios
A continuación se muestra la estrategía rolling upgrates, que es el mecanismos que Kubernetes utiliza para actualizar nuestra aplicación usando los parámetros maxSurge y maxUnavailable
Se listan los diferentes servicios que están desplegados en nuestro cluster
En este ejemplo tenemos el servicio “hasher”, el maxUnavailable significa que a lo sumo puede haber un 25% en un determinado momento del deploy que nuestros nodos no estén disponibles, por lo tanto tendremos un 75% disponibles para responder al tráfico.
El maxSurge quiere decir cuantos Pods se crean a partir de los que tengo, es decir si tengo 100 Pods, hasta 25 se pueden estar creando a partir de los 100 que tengo
Para poder realizar el deploy se ejecuta el siguiente comando:
kubectl set image deploy <name> worker=<image>:<tag>
kubectl set image deploy worker worker=dockercoins/worker>v0.2
Posteriormente se puede visualizar los cambios a nivel de replica sets y servicios.
Si se desea realizar el cambio de la configuración del maxSurge o maxUnavalible se debe usar el siguiente comando:
kubectl edit deploy worker
Para volver nuestra imagen a su estado anterior podemos usar este comando:
kubectl rollout undo deploy worker