Pomoc zdalna
  • tag
  • coolify
Pexels, 112 Uttar Pradesh
Tag

#coolify

Coolify sprowadza wdrożenie aplikacji do zapisu zmian w repozytorium, a robi to na serwerach należących do firmy. Opis budowy, modelu opłat i pułapki w kopiach zapasowych.

1 wpis z tym tagiem

Na Coolify składają się cztery elementy i rozdzielenie ich porządkuje resztę. Pierwszym jest instancja sterująca, czyli panel uruchomiony na jednej maszynie. Drugim serwery docelowe, na których faktycznie stoją programy. Trzecim pośrednik rozdzielający ruch przychodzący według nazw domenowych i pilnujący certyfikatów. Czwartym zasoby, czyli wszystko, co da się w tym panelu założyć: aplikacje z repozytoriów, bazy danych i gotowe usługi z listy.

Najlepiej opisuje to praca dyspozytora w firmie transportowej. Dyspozytor nie prowadzi żadnego samochodu. Siedzi przy radiu, wie, gdzie kto jest, i wydaje polecenia kierowcom, a kiedy radio zamilknie, ciężarówki jadą dalej, tylko nikt nie wyda im nowego zlecenia.

Radio, czyli połączenie z serwerami

Panel łączy się z maszynami docelowymi zwykłym połączeniem szyfrowanym po SSH, uwierzytelnianym kluczem, na koncie o pełnych uprawnieniach. Nic nie jest instalowane na maszynie zarządzanej poza Dockerem, przez co dodanie kolejnego serwera do zestawu jest kwestią wgrania klucza.

Wynika z tego zaleta rzadko wypowiadana wprost: awaria panelu nie zatrzymuje niczego, co już działa. Kontenery pracują dalej, strony odpowiadają, bazy przyjmują zapytania. Zatrzymuje się wyłącznie zakładanie nowych rzeczy i wdrażanie zmian, dokładnie tak jak przy zepsutym radiu w bazie.

Ta sama właściwość ma drugą stronę. Instancja sterująca zna klucze do wszystkich podpiętych maszyn, więc przejęcie jej jest równoznaczne z przejęciem całej infrastruktury, a to stawia jej zabezpieczenie wyżej niż zabezpieczenie pojedynczej aplikacji.

Od zapisu w repozytorium do adresu w przeglądarce

Przebieg jest stały. Zapis zmian w gałęzi wywołuje powiadomienie z serwisu, w którym leży kod. Panel pobiera świeżą wersję, buduje z niej obraz, podnosi nowy kontener obok starego, przełącza ruch, a potem gasi poprzedni.

Adres nadaje się w formularzu, wpisując własną domenę albo przyjmując wygenerowaną. Certyfikat pobierany jest automatycznie i odnawiany bez udziału człowieka, o ile domena wskazuje na właściwy serwer.

Osobno stoi mechanizm podglądu, który dla zgłoszonej zmiany w kodzie stawia jej kopię pod tymczasowym adresem. Recenzja przestaje wtedy polegać na czytaniu różnic w plikach, bo poprawkę widać na żywo.

Trzy sposoby zbudowania obrazu

Pierwszy jest automatyczny: mechanizm rozpoznaje język i szkielet projektu, po czym sam składa przepis na obraz. Dla typowego projektu w popularnym języku to wystarcza i nie wymaga dopisania ani jednej linii.

Drugi to własny przepis leżący w repozytorium, używany wtedy, gdy automat trafia obok albo gdy potrzebna jest kontrola nad zawartością.

Trzeci to plik opisujący zestaw współpracujących kontenerów, przydatny przy programach składających się z kilku części naraz. Do tego dochodzi lista gotowych usług do postawienia jednym kliknięciem, liczona w setkach pozycji, obejmująca bazy, kolejki i typowe narzędzia wewnętrzne.

Darmowe i płatne, czyli co dokładnie sprzedają autorzy

Cały kod stoi pod licencją Apache 2.0, bez odciętych funkcji i bez limitu maszyn. Instalacja u siebie kosztuje tyle, ile kosztuje maszyna, na której stanie.

Płatny wariant nazywa się chmurą i wbrew nazwie nie wynajmuje mocy obliczeniowej. Autorzy utrzymują wtedy samą instancję sterującą i jej aktualizacje, a serwery docelowe pozostają własnością klienta. Opłata jest miesięczna i rośnie wraz z liczbą podpiętych maszyn.

Sens tego wariantu widać przy pytaniu, kto pilnuje dyspozytorni. Panel postawiony u siebie sam wymaga aktualizowania, kopii i miejsca, w którym stoi, a wersja prowadzona przez autorów zdejmuje tę pozycję z listy zadań.

Kopia obejmuje bazy, a nie pliki

Tu właśnie rodzi się najczęstsze nieporozumienie, a skutek bywa nieodwracalny. Wbudowany harmonogram kopii dotyczy baz danych i wysyła zrzuty do magazynu obiektowego zgodnego z S3. Wolumeny aplikacji, czyli załączniki, zdjęcia, wygenerowane dokumenty i pliki wgrane przez użytkowników, nie są tym objęte.

Osobno stoi kopia samego panelu, która przywraca ustawienia i listę zasobów, a nie zawartość dysków na serwerach docelowych.

Wniosek jest prosty i kosztowny dla tych, którzy dojdą do niego po awarii: pełne zabezpieczenie wymaga trzeciego mechanizmu, obejmującego wolumeny, uruchamianego poza panelem. Dopóki go nie ma, plan odtworzenia kończy się na pustej bazie i braku plików.

Kiedy prościej bez tego

Jedna strona wizytówkowa na jednym serwerze nie potrzebuje dyspozytorni, bo dyspozytor obsługujący jedną ciężarówkę kosztuje więcej, niż wnosi. Zespół, który już utrzymuje klaster kontenerowy, dołoży sobie drugi system opisu tego samego, i będą się kłócić o to, kto zarządza ruchem.

Warto też pamiętać o granicy wynikającej z konstrukcji. Coolify nie dokłada odporności na awarię sprzętu: kilka serwerów w panelu to kilka osobnych maszyn, a nie zestaw przejmujący ruch po tej, która padła. Wysoka dostępność zaczyna się gdzie indziej i kosztuje inaczej.

Tomasz Kaczmarek
Tomasz Kaczmarek

Mogę Ci jakoś pomóc?