SKLTP TAK - Monitor

Under utveckling

TAK version 3.2.0 och senare innehåller en övervakningstjänst “tak-monitor”. Syftet med denna är att bevaka publicering av nya versioner och propagera dessa till de komponenter som använder data från TAK.

Det huvudsakliga användningsområdet är i Kubernetes-installationer av SKLTP men tjänsten kan även användas i andra driftmiljöer.

Funktion

Senaste publicerad version kontrolleras vid uppstart samt med regelbundet intervall (default 60 sekunder).

  • Om en förändring har skett sedan föregående läsning (eller det är första kontrollen efter uppstart) så anropas “reset cache” för tak-services och övriga komponenter.

  • Om det inte skett någon förändring så händer inget mer förrän nästa intervall.

I det enklaste fallet är det en statisk lista med URL:er som anropas i angiven följd vid “reset cache”. I en Kubernetes-installation finns även möjlighet att dynamiskt slå upp vilka poddar som är aktiva med hjälp av Kubernetes API.

Installation

Tjänsten är levereras som en war-fil och kan installeras i t.ex. Tomcat på liknande sätt som tak-web och tak-services.

Exempel på paketering med Dockerfile samt Helm chart finns med i källkoden.

Konfiguration

Tjänsten bygger på Spring Boot och stödjer dess olika format för konfiguration. Nedan följer två exempel, med fil respektive miljövariabler.

Reset sker i den ordning som anges i listan. Det är viktigt att alla instanser av tak-services anges i början av listan då dessa påverkar övriga komponenter.

Statisk konfiguration med fil

Följande rader kan läggas till i den gemensamma filen tak-application.properties, https://inera.atlassian.net/wiki/spaces/SKLTP/pages/3187837717). Genom att den gemensamma filen återanvänds databas-konfigurationen.

# Poll interval in ms (default value) tak.monitor.interval=60000 # Delay before first poll in ms (default value) tak.monitor.initial-delay=0 # No pod lookup (default value) tak.monitor.reset.use-pod-lookup=false # List of static reset URLs tak.monitor.reset.nodes[0].url=http://tomcat1.example.com:8080/tak-services/reset/pv tak.monitor.reset.nodes[1].url=http://tomcat2.example.com:8080/tak-services/reset/pv tak.monitor.reset.nodes[2].url=http://vp1.example.com:23000/resetcache tak.monitor.reset.nodes[3].url=http://vp2.example.com:23000/resetcache tak.monitor.reset.nodes[4].url=http://server.example.com:8082/kat/resetcache

Pod-uppslagning i Kubernetes

Exempel på hur konfiguration kan anges i en Kubernetes ConfigMap för användning som miljövariabler. Notera att databas-lösenord även behöver anges via en secret eller motsvarande.

I denna konfiguration hämtas aktiva poddar med sökning i Kubernetes API (på label selector+namespace). URL:erna skapas sedan genom att “0.0.0.0“ ersätts med IP-adressen för varje pod.

apiVersion: v1 kind: ConfigMap metadata: name: tak-monitor-configmap data: # Database settings SPRING_DATASOURCE_DRIVERCLASSNAME: com.mysql.cj.jdbc.Driver SPRING_DATASOURCE_URL: jdbc:mysql://mysql-host:3306/takv3?autoReconnect=true # Activate pod lookup TAK_MONITOR_RESET_USEPODLOOKUP: "true" TAK_MONITOR_RESET_PODNAMESPACE: skltp-default # List of applications, identified by label selectors # "0.0.0.0" is used as a placeholder for pod ip TAK_MONITOR_RESET_NODES_0_LABEL: app.kubernetes.io/name=tak-services TAK_MONITOR_RESET_NODES_0_URL: http://0.0.0.0:8080/tak-services/reset/pv TAK_MONITOR_RESET_NODES_1_LABEL: app=vp TAK_MONITOR_RESET_NODES_1_URL: http://0.0.0.0:23000/resetcache TAK_MONITOR_RESET_NODES_2_LABEL: app.kubernetes.io/name=kat-application TAK_MONITOR_RESET_NODES_2_URL: http://0.0.0.0:8082/kat/resetcache