Wyzwanie
Około 30 aplikacji klienckich działało na jednym serwerze z panelem wdrożeniowym. Wdrożenia były ręczne, polityki bezpieczeństwa nie było, a odtworzenie po awarii istniało tylko w teorii. Inwentaryzacja pokazała 49 zasobów aplikacyjnych, z czego 14 zatrzymanych, oraz martwe i zdublowane usługi, które zajmowały pamięć i dysk.
Chcieliśmy, żeby każda aplikacja była odtwarzalna z repozytorium, odizolowana od pozostałych i objęta monitoringiem, a kopia zapasowa była sprawdzana, nie tylko wykonywana.
Podejście
Wybraliśmy własny klaster zamiast kolejnej platformy PaaS. Każda zmiana przechodzi przez Git: GitHub Actions buduje obraz, podpisuje go, a ArgoCD wdraża tylko to, co jest w repozytorium. Klaster odrzuca obrazy bez ważnego podpisu.
Migrację prowadzimy falami: najpierw sprzątanie, potem aplikacje bezstanowe, następnie aplikacje z bazą, systemy wieloserwisowe i na końcu WordPress. Dla nowych projektów jest gotowa ścieżka wdrożenia, którą zespół kopiuje zamiast konfigurować od zera.
Wdrożenie
Bezpieczeństwo opiera się na kilku warstwach: weryfikacja podpisów obrazów, domyślne blokowanie ruchu sieciowego między aplikacjami, szyfrowanie danych klastra, logi audytowe, sekrety w menedżerze z automatycznym przeładowaniem i logowanie przez SSO. Panele administracyjne są dostępne tylko w sieci prywatnej, a ruch publiczny idzie wyłącznie przez Cloudflare.
Kopie mają trzy warstwy w zewnętrznym magazynie: stan klastra, zasoby aplikacji i wolumeny danych. Cotygodniowe zadania faktycznie odtwarzają kopię i sprawdzają wynik. Monitoring liczy SLO z alertami o tempie spalania budżetu błędów, a co tydzień powstaje raport z przeglądu klastra.
Wyniki
Na klastrze działają 32 aplikacje, wszystkie zsynchronizowane z repozytorium i zdrowe, oraz 17 baz danych bez restartów w ostatnim tygodniu. Kontrola polityk bezpieczeństwa: 51 zaliczonych, 0 niezaliczonych. Testowe odtworzenie baz ze starego serwera dało dane zgodne co do wiersza.
W ćwiczeniu awaryjnym odtworzenie przestrzeni aplikacji zajęło 5 s, wolumenu 5 GB 38 s, a stanu klastra poniżej sekundy. Optymalizacja obniżyła rezerwacje CPU z 79% do 61%, a liczbę płatnych operacji na magazynie kopii o 57%.











