Cloud

DVOP4 PIT

Bc. Matěj Cajthaml ©

Smíchovská střední průmyslová
škola a gymnázium

icon

Virtualizace

Virtualizace

  • cílem je oddělení HW a SW
  • příklady: VirtualBox, VMware, Hyper-V
  • výhody: izolace, bezpečnost, snadná migrace
  • nevýhody: výkon, náročnost na HW

Proč není vhodné mít veškerý SW na jednom systému (OS, platformě, ...)?

Kontejnarizace

Kontejnarizace

  • cílem je oddělení aplikací s možností rychlého nasazení
  • sdílené jádro OS
  • příklady: Docker, Podman, LXC
  • výhody: rychlost, izolace, snadná migrace
  • nevýhody: výkon, náročnost na HW

Jak to funguje

  • izolace na bázi jmenných prostorů
    • omezíme kdo co vidí a může přistupovat
  • potřebujeme:
    • docker daemon
    • docker client
    • docker image

Z jmených prostorů se čistě teoreticky nemělo dát uniknout. Ale děje se to.

Docker image

  • obsahuje vše potřebné pro běh aplikace
  • určujeme, co tedy OS má mít nainstalované, jak se zapne, atd.
  • je založen na vrstvách — ulehčení sdílení
  • je možné vytvářet vlastní, sdílet je a podobně
  • docker image se staví z tzv. Dockerfile

Ukázka dockerfile

Sestavení a spuštění

  • sestavení: docker build -t node-app .
  • spuštění: docker run -d -p 3333:3000 node-app

  • aplikace poběží na portu 3333, v appce spouštíme na 3000
  • oddělujeme tím zcela porty kontejneru a hosta

Co dělá kontejner?

  • po zapnutí žije do té doby, než je zastaven
  • při spadnutí se (dle nastavení) restartuje
  • pokud nic nenastavíme, data se po restartu ztratí
  • pokud chceme data uchovat, musíme určit co se má uložit a namapovat
  • tzv. volume

Výhody při správně nastaveném kontejneru

  • snadná migrace
  • snadné škálování
  • snadné nasazení
  • snadná aktualizace
  • snadná izolace a dobrá bezpečnost

Docker-compose

Docker-compose

  • jeden kontejner obsahuje jednu službu
  • co když je služba závislá na jiné službě?
  • např. databáze, cache, jiné API
  • řešení: docker-compose - možnost definovat více kontejnerů a vzájemné závislosti

Ukázka docker-compose

Příkazy

  • spuštění: docker-compose up -d
  • zastavení: docker-compose down

Tvorba docker-compose

Práce

Vytvořte si pro nějakou netriviální službu s alespoň 2 kontejnery docker-compose.

Jednoduché nasazení

  • při změně stačí jen:
    • sestavit nový image
    • stáhnout image na serveru
    • vypnout
    • aktualizovat compose
    • spustit

CI/CD

CI/CD

  • CI = Continuous Integration
  • CD = Continuous Deployment

  • chceme mít vše automatické
  • chceme naší aplikaci testovat a nasazovat automaticky

  • při každé změně v repozitáři se spustí testy
  • při úspěšném testu se nasadí

GitHub Actions

Práce

Zjistěte, jak vypadá konfigurace GitHub Actions a jak se dá použít pro CI/CD.

Kubernetes

Kubernetes

  • orchestrace kontejnerů
  • řeší škálování, zálohy, aktualizace, ...
  • např. pokud jsou přeplněné instance, spustí se další
  • automaticky loadbalancing, sdílení služeb

Ukázka Kubernetes

Práce

  • najděte si nějaký návod na Kubernetes
  • zkuste pochopit, jak funguje
  • př. si zkuste něco nasadit

Děkuji za pozornost!

  • matej.cajthaml@ssps.cz
  • https://ssps.cajthaml.eu/