Introduktion
Formål
Dette dokument indeholder en beskrivelse af hvordan EAS installeres på et NSP backend miljø.
Læsevejledning
Læseren forventes at have kendskab til Sundhedsdatastyrelsens platform NSP, samt generelt kendskab til WildFly applikation server, Docker, Docker Compose samt Ubuntu Linux operativ system.
Definitioner og referencer
| NSP | Den nationale service platform |
| Driften | NSP Leverandøren og NSP Driftleverandøren |
| SDS | Sundhedsdatastyrelsen |
| EAS | EHMI Sundhedsadresseringsservice |
| EER | EHMI Endpoint Register |
| Keycloak | EHMI Keycloak Authentication server |
Installation
EAS anvender NSP's Continuous Integration og Continuous Deployment miljøer til byg og leverance af komponenten.
Jenkins
EAS bygges med NSP's Jenkins server via følgende jobs:
- EAS build: Bygger koden og pusher det nyeste snapshot image til NSP Docker Registry.
NSP-Leverandøren er selv ansvarlig for at pushe release versioner af EAS til NSP Docker Registry igennem Jenkins
Docker
EAS består af følgende Docker images, som pushes til NSP Docker Registry:
Docker Compose
EAS leveres samtidig som et sæt af Docker Compose filer i folderen https://git.nspop.dk/projects/COM/repos/sundhedsadresseringsservice/browse/compose
En leverance af EAS består af en compose folder som beskrevet ovenfor samt tilhørende tags af det byggede Docker image.
Compose folderen indeholder tre underfoldere:
| configuration | Her ligger alle de konfigurationsfiler som det forventes af driften tilretter til det anvendte miljø. Se EAS Driftsvejledning. |
| development | Her ligger en Docker Compose fil til brug for udvikling. Se EAS - Guide til udviklere. |
| release | Her ligger Docker Compose-filen, som forventes at driften anvender på både test og produktionsmiljøerne.
|
Krav til miljø
Krav til applikationsservere
Komponenten EAS er udviklet og testet i Docker ved anvendelse af imaget "registry.nspop.dk/platform/nsp:latest".
Komponenten EAS' konfiguration er tilpasset deployment på WildFly 34.0.0 applikationsservere med OpenJDK 21.
Komponenten EAS-Nginx er udviklet og testet i Docker ved anvendelse af imaget ubuntu:22.04
Krav til operativsystem
Der stilles ingen krav til operativsystemet udover, at det skal være Linux, og docker skal være installeret.
Krav til adgang til andre services
EAS kræver adgang til "Personinformation", "SikredeInformation", "SORES" og Keycloak på NSP.
Eksternt kræves adgang til EER, som findes på SDN.
Konfiguration
I folderen "compose/configuration" findes følgende konfigurationsfiler:
| integrations/eer.properties | Konfiguration af EER-integrationen |
| integrations/personinformation.properties | Konfiguration af PersonInformation-integrationen |
| integrations/sikrede.properties | Konfiguration af SikredeInformation-integrationen |
| integrations/sores.properties | Konfiguration af SORES-integrationen |
| application.properties | Konfiguration af EAS-servicen |
| ingress/eas-host.conf | Konfiguration af NGINX til indgående kald - Hostnavn |
| ingress/ingress-nginx.conf | Konfiguration af NGINX til indgående kald |
| egress/ehmi-endpoints.conf | Konfiguration af NGINX til udgående kald - Endpoints mod Keycloak og EER |
| egress/ehmi-auth-resolver.conf | Konfiguration af NGINX til udgående kald - DNS server for resolving af Keycloak Hostname |
| egress/ehmi-eer-resolver.conf | Konfiguration af NGINX til udgående kald - DNS server for resolving af EER Hostname |
| egress/egress-nginx.conf | Konfiguration af NGINX til udadgående kald. |
| log4j2.xml | Konfiguration af Log4J2 |
Alle filer skal tilrettes til de forskellige miljøer som EAS installeres på. Filerne indeholder en konfiguration der passer til EAS i en standalone test konfiguration.
I EAS - Driftsvejledning er de enkelte filer gennemgået i detaljer.
Certifikater
Udover konfigurationsfiler er der en del certifikater for at understøtte sikkerhedsarkitekturen i EHMI systemlandskabet. Kommunikationen mellem services foregår med mTLS.
Nedenstående tabel beskriver de påkrævede certifikater - yderligere beskrivelse findes i EAS Driftsvejledning.
| Service | Sti | Beskrivelse |
|---|---|---|
| EAS-Ingress-Nginx | /etc/ssl/server.crt | TLS Servercertifikat for EAS servicen |
| EAS-Ingress-Nginx | /etc/ssl/server.key | Privatnøgle for TLS Servercertifikat for EAS servicen |
| EAS-Ingress-Nginx | /etc/ssl/ehmi-ca.pem | Udstedende CA for det klientcertifikat der anvendes ved kald mod EAS servicen. Bemærk SKAL indeholde både intermediate og rodcertifikat. |
| EAS-Egress-Nginx | /etc/ssl/ehmi-auth/client.crt: | Klientcertifikat der anvendes ved kald mod Keycloak servicen. Bemærk SKAL indeholde både intermediate og rodcertifikat. |
| EAS-Egress-Nginx | /etc/ssl/ehmi-auth/client.key | Privatnøgle for klientcertifikat der anvendes ved kald mod Keycloak servicen |
| EAS-Egress-Nginx | /etc/ssl/ehmi-eer/client.crt | Klientcertifikat der anvendes ved kald mod EER servicen. Bemærk SKAL indeholde både intermediate og rodcertifikat. |
| EAS-Egress-Nginx | /etc/ssl/ehmi-eer/client.key | Privatnøgle for klientcertifikat der anvendes ved kald mod EER servicen |
| EAS-Egress-Nginx | /etc/ssl/certs/ca-certificates.crt
| CA Bundle for TLS servercertifikat for både Keycloak og EER Servicen. Note: Hvis ikke angivet, anvendes standard CA-bundle i Linux. |
SLA logning
Da NSP SLA-logning i skrivende stund ikke understøtter Java 21, er der lavet en primitiv form for SLA-logning i stedet. Der logges tidsforbrug for hver af integrationerne, og skelnes mellem succesfulde og fejlede kald. Fx logges der følgende for et succesfuldt kald til SORES:
11:22:13 INFO dk.nsp.eas.integrations.sores.service.SoresServiceImpl - SLALog: name=SoresServiceImpl.getSorEntityV3, startTimeNanos=4526536292727, endTimeNanos=4526600524977,
startTimeMillis=1760606533710, endfTimeMillis=1760606533774, durationMillis=64, callOk=true, errorMessage=null
Eksempel på SLA-logning for fejlende kald:
12:14:07 INFO dk.nsp.eas.integrations.sores.service.SoresServiceImpl - SLALog: name=SoresServiceImpl.getSorEntityV3, startTimeNanos=7639942720150, endTimeNanos=7639989222484,
startTimeMillis=1760609647144, endfTimeMillis=1760609647191, durationMillis=47, callOk=false, errorMessage=Fejl ved kald til SORES
Afvikling
EAS startes og stoppes med Docker Compose kommandoer.
NSP Miljø
På et NSP miljø hentes "compose" folderen for den ønskede version og kommandoen "docker-compose -f <compose-file> up" køres i folderen "release".