RELOADER para rollout en Kubernetes
En esta entrada RELOADER para rollout en Kubernetes, vamos a ver una muy útil herramienta que nos va a permitir realizar cambios en nuestras configuraciones y redesplegar nuestros Pods con esos cambios.
Una de las tareas más comunes cuando desarrollamos y desplegamos nuestras aplicaciones en Kubernetes es realizar algún cambio en nuestras configuraciones, en nuestro configmap o secret. Estos cambios por lo general impactan o deberían impactar en nuestros despliegues. Pero en muchas ocasiones no llegamos a redesplegar el deployment, Pod, statefulset etc, por lo que el cambio nunca será aplicado.
Es más, cuando un cambio puede afectar a varios deployment, el tema se complica teniendo que aplicar cambios manuales o despliegues no automatizados.
Rollout para desplegar aplicaciones por cambios
Seguro que el problema de tener que redesplegar una aplicación por cambios de configuración te ha sucedido más de una vez. Una de las soluciones que llegue a implementar fue la utilización de un sidecar.
El sidecar que implemente se encargaba de analizar si algún cambio en un fichero de configuración (secret o configmap) había sucedido, en tal caso, reiniciaba el o los pods correspodientes. Aunque esta es una solución que funciona, si ya existe algo para que inventarlo.
Por lo que partiendo de evitar trabajar y reinventar algo que ya existe al final dí con una solución más adecuada. Una herramienta para Kubernetes que se encargaba justo de eso, Reloader.
Configuración con Reloader
Reloader es una herramienta para kubernetes que nos va a permitir detectar cambios en nuestros Configmaps o Secrets. Tan solo hay que configurarlo en nuestro cluster de kubernetes, y añadir una anotación en nuestro deployment con el Configmap o Secret que le afectará.
El uso de reloader es muy simple e intuitivo através de anotaciones, una vez se ha instalado con éxito en nuestro clúster, podemos comenzar a usarlo.
Para hacer uso de esta herramienta vamos a añadir en los deployment la configuración necesaria.
Si queremos que haga un reload basada en secrets:
kind: Deployment metadata: annotations: secret.reloader.stakater.com/reload: "secret"
y si queremos ampliar el número de secrets, lo separamos por comas.
Si queremos, por ejemplo, realizar un rollout con un configmap aplicaremos el mismo procedimiento que con los secrets.
kind: Deployment metadata: annotations: configmap.reloader.stakater.com/reload: "configmap-1,configmap-2"
o si quieres añadir ambos, tanto recargar para secrets como para configmap:
apiVersion: apps/v1 kind: Deployment metadata: annotations: secret.reloader.stakater.com/reload: "Secret-001,Secret-002" configmap.reloader.stakater.com/reload: "ConfigMap-001,ConfigMap002"
Autodescubrimiento con Reloader
Aunque puedes añadir manualmente los secrets con configmap en los que detectar los cambios, uno de los puntos fuertes es su autodescubrimiento.
Por lo general, el nombre del deployment y del configmap o secret están relacionados. Es decir, a lo mejor el deployment se llama foo y el configmap foo-configmap, y en este caso podría ser autodescubierto el cambio.
kind: Deployment metadata: annotations: reloader.stakater.com/auto: "true"
Conclusión
En este artículo usando RELOADER para rollout en Kubernetes, hemos visto lo útil de esta herramienta para hacer cambios en nuestras configuraciones y que sean aplicadas. Estas tareas que suelen ser tediosas se simplifican en gran medida gracias a herramientas como estas.
Si necesitas más información puedes escribirnos un comentario o un correo electrónico a refactorizando.web@gmail.com y te ayudaremos encantados!
No te olvides de seguirnos en nuestras redes sociales Facebook o Twitter para estar actualizado.