Docker kényszer?
Számtalanszor meghallgattam már, másoktól, hogy kéne használni a konténerizáció technológiát (bár alapvetően mindegyik szolgáltatás, amihez így közünk van az VM szinten van izolálva, megfelelő helyre rakva, megfelelő tűzfalakkal védve.) Ez viszont most egy különálló eset, egy különálló, felhőben futtatott VM, más projekt, más scope, és ha még kicsi is, pakoljunk bele mindent.
Minden alatt, pedig minden olyat szeretnék (vagy szerettem volna) használni, amit gondoltam, hogy akarok. Az nginx mellett még HAPROXY, a hoston futó webszerver, de mindez akkor jól kihasználható, ha mondjuk vannak mindenféle connection és egyéb limitáló tényezők, és mondjuk egy jól definiált GEOIP alapú szabályozás is. Természetesen nem ennyire tiszta a kép az induláskor, de vannak bajok az érkezési oldalon is.
Network mode-ok
Az elsődleges flusztráció az volt, hogy a 81-es portot nem tudtam UFW-fel bezárni. (tudom, hátulgombolós probléma) Rövid olvasgatás és hosszas chatGPT után kiderült, hogy az UFW és a docker alapértelmezett bridge network nem barátok, de megoldottam. a 81-es port localhost-ra került, és így nekem elérhető marad kényelmesen SSH port forward-al, a funkció pedig megy(en). És akkor nézzük meg, hogy hogy lehet egy HAPROXY-t telepíteni, természetesen akkor már ez is konténerben.
HOL A CONFIG
Egyre jobban szeretem ezt a világot. Kapok egy szoftvert, amit akár fel is tehetnék a host-ra, ahogy eddig, és akkor szállítja a konfigját, itt viszont akkor most nincs konfigurációs fájlom. Nem baj, túlélem az eddigieknek megfelelően. A management felületet ráeresztettem a proxy managerre, és ez is megy. De egyre inkább az az érzésem, hogy sajtreszelővel rejszolok.
Mentés
chatgpt-vel projektet tolni az olyan, mintha melletted lenne egy alapvetően elfogadó Sheldon Cooper, aki ugyan mindenhez pozitívan áll hozzá, de véletlenül sem azt fogja mondani, ami előre viszi a projektet. Ő csak válaszol a kérdésedre, és ha véletlenül már hibázott, akkor ez a hiba csak többszöröződni fog. Mindenesetre meglett a mentő script, is, hurrá. 20-30 domain-t nem akarok egyesével belekrampácsolni a proxy-ba vissza. (Maga a felvétel is több óra volt a domain címek átírásával és élesztésével).
Hoszt szervízek
Most itt vagyok bajban. Hova rakjam és hogy érjem el a localhost-on futtató webszervert, ami alapfeltétele a nagiosnak, mert arra már nem vagyok hajlandó hogy ezt is bekonténerizáljam. Akármerre és megyek eddig is, nem vagyok róla meggyőződve, hogy a nagios belevaló ebbe a szép új világba. Túlságosan összetett, túlságosan szerteágazó ahhoz, hogy így leegyszerűsítsük.
Docker host vagy bridge network
Itt tartok most. Hova tegyem a reverse proxy-t. Vannak érvek a host és vannak érvek a bridge mellett is, bevallom én a host fele húzok. Egyszerűbbnek érzem a további szolgáltatások elérését (bár nem vagyok meggyűzűdve arról, hogy rendesen elérem-e a konténerizált funkciókat), a host tűzfala egyértelműen és egyszerűen kezelné a bejövő portokat, viszont a bridge network mellett van egy olyan érv, amivel nehezen tudok mit kezdeni, de vitatkozni is. A szeparáció. Mert ha megb@sszák a konténert, akkor könnyebb menni a hostra illetve a további szolgáltatásra, DE!
Akkor most nem bízhatom a konténerizált szervízben, vagy nem? Vagy alapvetően semmiben sem kellene bíznom, mert most már ZERO TRUST van, a szép új világ. De ha semmiben nem bízom, akkor miért bízzam a dockerben és a docker hálózatban, vagy akor mennyivel biztonságosabb/egyszerűbb/hatékonyabb ez a szolgáltatás csoport úgy, ahogy van a hostra telepített funkciók szempontjából? Mondjuk a proxy managert nem szeretném elengedni, mert kurva kényelmes, és ez az igazi baj.... .
Itt tartok most, és meg is álltam egy kicsit. Úgy érzem kell egy kis levegő ahhoz, hogy tovább menjek a gondolkodásban és a felismerésekben. Egyszerűen több információ és tapasztalat kell, és nem feltétlenül a chatGPT-től.
- szollosiimre blogja
- A hozzászóláshoz be kell jelentkezni
- 789 megtekintés
Hozzászólások
- nézegesd még ezt a "docker világot" mert úgy látom van még mit megérteni belőle. Rajzoltass a chatgpt-vel diagramokat, hátha segít. Mindenképpen megéri 100% megérteni mert ez adja a jó alapot a kuberneteshez.
- az xy szoftver a konténerében "default konfiggal fut és nincs konfig fileom": van rá parancs / paraméter amivel ezt a konfigot "ki lehet húzni" belőle és akkor már ki tudod rakni filerendszerbe, megszerkeszted és "visszamountolod" bele. Vagy van a konténernek doksija és akkor meg tudod nézni hogy környezeti változót elég-e beállítani - konténerek nagyon sokszor így paraméterezendőek
- docker networkinget tessék megérteni, az esetek 99.9%-ban felesleges a host network. Akkor szokott kelleni (és akkor se mindig) ha ilyen mDNS és/vagy UDP portot kell kifele adni hogy mondjuk az okostévé megtalálja a dockerizált médialejátszót.
- revproxy-t ne írjál, nézd meg ezt: https://hub.docker.com/r/jwilder/nginx-proxy - nem fogsz tudni jobbat csinálni
Még egy dolog: én a prod cuccaimat úgy futtatom hogy csinálok neki egy külön vm-et, abba docker és a docker-compose. Látszólag ez így sok de nagyon jól lehet automatizálni és a konzisztens mentése is így a legegyszerűbb.
- A hozzászóláshoz be kell jelentkezni
Köszönöm a hozzászólást, tanulok. :) Szépen alakul ez a fejemben, de van minek összeállnia.
- A hozzászóláshoz be kell jelentkezni
A 4.-re inkább a haproxy -t nézd meg az kifejezetten reverse proxy/lb és nem egy webszerver reverse proxy funkcióval. Nagyon nem ugyanaz a kávéház ha komolyabb dolgokat kell benne megoldani.
- A hozzászóláshoz be kell jelentkezni
Köszi, ismerem és szeretem. a 80 és 443- portokat a npm-ből fűzöm át számára, míg más portok ki vannak rakva.
- A hozzászóláshoz be kell jelentkezni
komolyabb dolgok: mint például?
- A hozzászóláshoz be kell jelentkezni
Nekem meg nem sikerult chatgpt-vel ertelmes abrat/diagramot csinalni. Kb. mind elvi hibas (foleg kapcoslasi rajzoknal). O
lyan van, hogy pontosan tudom mit kene rajzolni, en leskiccelem, feltoltom, es o felturbozza.
Van valami titok?
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....
- A hozzászóláshoz be kell jelentkezni
ja igen és a zero trust networkinget egyáltalán ne keverd ebbe bele, az egy teljesen más kávéház.
azt még bőven ráérsz megérteni, sok-sok leckével odébb van.
- A hozzászóláshoz be kell jelentkezni
nemide
- A hozzászóláshoz be kell jelentkezni
En a fenti problemakort ugy oldottam meg, hogy beraktam egy "traefik"-t ami egy sajat docker network-t hasznal.
A kulonbozo egyeb szerviceket amiket meg ki akarok ajanlani traefik-n keresztul, mind hozzacsapom a traefik network-hoz.
A szolgaltatasok amik meg dockeren kivul futnak siman elerhetoek traefik szamara, vagy FQDN hasznalataval, vagy ugy, hogy a docker compose file-ban (ezt hasznalom, mert igy konnyebb az eletem) az extra host alatt felveszek egy custom domain-t ami a host-gateway-re mutat. Igy a host-n futo szervizt siman elerem "gw" neven.
services:
reverse-proxy:
image: traefik:v3.6.1
ports:
# The HTTP port
- "80:80"
- "443:443"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik.yml:/etc/traefik/traefik.yml
- ./conf.d:/conf.d:rw
- ./certs:/certs
- ./logs:/logs
networks:
- shared
restart: always
extra_hosts:
- gw:host-gateway
networks:
shared:
external: true
Conf reszlet:
http:
services:
local-dotnet-test-api:
loadBalancer:
servers:
- url: http://gw:5000Support Slackware: https://paypal.me/volkerdi
- A hozzászóláshoz be kell jelentkezni
nálam is ez lett a megoldás:
networks:
- proxy-net
extra_hosts:
- "host.docker.internal:host-gateway"
Így megcsinálja a dolgokat. Azért nem ment elsőre, mert természetesen ezt már megfogta az UFW.
- A hozzászóláshoz be kell jelentkezni
én openresty szoktam, gyors mint a fene, egy csomó dolog benne van
a trafek nagyágyú
No rainbow, no sugar
- A hozzászóláshoz be kell jelentkezni
ha jól látom, ez van csomagolva a nginx-proxy-manager-be.
- A hozzászóláshoz be kell jelentkezni
pass docker hubról szedtem le,
van benne lua támogatás így a domainek, portok, kulcsok már a proxyn eldőlnek egy lua szkriptben bent meg minden 80:as porton muzsikál a belső hálón, ami piszok gyors
mondjuk én nekem a podman docker compose up kombó jött be, ufw egyébként se javasolt docker alá mer nem véd
No rainbow, no sugar
- A hozzászóláshoz be kell jelentkezni
"ufw egyébként se javasolt docker alá mer nem véd" - hogy mi? Ki tudnád fejteni?
- A hozzászóláshoz be kell jelentkezni
Benne volt az eredeti felvetésben. Ha az alapértelmezett bridge módot használod és a docker-ben nem kapcsolod ki az iptables-t, akkor új chaint hoz létre magának, és ez az új chain nem illeszkedik az ufw struktúrájába.
Ez host módban egyébként nem igaz, az viszont a ne használd dolog.
Megoldásnak leginkább az tűnik, hogy a dockertől elvesszük az iptables-t és egy firewalld-vel szépen betűzfalattuk az egészet.
- A hozzászóláshoz be kell jelentkezni
Ah, értem. Mondjuk ez ízlés kérdése azon meg nem érdemes vitatkozni.
- docker host-ot sose teszek ki a netre direktben, csak revproxyval és/vagy tűzfallal
- portot már a host felé expose-olni is csak amit feltétlenül muszáj, belül anélkül is elérik egymást a konténerek
- A hozzászóláshoz be kell jelentkezni
Épp ez az, valami ilyesmire jöttem rá. Jelen "project" egy apro vm egy cloudban, amit nem tudok így cizellálni, viszont belemászott a vezérhangya a fejembe, hogy kérjek a fortinettől container waf demo license-t.
- A hozzászóláshoz be kell jelentkezni
Szerintem az ilyen "kattintós termékek" kifejezetten hátráltatják a működés valódi megértését és adott esetben testre szabását.
Dehát kinek a pap kinek a paplan.
- A hozzászóláshoz be kell jelentkezni
ezért egyszerűbb podmannel, az újabb teljesen jól működik a docker compose uppal
No rainbow, no sugar
- A hozzászóláshoz be kell jelentkezni