może ktoś z #programowanie #devops ma jakieś doświadczenia z postgres-operatorem od Zalando https://github.com/zalando/postgres-operator/tree/master i mógłby się podzielić wrażeniami?

Use-case: chcę mieć platformę do taniego i szybkiego publikowania swoich aplikacji w internecie. W tym celu tworzę sobie mini-datacenter w domu oparte na kubernetesie, chwilowo składające się z jednego komputera. Dostęp do niego z publicznego internetu robię przez Cloudflare Tunnel https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/

Chcę żeby setup był rozszerzalny i chcę zachować jak najmniejszy stack technologiczny, bo nie lubię się uczyć rzeczy "od zera". Obecnie zastanawiam się jak załatwić temat relacyjnej bazy danych. Myślałem nad postawieniem postgresa bezpośrednio na baremetalu, ale wydaje mi się że networking żeby potencjalnie dopuścić do niego ruch z kolejnych nodów w przyszłości to będzie tragedia.

#technologia #komputery #siecikomputerowe #programista15k #naukaprogramowania #lajko
127840f5-09e5-4847-998a-944ed0aa51b9
koszotorobur

@wombatDaiquiri - ja Kubernetesa mam po dziurki w pracy, żeby się z nim jeszcze w domu pierdzielić

Oczywiście z tym Postgres Operatorem od Zalando nie miałem do czynienia - ale patrząc po README.md z GitHuba to wygląda dobrze - możesz opisać co dokładnie Cię w tym urzekło do Twoich zastosowań jak masz tylko jedną maszynę?

Ja jako, że jestem minimalistą to używam Podmana i uruchamiam bardziej skomplikowane rzeczy w podach.

Na Malince 5 z 8GB ramu mam teraz właśnie Postgresa bo postawiłem kilka rzeczy i codzienny backup robię na mojego Bieda-NASa rsynciem (który później też rsynciem jest backupowany na większy serwer tak na wszelki wypadek - już kiedyś opisywałem mój setup i dlaczego tak akurat robię) - mi starcza

Generalnie bardziej staram się zrozumieć co Ty tam próbujesz osiągnąć z tym swoim setupem bo cały wysiłek, który w to wkładasz oceniam bardzo pozytywnie - nie każdemu się chce i nie każdy potrafi - zwłaszcza jeśli to co robisz ma Ci się przydać w pracy i by zarabiać lepszą kasę

wombatDaiquiri

@koszotorobur próbuję się wyzbyć metody szukania "poprawnego rozwiązania" więc bardzo dziękuję Ci za Twojego posta.


Generalnie chciałem postawić jakoś instancję bazy danych żebym mógł z niej korzystać w kontenerkach. A dzięki Twojej sugestii zmieniłem trochę zapytanie do google i dostałem tutorial na prostszych komponentach które już z nam więc plan właśnie uległ zmianie https://www.digitalocean.com/community/tutorials/how-to-deploy-postgres-to-kubernetes-cluster


Wysokopoziomowo - jestem programistą. Jestem nieskromnie mówiąc niezły w pisanie programów. Ale całe środowisko w którym te programy były uruchamiane były własnością firmy w której pracowałem. W ten sposób zawsze uczyłem się procedur które ktoś mi przygotował, ale na własne potrzeby nadal korzystałem z `./binarka &` bo w sumie działa.


No i z wiekiem odczuwam potrzebę podzielenia się wiedzą jak tworzyć cyfrowe produkty, ale do tego potrzebuję środowiska uruchomieniowego które uczeń będzie mógł zreplikować i rozszerzać według własnych potrzeb. A i mi się przyda wyrobić opinię i usystematyzować stack bo często ciekawe pomysły upadają jak staję przed wizją pierdół do wykonania zanim się zaczną ciekawe zadania.

koszotorobur

@wombatDaiquiri - widzę, że zacząłeś od bardzo wysokiego poziomu abstrakcji i komplikacji, którym jest Kubernetes (nawet w konfiguracji Sinlge Node K8s) - dobrze go oczywiście znać ale do swoich zastosowań często jest to overkill jeśli nie wybrałeś tego rozwiązania świadomie ze wglądu na benefity, które faktycznie Tobie oferuje (a dalej musisz płacić cenę za skomplikowanie projektu).


Ja od zeszłego roku preferuję Podmana zamiast Dockera gdyż Docker wymaga dwóch daemonów ciągle działających na systemie (dockerd oraz containerd) a Podman jest daemonless i może uruchamiać aplikacje od razu w podach (i też można użyć z nim Compose).


Jeśli chodzi o super prosty deployment Postgresa (jak nie masz klastra K8s) to możesz uruchomić go w łatwy sposób z obrazu kontenera tak by mieć data persistance oraz być w stanie zrobić backup.


Utwórz dwa foldery na serwerze ~/postgres_data oraz ~/postgres_backup.


Uruchom kontener:

podman run -p 5432:5432 --name postgres -v ~/postgres_data:/var/lib/postgresql/data -v ~/postgres_backup:/home -e POSTGRES_PASSWORD=<YOUR_PASS> -d docker.io/library/postgres:alpine


A tak wywołać psql w działającym kontenerze:

podman exec -it <CONTAINER_NAME_OR_ID> psql -U postgres


Od tego kroku, droga jest prosta uruchamiania w ten sam sposób narzędza pg_dump lub pg_dumpall czy pg_basebackup (i zrobienia backupu do folderu /home kontenera) a następnie potem zbackupowania dumpa z folderu ~/postgres_backup serwera na innego hosta przy pomocy narzędzia rsync.

wombatDaiquiri

@koszotorobur dobry tutorial, dzięki!

Zaloguj się aby komentować