Naprawione!
Poniżej cały przebieg zdarzeń
Klaster z usługami wewnętrznymi
01.10.2019
~15:20
Rutynowa aktualizacja aplikacji która odpowiada za aktualizację innych aplikacji ``
Została ona wprowadzona przy okazji ostatniego przenoszenia się między klastrami k8s:
https://lvlup.rok.ovh/t/zmiany-techniczne-2019/9563/#146?u=systemz
W skrócie, Argo CD automatycznie synchronizuje zawartość repo git do rzeczywistej infrastruktury czyli generalnie podejście w stylu "infrastruktura jako kod".
Pomyliłem się podczas wykonywania komendy która powinna łagodnie zamienić tą aplikację na nowszą wersję, bez żadnych przerw dla innych usług poza samą sobą na powiedzmy 20sek.
Druga komenda którą wykonałem usuwała tą aplikację, niestety usunęła się tylko po części.
Ta działająca część przestała widzieć repozytorium więc appka stwierdziła że skoro nie ma nic a w klastrze jest wszystko to nowszym stanem jest "nic" więc taki zaczęła aplikować czyli generalnie usuwać wszystko co nadzorowała z naszych usług wewnętrznych np.
- zabbix
- grafana na stats.lvlup.pro
- status.lvlup.pro
- panel klienta v3
- panel klienta v4
- www.lvlup.pro
- upbot
To tylko lista kilku z nich, w sumie było ich około 40
Jedyne czego nie nadzorowała to replikowana baza danych MySQL.
Wcześniej przy projektowaniu tego wszystkiego stwierdziłem że takie rzeczy jednak wolę nadzorować ręcznie.
Spodziewałem się że to pewnie kwestia czasu zamiast wszystko postawić w kilka minut to wszystko zniszczy tak szybko. Jak widać nie pomyliłem się.
15:24
Rozpoczynam naprawę, ogranicza się to do wykonania jakichś 4 komend które automatycznie stwierdzą czego brakuje i to dodadzą.
15:42
W zasadzie wszystkie usługi już się zainstalowały i działają poza systemem instalacji/reinstalacji systemu w panelu klienta.
Od strony OVH nie zadziałała prawidłowo jedna z usług, wymagało to mojej ręcznej interwencji w DNS oraz konfigurację wszystkich węzłów, całe szczęście to też mam zautomatyzowane, kwestia powiedzmy dwóch komend.
16:13
Zweryfikowałem, wszystko działa już jak trzeba
Wpływ na klientów
Niewielki
VPSy nadal powinny działać poprawnie, ostatnio zwiększyłem na wszelki wypadek ilość czasu przez jaki działają wpisy DHCP więc niedostępność panelu v4 nie powinna wpłynąć na dostępność samych usług.
Nie działały transparentne statystyki, główny panel klienta v2 nadał działał i nadal można było np. utworzyć u nas zgłoszenie w przypadku problemów technicznych czy dokonać płatności.
Forum jest całkowicie niezależne i również działało prawidłowo przez ten czas.
Co poszło nie tak?
Błąd ludzki.
Zignorowałem swoją własną dokumentację, jedną komendę wpisałem z pamięci zamiast popatrzeć jak wykonywałem to wcześniej
Jakie zabezpieczenia zadziałały?
Trzymanie wszystkich możliwych konfiguracji w repozytorium się odpłaciło, postawienie wszystkiego od nowa (ok 40 usług) na czystych hostach to kwestia kilku minut.
Dobrze było mieć regularne zewnętrzne kopie zapasowe jednak całe szczęście się nie przydały tym razem.
Trzymanie kluczowych elementów takich jak instancje bazy danych czy wirtualne dyski z danymi poza zasięgiem automatów
Jak temu zaradzimy w przyszłości?
Cenna lekcja dla mnie, więcej czytać, mniej pisać w terminalu nawet jeśli dotyczy to prawdopodobnie banalnej sprawy.
Aplikacja do trzymania porządku i synchronizacji jest bronią obusieczną, trzeba na to bardziej uważać.