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, SKLTP TAK - Konfiguration - version 3.0 och senare). 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