Como usar la estrategia de rolling upgrades para desplegar nuevas versiones, minimizando el impacto a nuestros usuarios:
Kubectl get deploy –o json: el output de todos los deployments que tenemos en nuestro sitio
Kubectl get deploy –o json | jq “{name:.metadata.name} + .spec.strategy.rollingUpdate": itera sobre los ítems y trae de la metadata la estrategia del rollingupdate default.
Esto va a mostrar los diferentes servicios.
MAX SURGE: cuantos pods se crean a partir de los que tengo, o sea que si hay 100 hasta 25 pods pueden estar creándose al mismo momento por default
MAX UNAVAILABLE: a lo sumo puede haber, en un determinado momento del deploy, un 25% de mis pods no disponibles por default.
Hacemos el rolling upgrade de la aplicación:
kubectl set image deploy worker worker=dockercoins/worker:v0.2
Cambiamos la imagen del deploy y le decimos que worker tenga la imagen dockercoins/worker:0.2
Si le mandamos una imagen que no existe o está rota, va a mantener un minimo de 25% de los nodos trabajando como antes y asi no interrumpir el funcionamiento del servicio.
Con kubectl rollout undo deploy worker hacemos un rollback a la versión anterior.
Para cambiar la estrategia de deployment: Kubectl edit deploy worker
Si pongo maxsurge en 1, solo se va a crear como maximo un pod nuevo por cada nuevo deployment. Si pongo maxunavailable en 0, no van a haber pods unavailables a la hora de hacer deployments. Esta estrategia es bastante conservadora: quiero crear de a uno y hasta que ese no este disponible, no cambiar nada.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?