Am o aplicație PHP care funcționează bine în Kubernetes, cu excepția unui singur scenariu. „Problema” este că aplicația poate fi extinsă folosind plugin-ul. În acest caz, pur și simplu adăugăm pluginul la container, reconstruim containerul și îl implementăm din nou.
Data viitoare când administratorul se conectează, acesta trebuie să confirme instalarea pluginului. Până acum, bine. Dar! Problema noastră este că nu mai putem dezinstala aceste pluginuri, deoarece pluginurile creează tabele (specifice pentru plugin) și intrări în tabele diferite din baza de date.
În timpul procesului de dezinstalare, pluginul elimină tabelele și așa mai departe. Dar, deoarece aplicația noastră se află în pod-uri, fișierele din sistemul de fișiere rămân active. Deci, după reîncărcarea paginii, aplicația găsește noul plugin și îl va instala din nou.
Practic, după eliminarea unui plugin, trebuie să reconstruim containerul fără plugin și să îl implementăm din nou. Apoi putem elimina următorul plugin, reconstruiți containerul și așa mai departe... dar asta nu este o soluție.
Deci credem că trebuie să existe o altă cale.Cea mai bună soluție ar fi să îl instalați într-un volum, deoarece în acest caz toate podurile folosesc același volum și le putem împărți între pod-urile php-fpm și pod-urile serverului web. Deci le putem scala independent unul de celălalt. Dar, în acest caz, întrebarea este dacă există ceva de genul unui container „de configurare” care rulează la fiecare implementare. Deci, ori de câte ori ne actualizăm implementarea, containerul rulează o dată și dezinstalează pluginuri vechi / instalează noi pluginuri / instalează upgrade-uri ale aplicației noastre. În acest scenariu, podurile noastre au nevoie doar de ReadOnlyMany (ROX) și doar un pod (pod-ul de configurare) are nevoie de permisiuni de scriere.
Știu că există containere init, dar din câte știu, acestea sunt rulate de fiecare dată când pornește un nou pod. Are cineva vreo sugestie cum să rezolve această problemă sau s-a confruntat cu probleme similare?