• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    ALMADDocker a kontejnery
    Docker aneb přístupný provoz kontejnerizovaných aplikací
    Docker(Hub), Compose, Swarm, boot2docker, DevOps, LXC, ECS, TumTum a jiné buzzwordy
    Bezpečnost v prostředí kontejnerů
    Related: automatizace [ Centralizovaná správa stanic a ostatních prvků v síti konfigurace/inventarizace/instalace/aktualizace/zalohovani ]
    rozbalit záhlaví
    SUK
    SUK --- ---
    VELDRANE: Jedinej uzivatel a to teda fakt fullstack jsem ja ja ja jenom ja ;) Z toho duvodu mi prave k8s prijde jako kanonvrabce :P))
    ADM: jo, to zni docela rozumne. Ty dve veci (davical, agendav) nastesti fungujou s aktualnim pg a navic jsou na sobe navzajem zavisly :)

    Ohledne "ty kontejnerizovany aplikace si zapis do d-c": jenom ty aplikace nebo celou tu "infrastrukturu"? Uprimne jsem docker doted pouzival maximalne pro vyvoj na localu a poustel/vypinal jsem to rucne, takze netusim, jak se tohle vlastne resi na serveru...

    Diky za odpovedi :)
    VELDRANE
    VELDRANE --- ---
    SUK: naopak mi v tomto pripade prijde pouziti k8s vcelku logicke. Usetris zdroje (nektere veci jako cast tech nginxu muzes mit v jedny instanci), mas zajisteni sitovani a propjeni veci v ramci k8s clusteru. Nicmene by bylo vhodne si rozmyslet jak a ktery aplikace spolu komunikuji, kde mit ingress, kde mit externi ip, co resit pomocit nejake custom nginx instance apod, kolik na to mas casu a jak resit deployment, kolik na to mas lidi apod.

    Pokud ale chces podobne prostredi nejak konsolidovat, tak mi kubernetes prijde jako vhodnejsi volba nez to cpat na jednu virtualku. Osobne bych build jednotlivejch komponent delal v klasickym docerfilu a deployment pak pomoci helmu. To prostredi nemas nijak velkyntakze cpat tam neco jako argo je kanon na vrabce. Taky bych si byt tebou popremejslel nad tim kdo a jak bude nasazovat updaty aplikacni casti. Predpikladam zs ten php kod se nejak vyviji, aktualizuje, patchuje….
    SUK
    SUK --- ---
    Ahoj. Asi si chci zalozit virtual kde budu mit "vsechno" a to vsechno bude kontejnerizovany. Aktualne predpokladam:
    - nginx "naprimo" pro staticky weby (bude jeden az dva, hadam)
    - nginx + php-fpm (aktualne 3 weby)
    - nginx jako reverse proxy pro nodejs aplikace
    - nginx jako reverse proxy na web-storage ktera ale bude uplne nekde jinde
    - postgresql pro ty 3 php weby + mozna i dalsi
    - mozna mongo

    Me znalosti jsou na te urovni, ze toto vsechno dokazu dat bez potizi dokupy standalone i to dockerizovat, ale asi to nebude "spravne".

    Takze, otazek mam vic:
    1) Cim to skladat? Docker-compose nebo neco jinyho? k8s by byl asi komar na kanona
    2) 3 weby, 3 pgsql databaze muze znamenat 3x nginx + 3x pgsql + nginx jako rproxy. A nebo 1 nginx co dela vsechno a jedna pgsql, co dela vsechno? Jeden web navstivi jednotky mesicne, zbytek je ciste jen pro me :))
    3) Weby a databaze predpokladam jako externi mount (alias volume) nebo to delat jinak

    Ano, asi to prehanim a moc resim, ale snazim se to proste delat spravne/spravneji, co kdybych umrel a nekdo se mi podival na server? Diky danke gracias!
    HVJ3R
    HVJ3R --- ---
    10GB na image je moc. Ja zacinam bejt nervozni uz kdyz to leze k 1G. Voser s tim pracovat. Vic imgs a ruzne verze chapu, to mame taky, ale snazime se vychazet ze stejnyho base img, at se images/verze lisej jen max par layerama max 10kach MB. Pak tahas prd. Ale jestli mas ephemeral nodes, tak nepomuze ani tohle.
    ADMIX
    ADMIX --- ---
    ICARUS: 20MBps z S3 je brutalne pomaly, S3 bezne dava >200MBps a teoretickej limit je vpc connectivity. To je nakej limit docker pull? Jestli jsi je tahal z S3 anyways, tak co to stahnout na lokalni disk pres normalni GET, jestli to nebude rychlejsi?
    NYX
    NYX --- ---
    FB tohle resil bittorrentem :-)
    KAPLIK
    KAPLIK --- ---
    ICARUS: Tak pipelina ktera pri buildu jedne z tech docker image trigerne jeste pipeline co zbuildi ec2 image? :)
    Pripadne k tomu worker nodu pripojovat nejaky ebs/disk, kde by ty image byly, mozna furt rychlejsi nez to tahat pres klasickou sit z registry.
    ICARUS
    ICARUS --- ---
    KAPLIK: Jo, přesně tohle tam mám teďka. Blbý je, že ty změny té image jsou občas trošku nepředvídatelné a hlavně těch docker imagí je tam víc a různé verze, takže se mi úplně nechce pořád buildit nové custom EC2 image.
    KAPLIK
    KAPLIK --- ---
    ICARUS: Pokud se ta image tak casto nemeni, tak by si vyrabel custom image pro ec2/eks, kde by byla predcachovana, tzn by se nemusela cela tahat z docker registry, pripadne by se treba stahnul jen nejnovejsi layer (ale tam uz zalezi proc je ta image tak velka a co se v ni meni).
    Takto je to treba vyreseny na AKS (azure) worker nodech, kde os image obsahuje nacachovane image kontejneru ktere tam bezi by default, aby se furt vsechno nestahovalo.
    JON
    JON --- ---
    ICARUS: resilli jsme neco podobneho - u nas bylo resenim zmensit image, data z nej vyhazet uplne, a pro stahovani dat jsme udelali spesl sluzbu. V kazde geolokaci nam bezi jedna instance te sluzby a prubezne docachovava data z "centraly". Kdyz v lokaci startuje nova sluzba co ootrebuje ty data, tak je stahuje z prislusne geolokalizivane sluzby-cache.
    Nas usecase je odlisny v tom, ze neresime start/restart vsech stroju najednou.

    To co popisujes ty by jeste slo resit tak, ze se to stahne jednou na jeden stroj, ten to pak nakopiruje idealne nejakym dd na dalsi a tak dal - trochu zalezi na tom jak moc jsou ty stroje vzdalene. To se teda blbe dela s imagem, takze bych taky zacal zmensenim image a separaci dat ven.

    Pokud to co dela ten image velky nejsou data, tak blby no.
    ICARUS
    ICARUS --- ---
    Jak byste řešili situaci, kdy máte velké množství (třeba 64) strojů, které si najednou potřebujou stáhnout docela velký image (10GB)? Stroje se spawnují ondemand a po ukončení výpočtu zase zmizí, takže se ty image na ně těžko dají přednahrát. Všechny ty stroje jsou v jedné privátní síti a v AWS cloudu.

    Zkoušel jsem použít AWS ECR, ale pull je příšerně pomalej (10 MB/s). Ty stroje si ty image potřebujou stáhnout co nejrychleji. Zatím jsem koukal po Kraken od Uberu, ale vypadá to jako lehce abandoned projekt a nevím, jestli se mi chce setupovat tak složitej traktor. Pak jsem taky zkoušel vlastní Docker registry s S3 backupem, ale to dávalo "jen" 20 MB/s pull. Na tohle už přece musí být nějaké rozumné řešení, ne?
    REFLEX
    REFLEX --- ---
    MLEKAR_STEIN: to neni spatny napad
    MLEKAR_STEIN
    MLEKAR_STEIN --- ---
    osobně se kloním k tomu, mít normálně vlastní registrovanou doménu a mit lokálně nějakou subdoménu pro tyhle účely, na kreré si budu dělat různé vylomeniny.
    nez řešit nějaké loxal, svc, srv.
    RUDOLF
    RUDOLF --- ---
    REFLEX: to je milé;-)
    REFLEX
    REFLEX --- ---
    Jinak nejake vychytavky ze sveta dockeru? Ja si zvykl pouzivat https://github.com/jesseduffield/lazydocker
    REFLEX
    REFLEX --- ---
    JON: jezis no jo vlastne, tak pojedu .localhost nebo .loc
    JON
    JON --- ---
    REFLEX: to bych nedoporucoval, od nejaky doby je .dev regulerni top level domena: https://en.wikipedia.org/wiki/.dev
    pekne curacky rozhodnuti, co vam budu povidat
    REFLEX
    REFLEX --- ---
    VELDRANE: to je zajimave, tak mozna prejdu na .dev :D
    VELDRANE
    VELDRANE --- ---
    REFLEX:

    matne si ted vzpominam, ze tak cca 5 let zpatky, zacal bejt problem s domenama .local kvuli naky srajde v networkmanageru. Taky sem na to narazil, tenhle suffix byl kdysi doporucovanej pro lokalni domeny v ramci AD a ja to pak uz ze zvyku cpal vsude. Bylo z toho tenkrat z my strany ooavdu velky mrzeni a nasrani. Issue je popsama treba zde:

    Name Resolution Problems with ".local" Domains | Support | SUSE
    https://www.suse.com/support/kb/doc/?id=000016445
    MARTEN
    MARTEN --- ---
    REFLEX: osobne pouzivam *.vcap.me, vse smeruje na localhost a nemusim resit hosts. V kontejneru pak lezu podle nazvu containeru, takze treba na mysql. A pokud potrebuju neco manualnejsiho, tak je tam parametr extra_hosts
    REFLEX
    REFLEX --- ---
    DANIELSOFT: no jsem z toho zmateny, nechapu ze to tedy predtim slo :D (a bohuzel nemam moc cas to resit)
    DANIELSOFT
    DANIELSOFT --- ---
    REFLEX: bez toho, že zadáš "--network host" to /etc/hosts z hosta nebere

    můžeš vytvořit či modifikovat /etc/hosts uvnitř kontejneru nějak ručně (třeba echem) pokud ti nevyhovuje zadat "--network host" u Dockeru
    REFLEX
    REFLEX --- ---
    REFLEX: coz asi by default nedela, tak nechapu proc to najednou nejde :D
    REFLEX
    REFLEX --- ---
    Upgradoval jsem ubuntu na 22 na stroji na praci a prestal mi fungovat v kontejneru resolve na http://mujvyvoj.local/ coz smerovalo na muj stroj

    Tedy mel jsem v /etc/hosts zaznam a ten se nejak by default propisoval i do kontejneru, ale po upgradu to nejde, nevite co s tim?
    QWWERTY
    QWWERTY --- ---
    MORTAELTH: ad zestihlovani base image

    Using Alpine can make Python Docker builds 50× slower
    https://pythonspeed.com/articles/alpine-docker-python/
    MORTAELTH
    MORTAELTH --- ---
    nejlepsi na zrychleni buildu je zestihlit baseimage a nasledny pridavky do nej :) Jasny, ne vzdycky to jde, ale dat si "distroless" base image je dobry cil :)
    SH_PANDA
    SH_PANDA --- ---
    SH_PANDA: jsem vul - --add-host v docker build. ted uz jenom vyresit docker run - tam musim tu IP adresu :-/
    SH_PANDA
    SH_PANDA --- ---
    potrebuju zrychlit build kontejneru - velky context, caste rebuildy, tisice npm balicku.

    rozjel jsem si apt cacher https://docs.docker.com/samples/apt-cacher-ng/ a npm registry proxy ve https://verdaccio.org/docs/what-is-verdaccio v nejakem svem "registry cache docker compose" a ted bych je chtel pouzit v buildech kontejneru.

    zatim to resim pres ARG do ktereho poslu IP adresu docker hostu (ip addr show docker0)

    ale to mi prijde jako malo robustni. neresil jste to nekdo?
    VELDRANE
    VELDRANE --- ---
    Ahoj,
    je nejaka cesta treba pres pluginy jak rozsirit built in variables v Helmu ? A ted nemyslim pres samotny _helpers.tpl ale nakou casti kodu, ktera mi bude zavola nejakej command a na zaklade jeho vystupu mi nastavi nejakou buil-in promenou kterou pak se pak pouzije v nejake template ? Priklad:

    Mame k8s clustery, ktery maj ruzny verze a nak tery se ruzny aplikace instalujou jinym stylem. Potrebuju zjistit treba pres kubectl co to je za cluster a na zaklade neho si vyplnit promenny ohledne lokace image a dalsi veci. Myslel sem ze by to mohlo jit pres pluginy, ale z tech prikladu mi prijde ze ta ficura je pro neco uplne jinyho nez potrebuju.

    A dotaz cislo dve. Jde nejak bez nejakejch externich obezlicek vyplnit release.version na zaklade toho co je v gitu ?
    JON
    JON --- ---
    ADM:
    MLEKAR_STEIN:
    Dekuju za rady - zvysil jsem ty max pull a max push, pridal delsi timeout pro docker-compose a situace je vyrazne lepsi (i kdyz ne 100% dobra).
    Porad se obcas nektery docker-daemon zasekne na tom pushovani, ktere nemuze uspet, ale je to vyrazne vyrazne min - tj ted uz si dokazu predstavit, ze pro tuhle eventualitu tam budeme mit nejakej automatickej restart - a jeste zkusim trochu potunit ty parametry, aby to bylo ok.
    ADM
    ADM --- ---
    JON: kdysi jsme resili podobny problem s tim, ze docker-registry proste nestihal vic simultanich push pull image (tech deploymentu bylo hodne a casto se to proste seslo) a koncilo to timeoutem. uz si nevzpominam jak se to vyresilo, to znamena, ze asi nejak standardne zvysenim limitu (a nebo to byl primo nejaky problem s limity v bamboo, ktery buildoval a pushoval). vas problem vypada jinak, ale na docker-registry bych se urcite podival. ssd jak tu nekdo zminoval na vytizenejsich /var/lib/docker to potvrzuju
    Kliknutím sem můžete změnit nastavení reklam