Zarządzanie uruchomionymi kontenerami Dockera na pojedynczym serwerze

0

Hej,

W temacie DevOps jestem początkujący, chcę jedynie "liznąć" trochę tematu. Mam maszynę (hosta) z Dockerem, aktualnie buduję sobie projekty jako obrazy dockerowe i odpalam przez jeden wielki docker-compose na serwerze, jeden serwer, jedna instancja każdej appki.

W momencie jak aktualizuję appkę i zbuduje mi się kolejna wersja to sobie ręcznie podmieniam numer wersji w docker-compose.yml, tam też ustawiam potrzebne ENVy i na koniec odpalam docker-compose up -d

Niemniej to manualna i żmudna robota.

Chciałbym, żeby to było wygodniejsze i przede wszystkim automatyczne. Projekt buduje i publikuje na własnym docker registry automatycznie w GitHub Actions, fajnie by było jakoś z tego poziomu podbić wersję uruchomionego kontenera jako jakaś akcja deploy i ew. zarządzać tym ręcznie w poziomu jakiegoś webui.

Bodajże takie coś nazywa się container orchestration i chyba jedynym słusznym rozwiązaniem jest Kubernetes? Tylko Kubernetes podobno jest mega upierdliwy w konfigurowaniu i utrzymaniu, a ja szukam raczej sposobu na ułatwienie sobie życia, a nie skomplikowanie go dodatkowo. Słyszałem o czymś takim jak Rancher, ale to ponoć jakiś wrapper na Kubernetes - czyli IMO jeszcze więcej problemu.

Czego użyć, żeby sobie pomóc? Przypominam, że chodzi mi o pojedynczy serwer, żadnego skalowania po wielu maszynach i instancjach. Googlowanie nic mi nie pomaga, bo nie znam terminologii, a opisywane technologie powtarzają się w różnych kontekstach i generalnie już nic nie wiem.

0

Mniej wiecej moja wiedza nt docker-a i ogolnie CI/CD jest na twoim poziome w sensie ze buduje obrazy ale juz deploy mnie nie interesuje, nie wiem czy chodzi ci o to ale na twoim miejscu moze sie sprawdzic jenkins jesli uzywasz gitlab/github/bitbucket to za pomoca webhooka np na kazdy push na jakis branch mozesz sobie ustawic automatyczny deploy.
Nie wiem akurat czy mozna jakos skonfigurowac jenkins-a zeby uzywal jakies webhooki z twojego registry gdy robish push nowego image

0

ci/cd to nie jest problem, używam github actions, a jenkins to jakaś padaka imo ;) wysłać info po zakończeniu budowania/pushowania to nie problem

problem jest taki co ma to info odebrać

0

Moźesz podejść na dwa sposoby - albo twoja akcja z GH Actions będzie się łączyć z twoim serwerem i ręcznie restartować/repullować kontenery - wczoraj trafiłem w dyskusji na HN na coś takiego: https://github.com/jswny/sad.

Alternatywnie możesz skorzystać z np. https://github.com/containrrr/watchtower - śledzi zmiany w kontenerach i jeżeli zauważy, że używasz nieaktualnej wersji to ci zrestartuje kontener na nowej wersji automatycznie.

0

Rancher pozwala zarządzać wieloma projektami, właściwie to sprawdza się jako serwer - bo to distro linuxa - coś jak CoreOS (zastąpił atomic.io), który przejęła Fedora (a właściwie RH_). Nakładką, to bardziej nazwałbym OpenShift (RH)
Może tobie chodziło o takie coś : https://garden.io/ - generalnie wszystkie te narzędzia wspierają orkiestrację i deploing aplikacji, Rancher to to taki All-in-One, wspomaga zintegrować środowisko produkcyjne do kupy i administrować nimi. Jeżeli chcesz opierać się na Asible to Rancher Tobie to zautomatyzuje.

1

@dzek69: ten tool może Cię zainteresować. https://github.com/containrrr/watchtower

TLDR: monitoruje czy pojawił się nowy obraz w Docker Registry i automatycznie go pobiera i podmienia na środowisku. Idealne do prostych apek postawionych na docker-compose

1 użytkowników online, w tym zalogowanych: 0, gości: 1