Saltar al contenido principal
Version: 1.8.1

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

Advertencia

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 Notificaciones
    • notificaciones_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

  1. Bajar stack huarpe

    docker stack rm huarpe
  2. 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.