Plugins and GeoDB configs don't survive restarts (Kubernetes StatefulSet)

Hello,

This has been driving me crazy for some time and I haven’t found any answers, so I guess I’m going to go ahead and just ask here.

I had Matomo setup on Kubernetes as a Deployment (+ a service, a configMap, pvc, etc), but this was causing issues whenever the pod restarted, because each and every plugin/configuration we had performed would be lost. Frustrating but I guessed that was my fault…

In the meantime I’ve read a bit more about the Matomo configuration and I’ve setup Matomo by providing the config.ini.php file at startup and converted the Deployment to a StatefulSet (inspired by https://github.com/matomo-org/docker/issues/219) thinking this would fix this issue…

However, each and every time my pods restarts - Poof! - the installed plugins and geoIP database disappear (the rest of the configuration from the config.ini.php file remains though, as does the DB)…

So, how is one supposed to fix this? How do I ensure that Matomo restarts in the same state it was before it was restarted? There MUST be a solution…

EDIT:
I see that the plugins (which seem to be present on /var/usr/www/html/plugins) have a different date than the rest of the directories… Should I maybe also map the Plugins dir to a PVC?

root@matomo-0:/var/www/html# ls -la plugins/
total 284
drwxr-xr-x 71 www-data www-data 4096 Oct 13 15:12 .
drwxr-xr-x 13 www-data www-data 4096 Oct  5 01:35 ..
drwxr-xr-x 11 www-data www-data 4096 Oct  5 01:35 API
drwxr-xr-x 12 www-data www-data 4096 Oct  5 01:35 Actions
drwxr-xr-x  7 www-data www-data 4096 Oct  5 01:35 Annotations
drwxr-xr-x  4 www-data www-data 4096 Oct  5 01:35 BulkTracking
drwxr-xr-x 12 www-data www-data 4096 Oct  5 01:35 Contents
drwxr-xr-x 13 www-data www-data 4096 Oct  5 01:35 CoreAdminHome
drwxr-xr-x  4 www-data www-data 4096 Oct  5 01:35 CoreConsole
drwxr-xr-x 16 www-data www-data 4096 Oct  5 01:35 CoreHome
drwxr-xr-x 10 www-data www-data 4096 Oct  5 01:35 CorePluginsAdmin
drwxr-xr-x 10 www-data www-data 4096 Oct  5 01:35 CoreUpdater
drwxr-xr-x 11 www-data www-data 4096 Oct  5 01:35 CoreVisualizations
drwxr-xr-x  6 www-data www-data 4096 Oct  5 01:35 CoreVue
drwxr-xr-x 16 www-data www-data 4096 Oct  5 01:35 CustomDimensions
drwxr-xr-x  8 www-data www-data 4096 Oct  5 01:35 CustomJsTracker
drwxr-xr-x  7 www-data www-data 4096 Oct  5 01:35 DBStats
drwxr-xr-x  9 www-data www-data 4096 Oct  5 01:35 Dashboard
drwxr-xr-x  6 www-data www-data 4096 Oct  5 01:35 DevicePlugins
drwxr-xr-x  9 www-data www-data 4096 Oct  5 01:35 DevicesDetection
drwxr-xr-x  8 www-data www-data 4096 Oct  5 01:35 Diagnostics
drwxr-xr-x 11 www-data www-data 4096 Oct  5 01:35 Ecommerce
drwxr-xr-x 12 www-data www-data 4096 Oct  5 01:35 Events
drwxr-xr-x  8 www-data www-data 4096 Oct  5 01:35 Feedback
drwxr-xr-x 20 www-data www-data 4096 Oct 13 15:12 Funnels
drwxr-xr-x  9 www-data www-data 4096 Oct  5 01:35 GeoIp2
drwxr-xr-x 15 www-data www-data 4096 Oct  5 01:35 Goals
drwxr-xr-x  4 www-data www-data 4096 Oct  5 01:35 Heartbeat
drwxr-xr-x 27 www-data www-data 4096 Oct 13 15:12 HeatmapSessionRecording
drwxr-xr-x  7 www-data www-data 4096 Oct  5 01:35 ImageGraph
drwxr-xr-x 11 www-data www-data 4096 Oct  5 01:35 Insights
drwxr-xr-x  9 www-data www-data 4096 Oct  5 01:35 Installation
drwxr-xr-x  5 www-data www-data 4096 Oct  5 01:35 Intl
drwxr-xr-x  5 www-data www-data 4096 Oct  5 01:35 IntranetMeasurable
drwxr-xr-x  9 www-data www-data 4096 Oct  5 01:35 LanguagesManager
drwxr-xr-x 15 www-data www-data 4096 Oct  5 01:35 Live
drwxr-xr-x 10 www-data www-data 4096 Oct  5 01:35 Login
drwxr-xr-x 14 www-data www-data 4096 Oct  5 01:35 Marketplace
drwxr-xr-x  4 www-data www-data 4096 Oct  5 01:35 MobileAppMeasurable
drwxr-xr-x 10 www-data www-data 4096 Oct  5 01:35 MobileMessaging
drwxr-xr-x  6 www-data www-data 4096 Oct  5 01:35 Monolog
drwxr-xr-x  9 www-data www-data 4096 Oct  5 01:35 Morpheus
drwxr-xr-x 12 www-data www-data 4096 Oct  5 01:35 MultiSites
drwxr-xr-x  9 www-data www-data 4096 Oct  5 01:35 Overlay
drwxr-xr-x 11 www-data www-data 4096 Oct  5 01:35 PagePerformance
drwxr-xr-x 13 www-data www-data 4096 Oct  5 01:35 PrivacyManager
drwxr-xr-x  8 www-data www-data 4096 Oct  5 01:35 ProfessionalServices
drwxr-xr-x  3 www-data www-data 4096 Oct  5 01:35 Proxy
drwxr-xr-x 11 www-data www-data 4096 Oct  5 01:35 Referrers
drwxr-xr-x  6 www-data www-data 4096 Oct  5 01:35 Resolution
drwxr-xr-x  5 www-data www-data 4096 Oct  5 01:35 RssWidget
drwxr-xr-x  8 www-data www-data 4096 Oct  5 01:35 SEO
drwxr-xr-x  8 www-data www-data 4096 Oct  5 01:35 ScheduledReports
drwxr-xr-x 11 www-data www-data 4096 Oct  5 01:35 SegmentEditor
drwxr-xr-x  8 www-data www-data 4096 Oct  5 01:35 SitesManager
drwxr-xr-x 25 www-data www-data 4096 Oct  5 01:35 TagManager
drwxr-xr-x 10 www-data www-data 4096 Oct  5 01:35 Tour
drwxr-xr-x 11 www-data www-data 4096 Oct  5 01:35 Transitions
drwxr-xr-x 10 www-data www-data 4096 Oct  5 01:35 TwoFactorAuth
drwxr-xr-x 14 www-data www-data 4096 Oct  5 01:35 UserCountry
drwxr-xr-x 11 www-data www-data 4096 Oct  5 01:35 UserCountryMap
drwxr-xr-x  8 www-data www-data 4096 Oct  5 01:35 UserId
drwxr-xr-x  6 www-data www-data 4096 Oct  5 01:35 UserLanguage
drwxr-xr-x 13 www-data www-data 4096 Oct 13 15:12 UsersFlow
drwxr-xr-x 12 www-data www-data 4096 Oct  5 01:35 UsersManager
drwxr-xr-x  6 www-data www-data 4096 Oct  5 01:35 VisitFrequency
drwxr-xr-x  8 www-data www-data 4096 Oct  5 01:35 VisitTime
drwxr-xr-x  6 www-data www-data 4096 Oct  5 01:35 VisitorInterest
drwxr-xr-x  8 www-data www-data 4096 Oct  5 01:35 VisitsSummary
drwxr-xr-x  5 www-data www-data 4096 Oct  5 01:35 WebsiteMeasurable
drwxr-xr-x  7 www-data www-data 4096 Oct  5 01:35 Widgetize

Hi @Celso_Santos
I have no knowledge on Kubernetes, but what happens if you put your configuration in a common.config.ini.php file (in the same folder than config.ini.php)?