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 en Tomcat-applikation (war-fil) och kan installeras 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 # 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
Användning 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