Document Manager
Release Information | Considerations |
|---|---|
Application | document-manager |
Version Name | 2.0.1 |
Publication Date | 10/12/2024 |
Related Cards (Enter card title) | ... |
Version Images (Central IT) | nexus.centralit.io:9091/hyper-document-manager:2.0.1 |
Fixes
- Removal of Keycloak dependency, as Agility users are now being used
- Temporary removal of email notifications
Deployment Guidelines
- Deployment guidelines are available in the documentation.
- It's necessary to run the migrations.
Release Information | Considerations |
|---|---|
Application | document-manager |
Version Name | 2.0.0 |
Publication Date | 09/02/2024 |
Related Cards (Enter card title) | ... |
Version Images (Central IT) | nexus.centralit.io:9091/hyper-document-manager:2.0.0 |
Improvements/New Features
- Framework change to Next.js
- Completion of initial scope, including document management, email sending, template creation, and auditing
Deployment Guidelines
Implementation
Dependencies
- Creation of dedicated database and user: The information will be passed to the container via environment variables, so the name doesn't need to be fixed.
- Run migrations: Inside the container, run the command /usr/local/bin/auditum migrate.
- Ensure ports 8080 and 9090 are exposed and that the document manager container has access.
Auditum:
<span id="LC1" class="line" lang="yaml"><span class="na">auditum</span><span class="pi">:</span></span>
<span id="LC2" class="line" lang="yaml"> <span class="na">image</span><span class="pi">:</span> <span class="s">auditumio/auditum:0.3.0</span></span>
<span id="LC3" class="line" lang="yaml"> <span class="na">environment</span><span class="pi">:</span></span>
<span id="LC4" class="line" lang="yaml"> <span class="na">AUDITUM_store_type</span><span class="pi">:</span> <span class="s">postgres</span></span>
<span id="LC5" class="line" lang="yaml"> <span class="na">AUDITUM_store_postgres_host</span><span class="pi">:</span> <span class="s">postgres</span></span>
<span id="LC6" class="line" lang="yaml"> <span class="na">AUDITUM_store_postgres_port</span><span class="pi">:</span> <span class="m">5432</span></span>
<span id="LC7" class="line" lang="yaml"> <span class="na">AUDITUM_store_postgres_database</span><span class="pi">:</span> <span class="s">auditum</span> <span class="c1">#(criar banco)</span></span>
<span id="LC8" class="line" lang="yaml"> <span class="na">AUDITUM_store_postgres_username</span><span class="pi">:</span> <span class="s2">"</span><span class="s">auditum"</span></span>
<span id="LC9" class="line" lang="yaml"> <span class="na">AUDITUM_store_postgres_password</span><span class="pi">:</span> <span class="s2">"</span><span class="s">auditum"</span></span>
<span id="LC10" class="line" lang="yaml"> <span class="na">AUDITUM_store_postgres_sslmode</span><span class="pi">:</span> <span class="s">disable</span></span>
<span id="LC11" class="line" lang="yaml"> <span class="na">AUDITUM_store_postgres_logQueries</span><span class="pi">:</span> <span class="no">true</span> <span class="c1">#(opcional)</span></span>
<span id="LC12" class="line" lang="yaml"> <span class="na">entrypoint</span><span class="pi">:</span> <span class="s">/bin/sh</span></span>
<span id="LC13" class="line" lang="yaml"> <span class="na">command</span><span class="pi">:</span> <span class="s">-c "/usr/local/bin/auditum migrate && /usr/local/bin/auditum serve"</span> <span class="c1">#(roda as migrations)</span></span>
<span id="LC14" class="line" lang="yaml"> <span class="na">depends_on</span><span class="pi">:</span></span>
<span id="LC15" class="line" lang="yaml"> <span class="pi">-</span> <span class="s">postgres</span></span>
<span id="LC16" class="line" lang="yaml"> <span class="na">ports</span><span class="pi">:</span></span>
<span id="LC17" class="line" lang="yaml"> <span class="pi">-</span> <span class="s">8000:8080</span></span>
<span id="LC18" class="line" lang="yaml"> <span class="pi">-</span> <span class="s">9000:9090</span></span>Deployment guidelines
Keycloak
Keycloak Configuration
It's necessary to create a group with a role in Keycloak and populate the environment variables ROLE_DM_USER and GROUP_DM_USERS for user system access. If the variables aren't provided, the default values will be: ROLE_DM_USER and document_manager_users.
Migrations To run migrations, execute the following command inside the container: npm run db:migrate
Kubernetes
configmap.template.yml
<span id="LC1" class="line" lang="yaml"><span class="na">apiVersion</span><span class="pi">:</span> <span class="s">v1</span></span>
<span id="LC2" class="line" lang="yaml"><span class="na">kind</span><span class="pi">:</span> <span class="s">ConfigMap</span></span>
<span id="LC3" class="line" lang="yaml"><span class="na">metadata</span><span class="pi">:</span></span>
<span id="LC4" class="line" lang="yaml"> <span class="na">name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC5" class="line" lang="yaml"> <span class="na">labels</span><span class="pi">:</span></span>
<span id="LC6" class="line" lang="yaml"> <span class="na">app</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC7" class="line" lang="yaml"> <span class="na">app.kubernetes.io/name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC8" class="line" lang="yaml"> <span class="na">app.kubernetes.io/version</span><span class="pi">:</span> <span class="s">${K8S_APP_VERSION}</span></span>
<span id="LC9" class="line" lang="yaml"> <span class="na">app.kubernetes.io/component</span><span class="pi">:</span> <span class="s">frontend</span></span>
<span id="LC10" class="line" lang="yaml"> <span class="na">app.kubernetes.io/part-of</span><span class="pi">:</span> <span class="s">frontmanager</span></span>
<span id="LC11" class="line" lang="yaml"><span class="na">data</span><span class="pi">:</span></span>
<span id="LC12" class="line" lang="yaml"> <span class="na">AUDIT_SERVICE_URL</span><span class="pi">:</span> <span class="s">auditum.frontmanager-dev-eveo:9000</span></span>
<span id="LC13" class="line" lang="yaml"> <span class="na">DATABASE_URL</span><span class="pi">:</span> <span class="s">postgresql://postgres:[email protected]:5432/document_manager</span></span>
<span id="LC14" class="line" lang="yaml"> <span class="na">EMAIL_SERVICE_URL</span><span class="pi">:</span> <span class="s">http://lowcode.frontmanager-dev-eveo/integrations/disparo_de_email/faas</span></span>
<span id="LC15" class="line" lang="yaml"> <span class="na">KANBAN_API_URL</span><span class="pi">:</span> <span class="s">http://hyper-kanban-api.frontmanager-dev-eveo/api</span></span>
<span id="LC16" class="line" lang="yaml"> <span class="na">KEYCLOAK_BASE_URL</span><span class="pi">:</span> <span class="s">http://keycloak-eveo.keycloak/auth</span></span>
<span id="LC17" class="line" lang="yaml"> <span class="na">KEYCLOAK_CLIENT_ID</span><span class="pi">:</span> <span class="s">admin-cli</span></span>
<span id="LC18" class="line" lang="yaml"> <span class="na">KEYCLOAK_PASSWORD</span><span class="pi">:</span> <span class="s">admin</span></span>
<span id="LC19" class="line" lang="yaml"> <span class="na">KEYCLOAK_USERNAME</span><span class="pi">:</span> <span class="s">admin</span></span>
<span id="LC20" class="line" lang="yaml"> <span class="na">NEXT_PUBLIC_BASE_NAME</span><span class="pi">:</span> <span class="s">/${K8S_APP_NAME}</span></span>
<span id="LC21" class="line" lang="yaml"> <span class="na">ROLE_DM_USER</span><span class="pi">:</span> <span class="s">ROLE_DM_USER</span></span>
<span id="LC22" class="line" lang="yaml"> <span class="na">GROUP_DM_USERS</span><span class="pi">:</span> <span class="s">document_manager_users</span></span>
<span id="LC23" class="line" lang="yaml"> <span class="na">THEME</span><span class="pi">:</span> <span class="s1">'</span><span class="s">{</span><span class="nv"> </span><span class="s">"colorPrimary":</span><span class="nv"> </span><span class="s">"#0f7bc2"</span><span class="nv"> </span><span class="s">}'</span></span>
<span id="LC24" class="line" lang="yaml"></span>
<span id="LC25" class="line" lang="yaml"> <span class="na">AGILITY_SERVICE_NAME</span><span class="pi">:</span> <span class="s">kanban (Campo Opcional, caso não preenchido o default é "kanban")</span></span>deployment.template.yml
<span id="LC1" class="line" lang="yaml"><span class="na">apiVersion</span><span class="pi">:</span> <span class="s">apps/v1</span></span>
<span id="LC2" class="line" lang="yaml"><span class="na">kind</span><span class="pi">:</span> <span class="s">Deployment</span></span>
<span id="LC3" class="line" lang="yaml"><span class="na">metadata</span><span class="pi">:</span></span>
<span id="LC4" class="line" lang="yaml"> <span class="na">name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC5" class="line" lang="yaml"> <span class="na">labels</span><span class="pi">:</span></span>
<span id="LC6" class="line" lang="yaml"> <span class="na">app</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC7" class="line" lang="yaml"> <span class="na">app.kubernetes.io/name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC8" class="line" lang="yaml"> <span class="na">app.kubernetes.io/version</span><span class="pi">:</span> <span class="s">${K8S_APP_VERSION}</span></span>
<span id="LC9" class="line" lang="yaml"> <span class="na">app.kubernetes.io/component</span><span class="pi">:</span> <span class="s">frontend</span></span>
<span id="LC10" class="line" lang="yaml"> <span class="na">app.kubernetes.io/part-of</span><span class="pi">:</span> <span class="s">frontmanager</span></span>
<span id="LC11" class="line" lang="yaml"><span class="na">spec</span><span class="pi">:</span></span>
<span id="LC12" class="line" lang="yaml"> <span class="na">selector</span><span class="pi">:</span></span>
<span id="LC13" class="line" lang="yaml"> <span class="na">matchLabels</span><span class="pi">:</span></span>
<span id="LC14" class="line" lang="yaml"> <span class="na">app</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC15" class="line" lang="yaml"> <span class="na">template</span><span class="pi">:</span></span>
<span id="LC16" class="line" lang="yaml"> <span class="na">metadata</span><span class="pi">:</span></span>
<span id="LC17" class="line" lang="yaml"> <span class="na">labels</span><span class="pi">:</span></span>
<span id="LC18" class="line" lang="yaml"> <span class="na">app</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC19" class="line" lang="yaml"> <span class="na">app.kubernetes.io/name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC20" class="line" lang="yaml"> <span class="na">app.kubernetes.io/version</span><span class="pi">:</span> <span class="s">${K8S_APP_VERSION}</span></span>
<span id="LC21" class="line" lang="yaml"> <span class="na">app.kubernetes.io/component</span><span class="pi">:</span> <span class="s">frontend</span></span>
<span id="LC22" class="line" lang="yaml"> <span class="na">app.kubernetes.io/part-of</span><span class="pi">:</span> <span class="s">frontmanager</span></span>
<span id="LC23" class="line" lang="yaml"> <span class="na">spec</span><span class="pi">:</span></span>
<span id="LC24" class="line" lang="yaml"> <span class="na">containers</span><span class="pi">:</span></span>
<span id="LC25" class="line" lang="yaml"> <span class="pi">-</span> <span class="na">envFrom</span><span class="pi">:</span></span>
<span id="LC26" class="line" lang="yaml"> <span class="pi">-</span> <span class="na">configMapRef</span><span class="pi">:</span></span>
<span id="LC27" class="line" lang="yaml"> <span class="na">name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC28" class="line" lang="yaml"> <span class="na">image</span><span class="pi">:</span> <span class="s">${K8S_APP_IMAGE}</span></span>
<span id="LC29" class="line" lang="yaml"> <span class="na">imagePullPolicy</span><span class="pi">:</span> <span class="s">IfNotPresent</span></span>
<span id="LC30" class="line" lang="yaml"> <span class="na">name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC31" class="line" lang="yaml"> <span class="na">ports</span><span class="pi">:</span></span>
<span id="LC32" class="line" lang="yaml"> <span class="pi">-</span> <span class="na">containerPort</span><span class="pi">:</span> <span class="m">8080</span></span>
<span id="LC33" class="line" lang="yaml"> <span class="na">protocol</span><span class="pi">:</span> <span class="s">TCP</span></span>
<span id="LC34" class="line" lang="yaml"> <span class="na">imagePullSecrets</span><span class="pi">:</span></span>
<span id="LC35" class="line" lang="yaml"> <span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s">4biz-automacao-cdi</span></span>ingress-kong.template.yml
<span id="LC1" class="line" lang="yaml"><span class="na">apiVersion</span><span class="pi">:</span> <span class="s">networking.k8s.io/v1</span></span>
<span id="LC2" class="line" lang="yaml"><span class="na">kind</span><span class="pi">:</span> <span class="s">Ingress</span></span>
<span id="LC3" class="line" lang="yaml"><span class="na">metadata</span><span class="pi">:</span></span>
<span id="LC4" class="line" lang="yaml"> <span class="na">name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC5" class="line" lang="yaml"> <span class="na">labels</span><span class="pi">:</span></span>
<span id="LC6" class="line" lang="yaml"> <span class="na">app</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC7" class="line" lang="yaml"> <span class="na">app.kubernetes.io/name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC8" class="line" lang="yaml"> <span class="na">app.kubernetes.io/version</span><span class="pi">:</span> <span class="s">${K8S_APP_VERSION}</span></span>
<span id="LC9" class="line" lang="yaml"> <span class="na">app.kubernetes.io/component</span><span class="pi">:</span> <span class="s">frontend</span></span>
<span id="LC10" class="line" lang="yaml"> <span class="na">app.kubernetes.io/part-of</span><span class="pi">:</span> <span class="s">frontmanager</span></span>
<span id="LC11" class="line" lang="yaml"><span class="na">spec</span><span class="pi">:</span></span>
<span id="LC12" class="line" lang="yaml"> <span class="na">ingressClassName</span><span class="pi">:</span> <span class="s">nginx</span></span>
<span id="LC13" class="line" lang="yaml"> <span class="na">tls</span><span class="pi">:</span></span>
<span id="LC14" class="line" lang="yaml"> <span class="pi">-</span> <span class="na">hosts</span><span class="pi">:</span></span>
<span id="LC15" class="line" lang="yaml"> <span class="pi">-</span> <span class="s2">"</span><span class="s">*.cloud4biz.com"</span></span>
<span id="LC16" class="line" lang="yaml"> <span class="na">secretName</span><span class="pi">:</span> <span class="s">cloud4biz-tls</span></span>
<span id="LC17" class="line" lang="yaml"> <span class="na">rules</span><span class="pi">:</span></span>
<span id="LC18" class="line" lang="yaml"> <span class="pi">-</span> <span class="na">host</span><span class="pi">:</span> <span class="s2">"</span><span class="s">*.cloud4biz.com"</span></span>
<span id="LC19" class="line" lang="yaml"> <span class="na">http</span><span class="pi">:</span></span>
<span id="LC20" class="line" lang="yaml"> <span class="na">paths</span><span class="pi">:</span></span>
<span id="LC21" class="line" lang="yaml"> <span class="pi">-</span> <span class="na">path</span><span class="pi">:</span> <span class="s">/${K8S_APP_NAME}</span></span>
<span id="LC22" class="line" lang="yaml"> <span class="na">pathType</span><span class="pi">:</span> <span class="s">ImplementationSpecific</span></span>
<span id="LC23" class="line" lang="yaml"> <span class="na">backend</span><span class="pi">:</span></span>
<span id="LC24" class="line" lang="yaml"> <span class="na">service</span><span class="pi">:</span></span>
<span id="LC25" class="line" lang="yaml"> <span class="na">name</span><span class="pi">:</span> <span class="s">kong-eveo-kong-proxy</span></span>
<span id="LC26" class="line" lang="yaml"> <span class="na">port</span><span class="pi">:</span></span>
<span id="LC27" class="line" lang="yaml"> <span class="na">number</span><span class="pi">:</span> <span class="s">80</span></span>ingress.template.yml
<span id="LC1" class="line" lang="yaml"><span class="na">apiVersion</span><span class="pi">:</span> <span class="s">networking.k8s.io/v1</span></span>
<span id="LC2" class="line" lang="yaml"><span class="na">kind</span><span class="pi">:</span> <span class="s">Ingress</span></span>
<span id="LC3" class="line" lang="yaml"><span class="na">metadata</span><span class="pi">:</span></span>
<span id="LC4" class="line" lang="yaml"> <span class="na">name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC5" class="line" lang="yaml"> <span class="na">annotations</span><span class="pi">:</span></span>
<span id="LC6" class="line" lang="yaml"> <span class="na">konghq.com/plugins</span><span class="pi">:</span> <span class="s">jwt</span></span>
<span id="LC7" class="line" lang="yaml"> <span class="na">labels</span><span class="pi">:</span></span>
<span id="LC8" class="line" lang="yaml"> <span class="na">app</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC9" class="line" lang="yaml"> <span class="na">app.kubernetes.io/name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC10" class="line" lang="yaml"> <span class="na">app.kubernetes.io/version</span><span class="pi">:</span> <span class="s">${K8S_APP_VERSION}</span></span>
<span id="LC11" class="line" lang="yaml"> <span class="na">app.kubernetes.io/component</span><span class="pi">:</span> <span class="s">frontend</span></span>
<span id="LC12" class="line" lang="yaml"> <span class="na">app.kubernetes.io/part-of</span><span class="pi">:</span> <span class="s">frontmanager</span></span>
<span id="LC13" class="line" lang="yaml"><span class="na">spec</span><span class="pi">:</span></span>
<span id="LC14" class="line" lang="yaml"> <span class="na">ingressClassName</span><span class="pi">:</span> <span class="s">kong</span></span>
<span id="LC15" class="line" lang="yaml"> <span class="na">tls</span><span class="pi">:</span></span>
<span id="LC16" class="line" lang="yaml"> <span class="pi">-</span> <span class="na">hosts</span><span class="pi">:</span></span>
<span id="LC17" class="line" lang="yaml"> <span class="pi">-</span> <span class="s2">"</span><span class="s">*.cloud4biz.com"</span></span>
<span id="LC18" class="line" lang="yaml"> <span class="na">secretName</span><span class="pi">:</span> <span class="s">cloud4biz-tls</span></span>
<span id="LC19" class="line" lang="yaml"> <span class="na">rules</span><span class="pi">:</span></span>
<span id="LC20" class="line" lang="yaml"> <span class="pi">-</span> <span class="na">host</span><span class="pi">:</span> <span class="s2">"</span><span class="s">*.cloud4biz.com"</span></span>
<span id="LC21" class="line" lang="yaml"> <span class="na">http</span><span class="pi">:</span></span>
<span id="LC22" class="line" lang="yaml"> <span class="na">paths</span><span class="pi">:</span></span>
<span id="LC23" class="line" lang="yaml"> <span class="pi">-</span> <span class="na">path</span><span class="pi">:</span> <span class="s">/${K8S_APP_NAME}</span></span>
<span id="LC24" class="line" lang="yaml"> <span class="na">pathType</span><span class="pi">:</span> <span class="s">ImplementationSpecific</span></span>
<span id="LC25" class="line" lang="yaml"> <span class="na">backend</span><span class="pi">:</span></span>
<span id="LC26" class="line" lang="yaml"> <span class="na">service</span><span class="pi">:</span></span>
<span id="LC27" class="line" lang="yaml"> <span class="na">name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC28" class="line" lang="yaml"> <span class="na">port</span><span class="pi">:</span></span>
<span id="LC29" class="line" lang="yaml"> <span class="na">number</span><span class="pi">:</span> <span class="s">80</span></span>service.template.yml
<span id="LC1" class="line" lang="yaml"><span class="na">apiVersion</span><span class="pi">:</span> <span class="s">v1</span></span>
<span id="LC2" class="line" lang="yaml"><span class="na">kind</span><span class="pi">:</span> <span class="s">Service</span></span>
<span id="LC3" class="line" lang="yaml"><span class="na">metadata</span><span class="pi">:</span></span>
<span id="LC4" class="line" lang="yaml"> <span class="na">name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC5" class="line" lang="yaml"> <span class="na">labels</span><span class="pi">:</span></span>
<span id="LC6" class="line" lang="yaml"> <span class="na">app</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC7" class="line" lang="yaml"> <span class="na">app.kubernetes.io/name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC8" class="line" lang="yaml"> <span class="na">app.kubernetes.io/version</span><span class="pi">:</span> <span class="s">${K8S_APP_VERSION}</span></span>
<span id="LC9" class="line" lang="yaml"> <span class="na">app.kubernetes.io/component</span><span class="pi">:</span> <span class="s">frontend</span></span>
<span id="LC10" class="line" lang="yaml"> <span class="na">app.kubernetes.io/part-of</span><span class="pi">:</span> <span class="s">frontmanager</span></span>
<span id="LC11" class="line" lang="yaml"><span class="na">spec</span><span class="pi">:</span></span>
<span id="LC12" class="line" lang="yaml"> <span class="na">ports</span><span class="pi">:</span></span>
<span id="LC13" class="line" lang="yaml"> <span class="pi">-</span> <span class="na">port</span><span class="pi">:</span> <span class="m">80</span></span>
<span id="LC14" class="line" lang="yaml"> <span class="na">protocol</span><span class="pi">:</span> <span class="s">TCP</span></span>
<span id="LC15" class="line" lang="yaml"> <span class="na">targetPort</span><span class="pi">:</span> <span class="m">8080</span></span>
<span id="LC16" class="line" lang="yaml"> <span class="na">selector</span><span class="pi">:</span></span>
<span id="LC17" class="line" lang="yaml"> <span class="na">app</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>