Saltar al contenido principal
Version: 2.0.0

Despliegue de Araí

Recordatorio

Previo a ejecutar los siguientes comandos para desplegar los pods, recuerde ubicarse dentro de la carpeta de su overlay, de esta manera podrá copiar y pegar los comandos correctamente en su terminal.

cd <uunn-overlay>

Configuracion y despliegue de Araí-Personas​

Antes de comenzar con el despliegue de la aplicacion debe corroborar que los parametros de configuracion del ConfigMap en uunn-overlay/apps/personas/config/ y los secrets en uunn-overlay/secrets/personas-secrets.env sean correctos.

Acceso a Postgres​

Los parámetros de conexión a la base de datos los puede encontrar en el archivo uunn-overlay/apps/personas/config/personas.env, y son los siguientes:

###### CONFIG DE LA BASE DE NEGOCIO ######
DB_HOST=db-siu
DB_PORT=5432
DB_DBNAME=arai_personas
DB_USERNAME=postgres
DB_PASSWORD_FILE=/var/secrets/DB_PASSWORD
DB_SCHEMA=personas
DB_ENCODING=UTF8

Despliegue de aplicación​

A continuación deberá proceder a realizar el despliegue de los módulos de la aplicación:

kustomize build --load-restrictor LoadRestrictionsNone apps/personas | kubectl apply -f -

Por último debe ejecutar el job el cual genera la base de datos de personas y en este punto es donde el job corrido anteriormente en usuarios (usuarios-inicializar-personas.yml) inicializa las personas, impacta y se ejecuta.

kustomize build --load-restrictor LoadRestrictionsNone jobs/personas/init | kubectl apply -f -

Configuracion y despliegue de Arai-Documentos​

Antes de comenzar con el despliegue de la aplicacion debe corroborar que los parametros de configuracion del ConfigMap en uunn-overlay/apps/documentos/config/ y los secrets en uunn-overlay/secrets/docs-secrets.env sean correctos.

Acceso a Postgres​

Editar la configuracion de conexión a la base de datos en el archivo uunn-overlay/apps/documentos/config/docs.env:

###### CONFIG DE LA BASE DE NEGOCIO ######
ARAI_DOCS_DB_HOST=db-siu
ARAI_DOCS_DB_PORT=5432
ARAI_DOCS_DB_DBNAME=arai_documentos
ARAI_DOCS_DB_USERNAME=postgres

Conexión con Nuxeo o MinIO​

Dependiendo de la solución que haya elegido utilizar, debe ajustar las variables de entorno según corresponda:

Conexión con Nuxeo​

  • STORAGE_TYPE: Debe especificar RDI
  • STORAGE_HOST: Es la url de nuxeo, debe apuntar a la API CMIS < url-host-nuxeo >/nuxeo/atom/cmis/
  • STORAGE_USUARIO: API User de Nuxeo
  • STORAGE_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 especificar S3
  • STORAGE_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-01 o latest.

Tamaño máximo de documentos creados​

Nginx posee una anotación que restringe el peso máximo de un payload solicitado por un cliente. Esto repercute en la creación de documentos, ya que si el tamaño del documento supera el peso máximo asignado en la anotación, nginx arrojará un error 413 indicando que el pedido excede el máximo permitido.

Por defecto el despliegue ya tiene asignado un peso máximo de 10 mb, si necesita crear documentos de un peso mayor deberá modificar el parametro value del archivo uunn-overlay/common/ingress/kustomization.yml en la siguiente sección

- op: add
path: /metadata/annotations/nginx.ingress.kubernetes.io~1proxy-body-size
value: "10m"

Los cambios se verán reflejados una vez que despliegue la aplicacion.

Despliegue de aplicación​

Una vez finalizado lo anterior ya podemos desplegar todos los servicios correspondientes a documentos:

kustomize build --load-restrictor LoadRestrictionsNone apps/documentos | kubectl apply -f -

Por último debe ejecutar el job el cual genera la base de datos de documentos.

kustomize build --load-restrictor LoadRestrictionsNone jobs/documentos/init-update | kubectl apply -f -

Ejecución de comandos administrativos​

Para la ejecución de comandos administrativos se debe desplegar el servicio docs-cli

kustomize build --load-restrictor LoadRestrictionsNone jobs/documentos/adm/cli | kubectl apply -f -

Una vez desplegado es posible conectarse al contenedor:

kubectl exec -it -n <namespace> <pod> -- bash

Luego cargar el entorno

. /siu-entrypoint.d/00-config-prod.sh
set +e

Finalmente se pueden lanzar los comandos administrativos necesarios:

./cli/bin/docs

Para mas información sobre la comandos administrativos disponibles puede consultar la documentación de Araí-Documentos

Worker para movimiento y limpieza de documentos/archivos entre Storages​

Se despliegan dos workers independientes para gestionar el movimiento de documentos y archivos entre distintos storages.

Estos workers se utilizan para realizar migraciones, así como para el archivado/desarchivado de documentos. Para conocer más sobre estas funcionalidades se puede consultar la documentación de Araí-Documentos..

Cada worker se despliega mediante un job independiente:

  • Worker de migracion: encargado de realizar el movimiento de documentos y archivos desde un storage de origen hacia otro.
  • Worker de limpieza: encargado de eliminar los documentos y archivos del storage de origen una vez que fueron movidos exitosamente.

Despliegue de deployment migracion:

kustomize build --load-restrictor LoadRestrictionsNone jobs/documentos/adm/migracion | kubectl apply -f -

Despliegue de deployment limpieza:

kustomize build --load-restrictor LoadRestrictionsNone jobs/documentos/adm/limpieza | kubectl apply -f -

Comandos administrativos para mover Documentos/ Archivos​

En uunn-overlay/jobs/documentos/adm/mover se encuentran 2 carpetas: documentos y archivos; las cuales cada una tiene un job especifico, docs-mover-documentos y docs-mover-archivos que permiten generar los lotes de objetos (documentos/archivos) a mover. Adicionalmente se encuentra en la raiz (uunn-overlay/jobs/documentos/adm/mover) la definición de un dispatcher que encola en redis cada objeto a mover para que sea procesado por los workers desplegados en el paso anterior.

Los servicios docs-mover-documentos y docs-mover-archivos requieren que se indiquen los IDs de los storage de origen y destino. Para esto se puede exportar las variables de entorno con los ID de storage correspondientes previo a desplegar el servicio.

export ID_STORAGE_ORIGEN="ID_ORIGEN"
export ID_STORAGE_DESTINO="ID_DESTINO"

Esto se encuentra en el archivo mover.env que se encuentra en uunn-overlay/jobs/documentos/adm/mover/config/mover.env.

danger

Se recomienda pausar los cronjobs de archivar y desarchivar al momento en que se corra un proceso de migración para procesar solo esos lotes.

Si se desea mover documentos se debe ejecutar el job correspondiente:

docs-mover-documentos

kustomize build --load-restrictor LoadRestrictionsNone jobs/documentos/adm/mover/documentos | kubectl apply -f -

docs-mover-archivos

kustomize build --load-restrictor LoadRestrictionsNone jobs/documentos/adm/mover/archivos | kubectl apply -f -

El dispatcher se ejecuta como un cronjob, este no debe ejecutarse en intervalos cortos de tiempo durante un proceso de migración para evitar encolar objetos múltiples veces generando una carga de trabajo innecesaria. Sería recomendable que se ejecute cada cierta cantidad de horas mientras dure un proceso de migración para garantizar que objetos pendientes puedan ser re-encolados.

El dispatcher se puede desplegar de la siguiente manera:

kustomize build --load-restrictor LoadRestrictionsNone jobs/documentos/adm/mover | kubectl apply -f -

Para mas información sobre la gestión de storages y el proceso de movimiento de documentos/archivos se puede consultar la documentación de Araí-Documentos.

Comandos administrativos para archivar/desarchivar Documentos​

Para archivar/desarchivar documentos se deben desplegar los servicios que se detallan a continuación. Cada uno realiza la generacion de los lotes para mover los documentos, asi como tambien contienen un dispatcher que encola dichos documentos en redis para que sean procesados por el worker. Estos se ejecutan como una tarea programada la cual se puede modificar el horario de ejecucion desde uunn-overlay/jobs/documentos/adm/archivar/kustomization.yaml y uunn-overlay/jobs/documentos/adm/desarchivar/kustomization.yaml ya sea el cronjob de archivar/desarchivar o sus respectivos dispatchers.

kustomize build --load-restrictor LoadRestrictionsNone jobs/documentos/adm/archivar | kubectl apply -f -
kustomize build --load-restrictor LoadRestrictionsNone jobs/documentos/adm/desarchivar | kubectl apply -f -

Para mas información sobre el archivado/desarchivado de documentos se puede consultar la documentación de Araí-Documentos.

danger

Se recomienda pausar los cronjobs de archivar y desarchivar al momento en que se corra un proceso de migración para procesar solo esos lotes.

Configuracion y despliegue de Araí-Usuarios​

Antes de comenzar con el despliegue de la aplicacion debe corroborar que los parametros de configuracion del ConfigMap en uunn-overlay/apps/usuarios/config/ y los secrets en uunn-overlay/secrets/usuarios-secrets.env sean correctos.

Acceso a Postgres y LDAP​

Los parámetros de conexión a la base de datos y ldap los puede encontrar en el archivo uunn-overlay/apps/usuarios/config/usuarios.env, y son los siguientes:

###### CONFIG DB ######
DB_HOST=db-siu
DB_PORT=5432
DB_DBNAME=usuarios
DB_USERNAME=postgres
DB_SCHEMA=usuarios
DB_PASSWORD_FILE=/var/secrets/DB_PASSWORD

##### CONFIG LDAP #####
LDAP_HOST=ldap
LDAP_PORT=389
LDAP_TLS=0
LDAP_METHOD=user
LDAP_BINDUSER=cn=admin,dc=siu,dc=cin,dc=edu
LDAP_BINDPASS_FILE=/var/secrets/LDAP_BINDPASS
LDAP_SEARCHBASE=dc=siu,dc=cin,dc=edu
LDAP_USERS_OU=usuarios
LDAP_USERS_ATTR=ou
LDAP_ACCOUNTS_OU=usuariosCuentas
LDAP_ACCOUNTS_ATTR=ou
LDAP_GROUPS_OU=groups
LDAP_GROUPS_ATTR=ou
LDAP_NODES=
Recordatorio

Los parametros que incluyan el termino HOST (ejemplo: DB_HOST o LDAP_HOST) db-siu o ldap hacen referencia a los pods desplegados con este repositorio. Si precisa conectarlo con una instancia en otro namespace u on-premise, recuerde ajustar estos parametros.

Generar certificados​

Araí-Usuario requiere dos pares de claves para funcionar, una para firmar los tokens SAML y otra para firmar los tokens JWT de OIDC.

Para generar los certificados utilizados para firmar los tokens SAML ejecutar:

openssl req -newkey rsa:2048 -new -x509 -days 3652 -nodes -out common/certs/certificado_idp.crt -keyout secrets/certificado_idp.key

Para generar los certificados utilizados en OIDC para firmar tokens JWT ejecutar:

openssl genrsa -out secrets/oidc_module.pem 2048

openssl rsa -in secrets/oidc_module.pem -pubout -out common/certs/oidc_module.crt

Configuracion reCaptcha​

Los secrets para reCAPTCHA permiten a las aplicaciones validar la interacción de usuarios para asegurar que no se trata de bots, utilizando las claves secretas proporcionadas por Google reCAPTCHA. Una vez tengamos las claves debe proceder a definirlas en el archivo uunn-overlay/apps/usuarios/config/usuarios.env, modificando las siguientes variables:

SEGURIDAD_RECAPTCHA_SITIO=6LeIxAcTAAAGETMEFROMRECAPTCHASITE
SEGURIDAD_RECAPTCHA_CLAVE=6LeIxAcTAAAAAGG-GETMEFROMWEBBEFORE
Nota

Debe configurar las mismas keys tanto en esta sección de arai-usuarios como en la sección correspondiente de huarpe.

Despliegue de aplicación​

A continuación deberá proceder a realizar el despliegue de los módulos de la aplicación:

kustomize build --load-restrictor LoadRestrictionsNone apps/usuarios | kubectl apply -f -

Con el siguiente comando se procede a crear la base, se crea el admin, se inicializa las personas (se queda esperando a que este levantado personas para proseguir) y usuarios-inicializar-recursos.yaml

kustomize build --load-restrictor LoadRestrictionsNone jobs/usuarios/init | kubectl apply -f -

El proceso de inicialización de usuarios tiene un job para verificar personas que queda en espera (standby) hasta que arai-personas acepte conexiones.

Nota: Todos los jobs están configurados para eliminarse automáticamente 20 minutos después de finalizar, independientemente de si el estado es Completed o Failed.

Por último deberá ejecutar este job, el cual se encarga de configurar las apps (junto a sus urls y parametros de SAML) dentro de Arai-Usuarios.

kustomize build --load-restrictor LoadRestrictionsNone jobs/usuarios/config-apps | kubectl apply -f -

Nota: De desearlo, es posible agregar aplicaciones adicionales, lo único que debe hacer es agregar el .json correspondiente y el icono de la aplicación dentro de uunn-overlay/jobs/usuarios/config-apps, eliminar el job y volverlo a correr.

Información

Como los assets ahora quedan en una cache descartable podemos utilizar un job de Araí-Usuarios para hacer el warm-up, en cualquier momento.

kustomize build --load-restrictor LoadRestrictionsNone jobs/usuarios/refrescar-cache | kubectl apply -f -

Una vez realizados estos pasos, debería poder acceder en https://uunn-overlay.edu.ar/usuarios (o el dominio que haya definido) la contraseña de admin estara definida en el parametro TOBA_PASSWORD ubicado en uunn-overlay/secrets/usuarios-secrets.env.

Configuracion y despliegue de Stamper​

Nota: En caso de no necesitar el estampador, puede desactivarlo modificando la variable STAMPER_ACTIVO y STAMPER_SELLOS_ACTIVO ubicadas en uunn-overlay/apps/documentos/config/docs.env. Una vez hecho esto, puede continuar con el despliegue del resto de servicios.

Antes de comenzar con el despliegue de la aplicacion debe corroborar que los parametros de configuracion del ConfigMap en uunn-overlay/apps/estampador/config/

Este servicio se encuentra activado por defecto, y requiere de la disposición de un keystore para el funcionamiento del mismo.

Crear Firma de Sistema​

Este servicio se consume y configura desde Araí-Documentos. Provee una forma de agregar una hoja en cada documento que ingresa al sistema de forma tal que se genere espacio para agregar el detalle de las autorizaciones. Cada vez que se genera una autorización se agrega la estampa.

Es un servicio desarrollado en Java y se invoca desde Araí-Documentos a través de una api HTTP. Es distribuido solamente a través de una imagen Docker.

Es muy importante generar un nuevo secret que contenga el keystore. La clave guardada en este secreto será la Firma de Sistema que será utilizada en la firma de todos los PDFs. Puede consultar cómo generar una firma para un entorno de testeo en ésta guía. Luego deberá regresar para finalizar la configuración del Stamper.

ACLARACIÓN: En caso de tratarse de una instalación para producción, le sugerimos utilizar una keystore generada de forma segura. Para ello puede consultar la sección Trámites de la página web de Firma Digital.

Despliegue de aplicación​

Una vez que posea el Keystore, debe:

    1. Ubicar el archivo .p12 en el directorio <nombre-del-overlay>/secrets
    1. Verificar que los parametros del archivo de configuracion uunn-overlay/apps/estampador/config/docs.stamper.env correspondan a los creados para su keystore.
    1. Verificar que la clave ARAI_DOCS_STAMPER_KEYSTORE_PASS ubicada en el archivo uunn-overlay/secrets/docs-stamper-secrets.env coincida con la de su keystore.

Una vez cumplido dichos requisitos, ejecute el siguiente comando para desplegar el servicio de estampador:

kustomize build --load-restrictor LoadRestrictionsNone apps/estampador | kubectl apply -f -

Configuración y despliegue de Arai-Solicitudes​

Antes de comenzar con el despliegue de la aplicacion debe corroborar que los parametros de configuracion del ConfigMap en uunn-overlay/apps/solicitudes/config/ y los secrets en uunn-overlay/secrets/solicitudes-secrets.env sean correctos.

Despliegue de aplicación​

Ejecute el siguiente comando para desplegar el servicio de solicitudes:

kustomize build --load-restrictor LoadRestrictionsNone apps/solicitudes | kubectl apply -f -

Creación de Base de Datos​

Para la creación de la base de datos, se debe ejecutar el siguiente job

kustomize build --load-restrictor LoadRestrictionsNone jobs/solicitudes/init | kubectl apply -f -

Configuracion y despliegue de SIU-Huarpe​

Este sistema sólo consume información a través de endpoints Rest. Estas conexiones están explicitadas en el archivo uunn-overlay/apps/huarpe/config/huarpe.env y no deberían cambiar, salvo que se cambie la ruta interna en el clúster de Sudocu, Usuarios o Documentos, si eso es necesario deberia cambiarlas desde ese mismo archivo.

Configuracion reCaptcha​

Los secrets para reCAPTCHA permiten a las aplicaciones validar la interacción de usuarios para asegurar que no se trata de bots, utilizando las claves secretas proporcionadas por Google reCAPTCHA. Una vez tengamos las claves debe proceder a definirlas en el archivo uunn-overlay/secrets/huarpe-secrets.env, ejemplo:

RECAPTCHA_SITIO_PASSWORD=6LeIxAcTAAAGETMEFROMRECAPTCHASITE
RECAPTCHA_CLAVE_PASSWORD=6LeIxAcTAAAAAGG-GETMEFROMWEBBEFORE
Nota

Debe configurar las mismas keys tanto en esta sección de huarpe como en la sección correspondiente de arai-usuarios.

Despliegue de aplicación​

kustomize build --load-restrictor LoadRestrictionsNone apps/huarpe | kubectl apply -f -

Configuracion y despliegue de Araí-Notificaciones​

Antes de comenzar con el despliegue de la aplicacion debe corroborar que los parametros de configuracion del ConfigMap en uunn-overlay/apps/notificaciones/config/ y los secrets en uunn-overlay/secrets/notificaciones-secrets.env sean correctos.

Creación de Base de Datos​

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)

Para la creación de la base de datos, se debe ejecutar el siguiente job

kustomize build --load-restrictor LoadRestrictionsNone jobs/notificaciones/init | kubectl apply -f -

Configuración de Envío de Emails​

Para el envío de emails se debe definir el DSN de un servicio de envío mediante el secret MAILER_DSN_SEGURO. La creación de este secret se encuentra en el archivo uunn-overlay/secrets/notificaciones-secrets.env. Para este secret, si el nombre de usuario o la contraseña contienen caracteres especiales (como @, :, #, etc.), es necesario aplicar URL encoding a estos valores para que formato del DSN sea válido y funcione correctamente la autenticación.

Despliegue de aplicación​

Ejecute el siguiente comando para desplegar el servicio de notificaciones:

kustomize build --load-restrictor LoadRestrictionsNone apps/notificaciones | kubectl apply -f -