Riešenie: Kubernetes Cluster
a CI/CD Pipelines
Pôvodný proces nasadzovania v Slovensko.Digital bol veľmi jednoduchý a programátorsky prívetivý – spočíval v nahraní zmien do git repozitára. Pretože sme chceli v čo najväčšej miere jednoduchosť tohto procesu zachovať, rozhodli sme sa vybudovať Kubernetes cluster a nasadzovanie vykonávať pomocou CI/CD pipelines. Pre Kubernetes síce existuje Dokku scheduler, vďaka ktorému by sa pre programátorov nezmenilo vôbec nič, avšak pre naše použitie bol vo viacerých smeroch limitujúci. Siahli sme preto po možnostiach, ktoré nám ponúka software Gitlab.
V novom prostredí sa aplikácia automaticky vybuilduje do Docker kontajnera. Následne sa môže vykonať scan aplikácie, pre možný únik hesiel a iných citlivých dát. Samotný gitlab slúži aj ako privátny register pre docker image. K docker imageu je vďaka pipeline vybuildovaný Helm chart, ktorý popisuje zdroje potrebné pre aplikáciu v Kubernetes prostredí. Nové verzie aplikácií kontroluje Helm. Nová verzia sa nasadí až v momente úspešného healthcheck testu. Ak sa vyskytnú problémy ktoré neboli odhalené automaticky, je možné aplikáciu rýchlo vrátiť do pôvodného stavu.
Nové riešenie neobsahuje len produkčné, ale aj testovacie prostredie. Na testovacom prostredí si môže tím Slovensko.Digital svoju aplikáciu poriadne otestovať pred nasadením do produkcie. Databázové migrácie sú spúšťané automaticky pri každom nasadzovaní a aj let’s encrypt certifikáty sú v Kubernetes konečne naozaj automatické.
Vďaka Bonet Systems a Kubernetes má teraz Slovensko.Digital možnost rýchlo a jednoducho pridávať výpočtové zdroje podľa potreby. V prípade nutnosti pridania zdrojov, jednoducho pridáme ďalší Kubernetes node server – bez akéhokoľvek výpadku, či potreby zložitého nastavovania. Nasadené riešenie zvýšilo dostupnosť všetkých služieb Slovensko.Digital. Pri výpadku akéhokoľvek node servera (a výpadkom sa nikdy nedá úplne vyhnúť) sú kontajnery, ktoré na ňom bežali automaticky spustené na ostatných serveroch v clustri.