Actualizar desde versiones 1.13 a 2.0
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.13.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-Documentos
En esta versión de Araí-Documentos se incluyen nuevas funcionalidades en la gestión de los repositorios de documentos. https://documentacion.siu.edu.ar/arai/documentos/
Tambien se distribuyen nuevos servicios opcionales cuya documentación se encuentra en la sección del despliegue de Araí-Documentos Esta versión soporta el uso de multiples repositorios de documentos y archivos en simultáneo, pero se ofrece un mecanismo para continuar usando el repositorio de documentos vigente configurando nuevas variables de entorno.
Actualizar variables
En la versión 2.0 de Arai-Docs se agregaron nuevas variables de entorno para la gestion de los repositorios de documentos. Los cambios se detallan acá.
Para configurar el repositorio por defecto usado para almacenar documentos y archivos, se debe definir los parámetros de conexión en las siguientes variables de entorno dependiendo de si se utiliza un repositorio como nuxeo o uno compatible con S3. Al momento de actualizar a la versión 2.0, el repositorio vigente usado para el almacenamiento de documentos/archivos es el que debe ser configurado como repositorio por defecto.
Conexión con Nuxeo
STORAGE_TYPE: Debe especificarRDISTORAGE_HOST: Es la url de nuxeo, debe apuntar a la API CMIS < url-host-nuxeo >/nuxeo/atom/cmis/STORAGE_USUARIO: API User de NuxeoSTORAGE_CLAVE: Password asociada al User anterior
Conexión con S3
En caso de que opte por utilizar la solución de object storage de S3, debe configurar y agregar de ser necesario las siguientes variables:
STORAGE_TYPE: Debe especificarS3STORAGE_ENDPOINT: Configuracion del endpoint donde se encuentran los buckets.STORAGE_KEY: Key para autenticar contra el bucket.STORAGE_SECRET: Secret para autenticar contra el bucket.STORAGE_REGION: Region donde se encuentra el bucket. Ej:us-west-2.STORAGE_BUCKET: Nombre del bucket. Ejemplo:bucket_test.STORAGE_VERSION: Version del servicio web utilizado. Ejemplo:2006-03-01olatest.
Bajar stack docs-api
docker stack rm docs
Actualizar Base de Datos
-
Realizar el backup de PostgreSQL de manera preventiva
-
Desplegar el servicio que actualiza la base de datos
docker stack deploy --with-registry-auth --compose-file prod/arai/util/docs_migrar_base.yml docs-migrar-base
Se puede observar el avance del proceso de migración en el log del servicio. Finalizada la migración, se puede eliminar dicho despliegue del servicio
docker service logs docs-migrar-base_migrar-base -f
docker stack rm docs-migrar-base
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/docs.yml docs
Arai-Usuarios
Se presenta como una versión con grandes cambios internos. Las principales novedades de Arai-Usuarios son:
- la integración de la subcomponente de Arai-Documentos que maneja archivos para almacenar imágenes del usuario y aplicación
- la integración de Araí-Notificaciones para el envío de los emails
- nuevos servicios del stack
workerpara el procesamiento en segundo plano.
Todos los cambios se detallan acá.
Bajar el stack
docker stack rm usuarios
Incorporar nuevos secretos
Una vez realizado dichos backup, hay que agregar un nuevo secreto requerído en esta nueva version de Arai-Usuarios para el correcto despliegue del servicio:
-
usuarios_conexion_archivos: Parámetros de conexión con la Api de Araí-Archivos -
usuarios_conexion_notificaciones: Parámetros de conexión con la Api de Araí-Notificaciones -
La distribucion provee el script de bash
secrets.sh.distpara ejemplificar como inicializar todos los valores requeridos.
Puede crear el secret usuarios_conexion_archivos y usuarios_conexion_notificaciones (en caso de no haberlo generado con el secret.sh.dist de la ultima versión) de la siguiente manera:
printf '[["documentos", "docs123", "http://docs_api-archivos:8080/docs/rest/archivos/v1/"]]' | docker secret create usuarios_conexion_archivos -
printf '[["usuarios", "usuarios123", "http://notificaciones-api:8080/api/v1/"]]' | docker secret create usuarios_conexion_notificaciones -
Eliminar variables no utilizadas
Dado que el envío de los mails se delega formalmente en el servicio de Arai-Notificaciones, ya no son necesarias las variables de entorno que especificaban la forma de conectarse con un SMTP.
Se recommienda por lo tanto, eliminar las variables de entorno siguientes para evitar confusiones sobre la responsabilidad del envío de mails.
MAILER_HELO=mail.unx.edu.ar
MAILER_HOST=smtp.googlemail.com
MAILER_PORT=587
MAILER_FROM=yo@midominio.com
MAILER_SEGURIDAD=ssl
MAILER_AUTH=1
MAILER_USUARIO=usuario
MAILER_CLAVE=clave
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
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
Migrar los assets existentes
Como parte del proceso de mejora y siendo que la gestión de los assets de Arai-Usuarios (avatars, iconos de aplicaciones) necesitaba una alternativa a un volumen de red, se decidió hacer uso de la API que expone un subcomponente de Arai-Documentos que se encarga de realizar la gestión de archivos.
Esta subcomponente que por comodidad denominaremos Arai-Archivos aunque no tiene entidad propia, puede desprenderse del uso de Arai-Documentos y desplegarse como un único servicio.
Como parte de dicha integración entonces, se trasladan los assets de Arai-Usuarios hacia ese servicio, quedando únicamente una copia cacheada del archivo original.
Este proceso de migración lo llevamos adelante desplegando la siguiente job:
docker stack deploy --with-registry-auth --compose-file prod/arai/util/usuarios_migrar_assets.yml usuarios_migrar_assets
docker service logs usuarios_migrar_assets_idm -f
Finalmente, si la migración tuvo éxito, eliminar el stack temporal usuarios_migrar_assets:
docker stack rm usuarios_migrar_assets
Desplegar servicios complementarios
Para agilizar el procesamiento de ciertos flujos de trabajo se decidió descargar el envío de los mails en el servicio de envío de Notificaciones.
Puede realizar el despliegue del mismo siguiendo las instrucciones presentes aquí.
Desplegar el stack
Finalmente, solo debemos desplegar el módulo de la siguiente forma:
docker stack deploy --with-registry-auth -c prod/arai/usuarios.yml usuarios
Como los assets ahora quedan en una cache descartable podemos utilizar un service incluido en el mismo stack para hacer el warm-up.
docker service scale usuarios_cache-warmer=1 && docker service logs -f usuarios_cache-warmer
Si se completa exitosamente el proceso de llenado de la cache de assets se puede volver a escalar a 0 dicho service
Luego de ello, podemos eliminar nuestro volumen antiguo para no dejar pendientes
docker volume rm usuarios_usuarios_assets
SUDOCU
Dentro de esta actualización del ecosistema de expedientes a la versión 2.0, el componente SUDOCU se actualiza a la versión 2.1.0, que trae grandes cambios en el deploy. El procedimiento a seguir depende de la versión de SUDOCU desde la que se parte, por lo que a continuación se describen por separado los dos caminos posibles, cada uno con todos sus pasos. En ambos casos la actualización se realiza en un único despliegue, sin necesidad de pasar por versiones intermedias.
El camino a seguir se determina por la versión de SUDOCU que se tiene instalada, con independencia de la versión del ecosistema de expedientes desde la que se venga. Las versiones del ecosistema y las de SUDOCU no se corresponden de forma estricta.
Este apartado cubre solo lo relativo al deploy. Para las novedades funcionales, consultar el Changelog oficial de SUDOCU y la página oficial de SUDOCU.
Identifique su caso según la versión de SUDOCU que tiene desplegada y siga únicamente el bloque que corresponda:
| Desde SUDOCU 1.6.x | Desde SUDOCU 1.4.x | |
|---|---|---|
¿Cuenta con sudocu-web / api-server2? | Sí | No |
| ¿Requiere reconfigurar SAML en Araí-Usuarios? | No | Sí |
Servicio sudocu-login | Ya estaba eliminado | Se elimina en este salto |
Servicio gestion | Se elimina en este salto | Se elimina en este salto |
Actualización desde SUDOCU 1.6.x
Estas instalaciones ya cuentan con sudocu-web, api-server2 y la autenticación SAML migrada, por lo que la actualización se limita a los cambios propios de esta versión.
Cambios de deploy que introduce esta versión:
- Se elimina el servicio
gestiondel stack (y su configconfig-sudocu-gestion.json). El serviciowebpasa a llamarsesudocu-web. - Se agrega la sección
araienconfig-api-server.json(conexión con Araí-Personas y Araí-Usuarios), que requiere dos secretos nuevos:arai_personas_api_passwordyarai_usuarios_api_password. - Cambia el ruteo de Traefik para Socket.IO en
api-server(routers separados para polling y websocket). - MPD y MPC no cambian de arquitectura, solo reciben ajustes menores de ruteo en Traefik.
Pasos:
-
Realizar un backup de la base de datos de manera preventiva.
-
Borrar el stack actual:
docker stack rm sudocu
- Actualizar el secreto
sudocu-api-serverpara incorporar los nuevos camposarai_personas_api_passwordyarai_usuarios_api_password. Como los secretos de Docker son inmutables, hay que recrearlo:
docker secret rm sudocu-api-server
docker secret create sudocu-api-server ./prod/sudocu/sudocu-api-server-secret.json
-
Revisar
config-api-server.jsone incorporar los parámetros nuevos de esta versión. Los principales:arai(obligatorio): nueva sección con las URLs y usuarios de conexión a las APIs de Araí-Personas y Araí-Usuarios. Las contraseñas correspondientes son las que se agregaron al secreto en el paso anterior.firma.sistemas_origen: identifica a SUDOCU como sistema de origen ante Araí-Documentos.throttler: límites de tasa de peticiones (viene deshabilitado por defecto).queue: nuevos parámetros de gestión de colas (remove_on_complete,remove_on_fail,job_timeout).- Nuevos flags funcionales (
vista_area,puedo_cancelar_comunicacion,copiar_archivos_adjuntos—ahora es un objeto en lugar de un booleano—, etc.), detallados en el Changelog.
Como regla general, compare su
config-api-server.jsoncon el archivo de configuración por defecto del módulo e incorpore todo parámetro que no tenga. -
Ejecutar la 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:2.1.0
Nota:
SUDOCU_DB_HOSTdebe apuntar al host donde corre el PostgreSQL que contiene dicha base.
- Desplegar la nueva versión:
docker stack deploy --with-registry-auth -c prod/sudocu/sudocu.yml sudocu
Actualización desde SUDOCU 1.4.x
Estas instalaciones todavía tienen el login tradicional (sudocu-login) y no cuentan con sudocu-web ni api-server2. Por eso, además de los cambios propios de esta versión, este salto incorpora la migración de arquitectura que SUDOCU introdujo en la versión 1.5.0. Todo se aplica en un mismo despliegue.
Cambios de deploy que introduce este salto:
- Se incorpora
api-server2, nuevo backend en NestJS (/api2) que convive conapi-server(legado). - Se incorpora
sudocu-web, nuevo frontend unificado que reemplaza asudocu-logincomo punto de entrada. - Se elimina el servicio
sudocu-login. - Se elimina el servicio
gestiondel stack (y su configconfig-sudocu-gestion.json). - Se agrega la sección
araienconfig-api-server.json(conexión con Araí-Personas y Araí-Usuarios), que requiere dos secretos nuevos:arai_personas_api_passwordyarai_usuarios_api_password. - Cambia el ruteo de Traefik para Socket.IO en
api-server(routers separados para polling y websocket). - MPD y MPC no cambian de arquitectura, solo reciben ajustes menores de ruteo en Traefik.
Pasos:
- Ajustar el dominio en el
sudocu.ymlde esta versión (que ya incluye los nuevos serviciossudocu-webyapi-server2), reemplazandouunn.localpor el dominio real del despliegue:
sed -i 's/uunn.local/universidad.edu.ar/g' \
prod/sudocu/sudocu.yml
- En la aplicación SUDOCU dentro de Araí-Usuarios, solapa SAML, reconfigurar:
- Entity ID:
https://uunn.local/sudocu/ - Assertion Consumer Service (ACS):
https://uunn.local/sudocu/api2/auth/saml/callback - Single Logout Service (SLS):
https://uunn.local/sudocu/api2/auth/idp/logout
-
Realizar un backup de la base de datos de manera preventiva.
-
Borrar el stack actual:
docker stack rm sudocu
- Actualizar el secreto
sudocu-api-serverpara incorporar los nuevos camposarai_personas_api_passwordyarai_usuarios_api_password. Como los secretos de Docker son inmutables, hay que recrearlo:
docker secret rm sudocu-api-server
docker secret create sudocu-api-server ./prod/sudocu/sudocu-api-server-secret.json
-
Revisar
config-api-server.json. Al acumular la migración de 1.5.0, esta revisión es más extensa que en el otro caso. Además de los parámetros propios de esta versión, hay que contemplar los que se incorporaron entre 1.5.0 y 1.6.x.Parámetros propios de esta versión:
arai(obligatorio): nueva sección con las URLs y usuarios de conexión a las APIs de Araí-Personas y Araí-Usuarios. Las contraseñas correspondientes son las que se agregaron al secreto en el paso anterior.documentos.sistemas_origen: identifica a SUDOCU como sistema de origen ante Araí-Documentos.throttler: límites de tasa de peticiones (viene deshabilitado por defecto).queue: nuevos parámetros de gestión de colas (remove_on_complete,remove_on_fail,job_timeout).- Nuevos flags funcionales (
vista_area,puedo_cancelar_comunicacion,copiar_archivos_adjuntos—ahora es un objeto en lugar de un booleano—, etc.), detallados en el Changelog.
Parámetros arrastrados de la migración 1.5.0 → 1.6.x:
- URLs de Araí-Documentos versionadas (
documentos.url,documentos.url_info,documentos.api,documentos.api_front): ahora incluyen la versión/v1/en la ruta. Actualícelas. custom_menu: menú de ayuda y links útiles configurable.- Flags como
email_obligatorio(engestiony enmpc),vista_rapida_enviados,monitoreo, entre otros.
Como regla general, compare su
config-api-server.jsoncon el archivo de configuración por defecto del módulo e incorpore todo parámetro que no tenga. Puede consultar el listado completo de parámetros aquí -
Ejecutar la 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:2.1.0
Nota:
SUDOCU_DB_HOSTdebe apuntar al host donde corre el PostgreSQL que contiene dicha base.
- Desplegar la nueva versión:
docker stack deploy --with-registry-auth -c prod/sudocu/sudocu.yml sudocu
Portal del Proveedor (Opcional)
Si posee desplegado el Portal del Proveedor, en esta versión se actualizó la version del Portal basado en SIU-Huarpe y la API de Proveedores.
Bajar stack proveedores
docker stack rm proveedores
Actualizar Base de Datos de Proveedores
-
Realizar el backup de PostgreSQL de manera preventiva
-
Desplegar el servicio que actualiza la base de datos
docker stack deploy --with-registry-auth -c prod/modulos/proveedores/util/proveedores_migrar_base.yml proveedores_migrar_base
Puede verificar el estado del mismo con el comando:
docker service logs proveedores_migrar_base_migrar-base -f
Una vez finalizada la migración, puede eliminar el stack ejecutando el comando:
docker stack rm proveedores_migrar_base
Actualizar API y Portal
Ajustes en variables de entorno
En el archivo [prod/modulos/proveedores/portal.env] se agrega una nueva variable de entorno para indicar la versión de la API de SIU-Diaguita disponible.
API_DIAGUITA_VERSION:En esta nueva variable de entorno se debe indicar la versión de la API de SIU-Diaguita disponible. En la documentación se encuentran los números de versión de API correspondientes a cada versión del módulo SIU-Diaguita. Ej: Si se cuenta con la versión de SIU-Diaguita 4.2.0, la versión de la API correspondiente a esa versión del modulo es la 1.3
También en [prod/modulos/proveedores/portal.env] se ajusta la url de conexión a la API de Proveedores.
ARAI_PROVEEDORES_URL: La URL de conexión a la API de Proveedores ahora requiere explicitamente la versión en la url. Ahora la url quedaría de esta forma: http://proveedores-api:8080/api-proveedores/rest/v1/
En [prod/modulos/proveedores/proveedores.env] se ajusta la url de conexión a la API de Araí-Documentos ya que ahora se requiere la ruta completa a la API Backend.
DOCUMENTOS_API_BASE_URI: http://docs-api:8080/docs/rest/backend/v1/
Desplegar las nuevas versiones de la API y del Portal de Proveedores
docker stack deploy --with-registry-auth -c prod/modulos/proveedores/proveedores.yml proveedores
Huarpe
Se realizan varias mejoras en la bandeja, todas funcionales.
Bundle de SIU-Diaguita - Patrimonio
En esta versión de Huarpe se incluye una nueva variable de entorno en el archivo [prod/huarpe.env] para indicar la versión de la API de SIU-Diaguita disponible.
API_DIAGUITA_VERSION:En esta nueva variable de entorno se debe indicar la versión de la API de SIU-Diaguita disponible. En la documentación se encuentran los números de versión de API correspondientes a cada versión del módulo SIU-Diaguita. Ej: Si se cuenta con la versión de SIU-Diaguita 4.2.0, la versión de la API correspondiente a esa versión del modulo es la 1.3 Si se cuenta con el bundle de Patrimonio habilitado se debe configurar la version de la API para que se habiliten las nuevas funcionalidades del Bundle dependiendo la version de SIU-Diaguita utilizada.
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