Actualizar desde versiones 1.7 a 1.8
Consideraciones
Esta guía lo lleva en el proceso de actualizar una instalación pre-existente de EEI. Tenga en cuenta que:
- La versión requerida de EEI en ejecución es la v1.7.x (última al generar esta guía, no se probaron versiones previas)
- Se actualiza toda la solución EEI que se despliega con Docker
Arai-Notificaciones
Es requisito que el motor de base de datos donde se desplegara la base de notificaciones posea implementada la función gen_random_uuid()
(disponible a partir de la versión 13)
En esta versión se incorpora un nuevo módulo llamado Arai-Notificaciones, el cual permite el envío de notificaciones desde los distintos módulos. En esta versión es utilizado para el envio de correos electrónicos desde el Portal de Proveedores.
Configuración inicial
Para la incorporación del mismo al despliegue, hace falta definir previamente una serie de configuraciones:
-
Se deben crear 3 secretos que contendrán información sensible
notificaciones_db_pass
: Password de la conexión con la base de datos.notificaciones_api_users
: Json que define pares de usuario/password para la autenticación de la API de Notificacionesnotificaciones_dsn_seguro
: Corresponde al DSN con los datos de conexión al servicio de envío de emails.
-
La distribución provee el script de bash
secrets.sh.dist
para ejemplificar como inicializar todos los valores requeridos.
Puede crear estos secrets (en caso de no haberlo generado con el secret.sh.dist de la ultima versión) de la siguiente forma:
printf "postgres123" | docker secret create notificaciones_db_pass -
printf '[["proveedores","proveedores123"]]' | docker secret create notificaciones_api_users -
printf "smtp://user:pass@mailer" | docker secret create notificaciones_dsn_seguro -
Cambiar dominio
En los archivos de configuración se asume el dominio uunn.local
, para cambiarlo por el dominio definitivo puede utilizar el siguiente comando (reemplace universidad.edu.ar
por el dominio real)
sed -i 's/uunn.local/universidad.edu.ar/g' \
prod/arai/notificaciones.yml \
prod/arai/notificaciones.env
Creación de Base de Datos
Crear la base de datos como recurso externo, recordar que la configuración para la misma se debe incluir en el secreto previo y también en archivo prod/arai/notificaciones.env
DB_HOST=db-notificaciones
DB_PORT=5432
DB_DBNAME=arai_notificaciones
DB_USERNAME=postgres
DB_PASSWORD_FILE=/run/secrets/notificaciones_db_pass
DB_SCHEMA=notificaciones
Inicializar la base de datos
Este paso se lleva a cabo mediante el despliegue de la siguiente tarea que crea la estructura de la base de datos de Araí-Notificaciones.
docker stack deploy \
--with-registry-auth \
-c prod/arai/util/notificaciones_migrar_base.yml \
notificaciones_db
Puede verificar el estado de ejecución del mismo de la siguiente manera:
docker service logs notificaciones_db_migrar -f
Una vez finalizado con éxito, puede borrar el stack:
docker stack rm notificaciones_db
Desplegar el stack
Una vez realizada la configuración e inicialización de la base de datos, pasamos a desplegar el módulo de la siguiente forma:
docker stack deploy --with-registry-auth -c prod/arai/notificaciones.yml notificaciones
Usuarios
La nueva versión de Arai-Usuarios incorpora varios cambios y/o mejoras, entre ellas:
- Eleva requerimiento de plataforma a PHP 8.1
- Incorpora registro de seguimiento y auditoria de eventos
- Incorpora cmd para automatizar la gestion de aplicaciones y conectores
- Elimina soporte para templates de login tipo legacy
- El deploy se hace con imagenes rootless lo que fuerza cambio de puerto a 8080
Puesta en mantenimiento
Inicialmente, bajamos el stack usuarios
para evitar acceso y tenerlo en mantenimiento.
docker stack rm usuarios
Atención: esto pondrá a todo el servicio de SSO fuera de servicio
Realizar el backup de las bases de datos LDAP y PostgreSQL de manera preventiva.
Nota: La nueva versión de Arai-Usuarios se desplegará utilizando imagenes rootless por lo que es necesario realizar un ajuste en los permisos de archivos generados con las versiones previas, esto es:
- exportaciones para actualización de versión
- assets de usuarios y/o aplicaciones
Se incluye una job para llevar adelante dicha modificación
Actualizar base PostgreSQL
Sin importar como se ejecuta la base PostgreSQL, es necesario realizar la exportación de datos de instancia local de la siguiente manera:
docker stack deploy --with-registry-auth --compose-file prod/arai/util/usuarios_exportar_instalacion.yml usuarios_export
docker service logs usuarios_export_idm -f
Esperar a que exporte y se detenga la ejecución. Si tuvo éxito la operación, eliminar el stack temporal usuarios_export
:
docker stack rm usuarios_export
En este punto debemos modificar los permisos de los archivos exportados, de lo contrario no podrán ser utilizados por los pasos posteriores, lo hacemos mediante:
Nota: Recuerde realizar los ajustes correspondientes si utiliza volumenes remotos (ej: NFS)
docker stack deploy --with-registry-auth --compose-file prod/arai/util/usuarios_cambia_permisos.yml usuarios_cambia_permisos
docker service logs usuarios_cambia_permisos_idm -f
Si no se observan inconvenientes durante la ejecución de la job, al finalizar
docker stack rm usuarios_cambia_permisos
Usando los datos de instancia local exportados previamente, realizar la migración de la base de datos PostgreSQL:
docker stack deploy --with-registry-auth --compose-file prod/arai/util/usuarios_actualizar_base.yml usuarios_actualizar_base
docker service logs usuarios_actualizar_base_idm -f
Nota: tenga en cuenta que tanto la exportación como actualización, utilizan un directorio "files" donde se descargan datos. Este directorio tiene que estar para ambas tareas, por lo que se ejecutan en el mismo nodo (por ej, mediante la constraint node.role=manager).
Finalmente, si la migración tuvo éxito, eliminar el stack temporal usuarios_actualizar_base
:
docker stack rm usuarios_actualizar_base
Actualizar las configuraciones
En este punto, debemos re-crear los secrets
(de otros módulos) que involucran a Arai-Usuarios, ya que al ejecutarse el proceso Apache con un usuario no privilegiado, fue necesaria la exposición de puertos alternativos en el contenedor.
Por ello, todo secret
que se corresponda a una configuración que usa la URL interna (no via traefik) de la API de Arai-Usuarios debe ser eliminado, su valor ajustado especificando el puerto nuevo (8080
) y vuelto a crear.
docker secret rm docs_conexion_usuarios
printf "{base_uri:'http://usuarios-api:8080/api/v1/usuarios',method:'basic',user:'documentos',password:'ponemeunbuenpassword'}" | docker secret create documentos_conexion_usuarios -
Atención: para eliminar el secret, primero tiene que eliminar el stack que lo esté utilizando. Ej, documentos.
Asi mismo, debemos ajustar las configuraciones mediante variables de entorno que involucren acceso a los contenedores de Arai-Usuarios. Ver mas detalles acá.
Realizar el despliegue
Finalizada la nueva configuración y la migración pertinente de los datos, hay que volver a desplegar el stack para dejar operativo Arai-Usuarios:
docker stack deploy --with-registry-auth --compose-file prod/arai/usuarios.yml usuarios
Si lo desea puede ejecutar una comprobación para verificar el correcto estado de los servicios.
Huarpe
Actualizar variables y secrets
En la versión 3.3 de Huarpe se agregaron nuevas configuraciones como variables de entorno y nuevos secrets. Todas se detallan acá.
Todas estas configuraciones, se deben ver reflejados en el archivo huarpe.env.
Actualizar el despliegue
-
Bajar stack huarpe
docker stack rm huarpe
-
Desplegar las nuevas versiones del servicio
docker stack deploy --with-registry-auth -c prod/arai/huarpe.yml huarpe
1.8.0 a 1.8.1
Sudocu
A partir de esta versión se incorpora herramientas auxiliares para el monitoreo de Sudocu. Remitirse a la documentación de instalación.
Antes de actualizar
Antes de actualizar es necesario realizar un backup de la base de datos.
Borrar el stack actual:
docker stack rm sudocu
Nota: esto elimina tanto los servicios del stack como los configs (que levantan los archivos .json de configuración). Si necesita, puede actualizarlos en este punto.
Actualizar base PostgreSQL
Finalmente, ejecutamos el proceso de migración de la base de datos.
docker run --rm \
--env SUDOCU_DB_HOST=ip-host-db-sudocu \
--env SUDOCU_DB_NAME=sudocu \
--env SUDOCU_DB_PORT=5432 \
--env SUDOCU_DB_USER=postgres \
--env SUDOCU_DB_PASSWORD=postgres \
ungs/sudocu-db-instalador:1.4.17
Nota: Tener en cuenta que
SUDOCU_DB_HOST
debe apuntar al host donde corre el PostgreSQL que contiene dicha base.
Desplegar la nueva versión
Realizar nuevo deploy:
docker stack deploy --with-registry-auth --compose-file prod/sudocu/sudocu.yml sudocu
Nota: Tener en cuenta que en muchos casos hay nuevas opciones en los JSON de configuración (archivo config-api-server.json), que requieren ser actualizados. Todas se detallan acá. Se sugiere revisar esto antes de desplegar nuevamente.