Puncte:0

Rularea aplicației PHP cu suport pentru pluginuri

drapel cn

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?

Klamber avatar
drapel ru
Deoarece aplicația PHP nu ar fi scris în acest volum, trebuie să-l delegați unui pod care are acces de scriere. Aș folosi un fel de procesor de joburi de fundal care rulează într-un pod/job privilegiat. Aplicația detectează upgrade/ștergerea pluginului -> pune acțiunea într-o coadă de locuri de muncă și sondajează pentru modificări de stare sau mesaje de eroare. Un pod de lucrător verifică coada de locuri de muncă și execută acțiunile necesare, actualizează starea sau setează un mesaj de returnare în caz de eroare. Există multe moduri în care puteți implementa joburi de fundal, dar nu știu care este cadrul aplicației dvs.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.