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


NSPDen nationale service platform
DriftenNSP Leverandøren og NSP Driftleverandøren
SDSSundhedsdatastyrelsen
EASEHMI Sundhedsadresseringsservice
EEREHMI Endpoint Register
KeycloakEHMI 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.

developmentHer 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.

  • docker-compose.yml

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.propertiesKonfiguration af EER-integrationen
integrations/personinformation.propertiesKonfiguration af PersonInformation-integrationen
integrations/sikrede.propertiesKonfiguration af SikredeInformation-integrationen
integrations/sores.propertiesKonfiguration af SORES-integrationen
application.propertiesKonfiguration af EAS-servicen
ingress/eas-host.confKonfiguration af NGINX til indgående kald - Hostnavn
ingress/ingress-nginx.confKonfiguration af NGINX til indgående kald
egress/ehmi-endpoints.confKonfiguration af NGINX til udgående kald - Endpoints mod Keycloak og EER
egress/ehmi-auth-resolver.confKonfiguration af NGINX til udgående kald - DNS server for resolving af Keycloak Hostname
egress/ehmi-eer-resolver.confKonfiguration af NGINX til udgående kald - DNS server for resolving af EER Hostname
egress/egress-nginx.confKonfiguration af NGINX til udadgående kald. 
log4j2.xmlKonfiguration 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.

ServiceStiBeskrivelse
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".

  • No labels