Věřím, že původnímu tazateli bude libovolné z nabízených řešení nejen stačit, ale i vyhovovat.
Ten problém je ale trochu širší. Co když budu mít přísnější požadavky? Které řešení zbyde? Za mě:
- nechci ani měnit konfiguraci stávajících běžících docker-kontejnerů, a to ani těch budoucích
- nechci do kontejnerů instalovat kvůli tomu žádný dodatečný software
- kontejner nemá vůbec znát který router/proxy na něj posílá požadavky/load balancing
- kontejner nemá znát ani doménu na které poběží (hostname je pro identifikaci ok)
- vše výše uvedené chci mít v samostatné konfiguraci na tom routeru/proxy/LB...
- kontejnerům se mění IP adresa, takže nepřipadá v úvahu ji někam do té konfigurace zapisovat
- jsem ochotný nastavit DNS, ale jen jednorázově, a tedy budou záznamy směrovat spíš na ten router, ne na jednotlivé kontejnery
- chci instalovat max. jednu službu, tedy NE agenty do kontejneru + proxy/router + bind/dnsmasq + dynDNS, ... to můžu mít rovnou celé k0-8s
Nejblíže tomuto stavu je podle mě ten
traefik.
Pokud máte všude IPv6, tak existuje ještě možnost, že když každému kontejneru nastavujete fixní MAC adresu, tak dostává přidělenou stále stejnou IPv6 adresu (to jste věděli?), a s tím už se dá taky nějak pracovat, třeba skrz to DNS.
Pak ale chcete aby ty kontejnery mohly komunikovat i mezi sebou a zase hledáte rovnák...
Nějakou tu reversní proxy si může nainstalovat každý, ale to spoustu věcí neřeší.
I ten
traefik to má nahnuté, naštěstí konfigurace, kterou nastavujete jako
labely v dockeru při startu kontejneru, není povinná, a můžete ji mít v
traefiku. Člověk by řekl, že si ty
labely může jako metadata u běžícího kontejneru libovolně přidávat a měnit, což ale docker neumí (WTF?). Takže úplně všechno konfigurovat nelze.
A ideální řešení?
- služba se sama aktualizuje podle toho, co v dockeru běží - traefik
- uživatel dodá konfiguraci zvlášť - traefik (skoro)
- vše potřebné už běží, nic dalšího se neinstaluje - kubernetes