Jak jednoduše dělat deployment do cloudu?

andy

Jak jednoduše dělat deployment do cloudu?
« kdy: 21. 12. 2016, 13:18:57 »
Jednoduché zadání:
- aplikace je binárka, po spuštění má endpoint na nějakém portu X; případně ji mám i dokerizovanou
- je to single-instance aplikace
- aplikace poběží v AWS
- chci tuto aplikaci pustit "do světa" přes HTTPS, ideálně s let's encrypt certifikátem a automatickým managementem
- mělo by to být jednoduše administrovatelné, tzn. časem nějaký automatický deployment apod.

Jakým způsobem to jednoduše udělat? Nemám pocit, že by na to byla potřeba umělá inteligence (viz. https://xkcd.com/1425), takže bych očekával, že způsob implementace tohoto zadání se nebude příliš lišit od délky tohoto zadání - bohužel vše, na co jsem narazil (typu instalace Kubernetes, různé docker instalace apod.) jsou mnohastránkové tutorialy, kde se ještě různě švindluje (pro produkci by ten manuál byl ještě 2x delší). Mám špatná očekávání, nebo jsem jenom nenašel ten "správný nástroj"?


samalama

Re:Jak jednoduše dělat deployment do cloudu?
« Odpověď #1 kdy: 21. 12. 2016, 13:31:54 »
ansible

imo dokumentaciu, v konecnom dosledku, musis citat ku vsetkemu, pokial nerobis nejake fakt trivialne veci...

true

Re:Jak jednoduše dělat deployment do cloudu?
« Odpověď #2 kdy: 21. 12. 2016, 18:39:45 »
Jakým způsobem budete řešit novž deploy tak, aby nebylo potřeba již spuštěnou aplikaci na serveru nejprve ukončit?

andy

Re:Jak jednoduše dělat deployment do cloudu?
« Odpověď #3 kdy: 21. 12. 2016, 18:48:54 »
Jakým způsobem budete řešit novž deploy tak, aby nebylo potřeba již spuštěnou aplikaci na serveru nejprve ukončit?
Skončím to. Možná časem dám webový frontend vedle (ten už bude multi-instance), ale tohle je zatím backend ke klientům, kterým krátký výpadek nevadí.

Mně to připadá dost jednoduché zadání... zatím pro mě asi nejpochopitelnější cesta je elastic beanstalk s nějakou custom-made nginx proxy, ale čekal bych, že to půjde udělat fakt nějak jednoduše.... to ansible zrovna jednoduché není.

true

Re:Jak jednoduše dělat deployment do cloudu?
« Odpověď #4 kdy: 21. 12. 2016, 19:06:17 »
Jakým způsobem budete řešit novž deploy tak, aby nebylo potřeba již spuštěnou aplikaci na serveru nejprve ukončit?
Skončím to. Možná časem dám webový frontend vedle (ten už bude multi-instance), ale tohle je zatím backend ke klientům, kterým krátký výpadek nevadí.

Mně to připadá dost jednoduché zadání... zatím pro mě asi nejpochopitelnější cesta je elastic beanstalk s nějakou custom-made nginx proxy, ale čekal bych, že to půjde udělat fakt nějak jednoduše.... to ansible zrovna jednoduché není.
AWS podporuje (AWS CLI) deploy i celé disk-image, doporučuju se na to podívat, takový skript bude mít jen pár řádků. Jednodušší může být už jen obyčejné zkopírování binárky.


andy

Re:Jak jednoduše dělat deployment do cloudu?
« Odpověď #5 kdy: 22. 12. 2016, 00:29:08 »
AWS podporuje (AWS CLI) deploy i celé disk-image, doporučuju se na to podívat, takový skript bude mít jen pár řádků. Jednodušší může být už jen obyčejné zkopírování binárky.
Jojo, to taky hodlám používat, jenomže mě trochu štve, že s větou "potřebuj SSL terminaci s letsencrypt" strávím dva dny (tzn. vyrobení nějakého docker image, kouzlení asi s s6, potom buď kouzlení s nějakýma persistent volumama nebo psaní skriptů na ukládání certifikátů na S3....). Tak nějak bych si představoval jendodušší řešení....

Homeatcloud

Re:Jak jednoduše dělat deployment do cloudu?
« Odpověď #6 kdy: 22. 12. 2016, 13:06:32 »
Zdravím!
Pokud jde o deployment aplikací a management jejich životního cyklu, je naším favoritem Cloud Foundry. Stačí si stáhout CLI utilitu CF a v adresáři s aplikací podporovanou nějakým Buildpackem napsat trademarkové "cf push" a aplikace běží. Umí to monitorovat a škálovat, testovací a produkční prostředí je stejné, při změně binárky to udělá rolling deploy. Součástí platformy jsou services. Už máme připravené MySQL, Postres, Mongo, RiakCS, Redis, Memcache a RabbitMQ. Všechny v HA clusteru. A pozor, v posledních verzích se pod CF dá spustit i Docker kontejner. Vyzkoušet se to dá ve virtuálce jako Micro Cloud Foundry nebo u nás. V produkčním rozsahu včetně těch služeb je to projekt rozsahu "Děti, tohle doma nezkoušejte". Už nám to na OpenStacku zabralo přes 80 GB RAM na třech strojích a to na tom ještě nejsou klienti. Pokud jsme si vědomi, v Čechách a přilehlém okolí PaaS cloud nikdo jiný nemá.

V každém případě, kdo nám pomůže testovat, dostane kvótu na provoz menší produkční aplikace na půl roku zdarma, napište na kontakty z https://www.homeatcloud.cz/ a dostanete testovací účet.

Ad https - to ještě nemáme v testovací verzi vyřešené. V ostré to samozřejmě bude. V PaaS se dá HTTPS řešit dvěma způsoby - buď si koupíme na doménu *.cf.homeatcloud.cz wildcard certifikát a schovají se pod něj všichni klienti, nebo se před GoRouter (komponenta CF) posadí HAProxy. Mám skript v Saltu, které na administrátorské stanici generuje certifikáty a pak je rozkopíruje na high-availability setup 3x HAProxy a keepalived. Za tím ostatně běží celý cloud Homeatcloud. Na HAProxy je roztomilá odbočka, která pro libovolnou doménu směruje ověřovací cestu na interní webový server nástroje letsencrypt/certbot.

Takže obecná rada pro andyho - použijte nějakou PaaS platformu a pokud nemá HTTPS, udělejte si malou virtuálku s proxy serverem. Stačí funkce Apache, pro který má letsencrypt podporu. Kdysi jsem tak dělal bezešvou integraci nějaké aplikace na PaaS dovnitř webové prezentace firmy, která byla v PHP na hostingu.

john

Re:Jak jednoduše dělat deployment do cloudu?
« Odpověď #7 kdy: 15. 01. 2017, 18:57:29 »
AWS App ELB s https certifikatom, ktory bude balancovat traffic na AWS ECS cluster (extremny kluster = 1 EC2 instance). Obnovenie LE certu moze byt tiez kludne jedna dockerizovana app, ktora bude bezat iba v pripade potreby v ECS klustri.

Deployment: tvoje CI zbuilduje Docker image a potom iba updatne ECS task/service definition.

Kubernetes ma viac feature, ale instalacia a jeho udrziavanie je zlozite. Idealne kebyze ho vies kupit ako service v GCP. Ty si vsak v AWS, tak potom je ECS spravna volba.

Re:Jak jednoduše dělat deployment do cloudu?
« Odpověď #8 kdy: 15. 01. 2017, 22:48:36 »
U AWS nepotrebujete resit LE certifikaty, protoze dostanete zdarma amazoni, vcetne jejich obnovy a podobne. Jen ho nedostanene do ruky, ale bude lezet na jejich https proxy, coz vetsinou nevadi, protoze si proste zaregistrujete instanci pod ni a nemusite resit ssl u sebe.

Obecne pokud zacinate s AWS, tak to da hodne cteni, protoze to se neda brat jako ze si pronajimate PC, to je uplne jiny svet. Ty "pocitace" jinak bootuji, jinak se ovladaji, nevydrzi vecne, je potreba davat pozor kam se ukladaji data, jinak se posila posta. Proste na zacatek je to hodne cteni a prebirani, co pouziju a co nepouziju.