První kroky v PaaS od Home at Cloud

Pro práci s PaaS platformou, kterou Home at Cloud poskytuje, je potřeba mít nainstalovaného klienta, jehož prostřednictvím lze komunikovat a interagovat s API cloudové aplikační platformy Cloud Foundry (CF). Klienta instalujeme do lokálního prostředí, kde se nachází / bude nacházet kód aplikace, kterou chceme do Cloud Foundry nasadit. Pokud platformu pouze testujete, doporučujeme použít pro provoz klienta Cloud Foundry malé testovací VPS nebo virtuální stroj v rámci služby Public Cloud, případně lokální virtuální stroj (např. s využitím nástroje VirtualBox). Návod na instalaci klienta Cloud Foundry (cf-cli) je k dispozici například na stránkách Cloud Foundry. Doporučujeme nainstalovat verzi klienta 6.20.0 (např. pomocí příkazu sudo apt-get install cf-cli=6.20.0). V případě operačního systému Linux Debian je možné klienta prostřednictvím správce balíčků nainstalovat například následujícím způsobem:

  1. Přidání veřejného GPG klíče Cloud Foundry Foundation do seznamu důvěryhodných klíčů:
    sudo wget -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add -
  2. Přidání repositáře balíčku Cloud Foundry CLI do seznamu důvěryhodných zdrojů software:
    sudo echo "deb https://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list
  3. Aktualizace seznamu dostupných zdrojů software:
    sudo apt-get update
  4. Instalace klienta Cloud Foundry cf-cli:
    sudo apt-get install cf-cli=6.20.0
  5. Ověření správné instalace klienta:
    cf --version

Pokud je klient nainstalován správně, zobrazí výstup předchozího příkazu verzi instalovaného klienta. V takovém případě můžeme přikročit k přihlášení do Cloud Foundry, které je pro práci s PaaS nezbytné.

Přihlášení do PaaS

Nyní máte nainstalovaného klienta Cloud Foundry (cf-cli). Pro práci s PaaS je v první řadě nutné provést přihlášení do prostředí vašeho poskytovatele PaaS / Cloud Foundry. Při přihlášení je potřeba zadat:

  • poskytovatele PaaS / Cloud Foundry (API endpoint) – api.paas.homeatcloud.cz
  • přihlašovací jméno (Email) – naleznete v emailu „Zřízení objednaných služeb“
  • heslo (Password) – naleznete v emailu „Zřízení objednaných služeb“

Pro přihlášení do Cloud Foundry použijeme příkaz cf login a zadáme požadované údaje. Po úspěšném přihlášení dostaneme přístup k příslušné organizaci (organization) a umístění (space) v rámci Cloud Foundry. Poskytovatel PaaS vytvoří autentizační token s omezenou platností, takže při dalším používání klienta není potřeba stále znovu zadávat přihlašovací údaje. To bude nutné poté, co vyprší platnost daného autentizačního tokenu. V případě potřeby se můžeme odhlásit pomocí příkazu cf logout. Nyní jsme tedy do PaaS / Cloud Foundry úspěšně přihlášeni, můžeme zadávat příkazy ve tvaru cf <příkaz>, které klient cf-cli zformátuje a odešle poskytovateli Cloud Foundry / PaaS.

Jestliže použijeme příkaz cf bez dalšího příkazu/parametru, zobrazí cf-cli základní nápovědu, kterou můžeme vyvolat také pomocí příkazu cf –h, cf –help nebo cf help. Pokud chceme výstup příkazu nápovědy stránkovat, můžeme jej přesměrovat například příkazu less (cf –help | less) a poté se můžeme ve výpisu pohybovat šipkami nebo stránkovat pomocí mezerníku, PageUp, PageDown, apod. Úplný výpis nápovědy pak získáme pomocí příkazu cf help –a.

PaaS_2

Nasazení aplikace v PaaS

Pokud jsme přihlášeni do Cloud Foundry, můžeme provést nasazení ukázkové aplikace v Java. Ukázkový scénář nasazení aplikace do Cloud Foundry zahrnuje nasazení testovací aplikace z operačního systému Debian. V této ukázce použijeme testovací aplikaci Spring Music (katalog hudebních alb se základními funkcemi CRUD).

PaaS_3

Kód této aplikace je k dispozici v rámci repositáře github, odkud jej do umístění, kam jsme v rámci předchozího postupu nainstalovali klienta cf-cli, naklonujeme pomocí příkazu git. Nejprve tedy nainstalujeme nástroj git pomocí příkazu sudo apt install git. Poté můžeme naklonovat kód ukázkové aplikace pomocí příkazu git clone https://github.com/cloudfoundry-samples/spring-music. Nyní je kód aplikace dostupný v rámci stroje, kde se nachází dříve instalovaný klient cf-cli.

Jelikož se jedná o aplikaci v programovacím jazyce Java, je nezbytné kód nejprve sestavit. Pro tyto účely budeme potřebovat OpenJDK, které nainstalujeme pomocí příkazu sudo apt install openjdk-8-jdk. Nyní se přesuneme do adresáře kódu aplikace pomocí příkazu cd spring-music. Zahájení sestavení aplikace iniciujeme pomocí příkazu ./gradlew clean assemble. Po úspěšném sestavení je k dispozici balíček aplikace, který můžeme nasadit do Cloud Foundry.

Nyní již stačí pouze provést příkaz cf push, který zajistí vytvoření kontejneru, nasazení a spuštění aplikace. Úspěšné nasazení aplikace lze ověřit příkazem cf apps, na jehož výstupu by aplikace s názvem spring-music měla být zobrazena.

PaaS_4

Aplikace je tedy nyní veřejně dostupná na adrese, která je v rámci výstupu příkazu cf apps uvedena v příslušném řádku ve sloupci urls, což lze ověřit tak, že spustíme webový prohlížeč a danou URL v prohlížeči otevřeme.

Jak již bylo uvedeno, jsou podpůrné služby zajišťovány externě. Pokud tedy provádíme push aplikace, která pro start podpůrnou službu potřebuje, může nasazení aplikace selhat. V takovém případě je vhodné provést cf push s parametrem −−no−start, což zajistí nasazení aplikace, ale nikoli její spuštění. Poté lze aplikaci přiřadit službu a aplikaci spustit manuálně.

Pokud byste se potřebovali přihlásit k terminálu virtuálního stroje, respektive kontejneru, v jehož rámci aplikace běží, pak jednoduše použijete příkaz cf ssh <app_name>. Z terminálu aplikace se pak odhlásíte pomocí příkazu exit.

Základní správa životního cyklu aplikace

Aplikace běží a je dostupná pro uživatele. Na tomto místě uvedeme několik dalších příkazů, které se mohou při správě životního cyklu aplikace hodit:

SPRÁVA APLIKACÍ

  • Zobrazení běžících aplikací: cf apps
  • Zobrazení routes, které přijímají požadavky: cf routes
  • Zobrazení logů běžící aplikace: cf logs −−recent
  • Zastavení aplikace: cf stop <app_name>
  • Spuštění aplikace: cf start <app_name>
  • Restart aplikace (všech instancí): cf restart <app_name>
  • Škálování aplikace:
    • Škálování počtu instancí: cf scale <app_name> -i <int>
    • Škálování disku: cf scale <app_name> -k <1024 MB | 1G | …>
    • Škálování paměti: cf scale <app_name> -m <1024 MB | 1G | …>
  • Správa proměnných aplikace:
    • Zobrazení proměnných aplikace: cf env <app_name>
    • Nastavení proměnné aplikace: cf set-env <app_name>
    • Odstranění proměnné aplikace: cf unset-env <app_name>
  • Odstranění aplikace:
    • Odstranění aplikace, ale ne route: cf delete <app_name>
    • Odstranění aplikace i route: cf delete <app_name> -r
    • Odstranění aplikace i route bez potvrzení: cf delete <app_name> -r -f

SPRÁVA SLUŽEB

  • Zobrazení dostupných poskytovatelů služeb: cf m
  • Zobrazení dostupných konfigurací služby: cf m -s <service_name>
  • Vytvoření instance služby: cf create-service <service_name> <service_plan> <service_instance_name>
  • Zobrazení instancí (objednaných) služeb: cf services
  • Zobrazení informací o instanci (objednané) služby: cf service <service_instance_name>
  • Připojení instance služby k aplikaci: cf bind-service <app_name> <service_instance_name>
  • Odebrání instance služby aplikaci: cf unbind-service <app_name> <service_instance_name>
  • Odstranění instance služby: cf delete-service <service_instance_name>

PaaS_5

Použití podpůrných služeb pro aplikace

Jak již bylo uvedeno, nejsou podpůrné služby (databázové systémy, message queue, apod.) v případě cloudových aplikací jejich součástí ani nejsou obsaženy v kontejneru, v jehož rámci aplikace běží, ale naopak jsou zajišťovány externě prostřednictvím poskytovatelů služeb. V dalším textu si proto ukážeme, jakým způsobem pro aplikaci podpůrnou službu zajistíme. Budeme přitom předpokládat, že jsme v rámci PaaS přihlášeni, a že naše aplikace je nasazena a běží. Nejprve zobrazíme seznam dostupných poskytovatelů služeb, a to příkazem cf m. Jak je patrné z následujícího obrázku, jednou z dostupných služeb je také relační databázový systém PostgreSQL. Příkazem cf m –s postgres zobrazíme dostupné konfigurace dané služby. Novou instanci služby PostgreSQL pak vytvoříme pomocí příkazu cf create-service postgres standard my_postgres. Úspěšné vytvoření instance služby můžeme ověřit pomocí příkazu cf services, detail instance služby zobrazíme pomocí příkazu cf my_postgres.

Aby byla služba pro aplikaci dostupná, musíme ji aplikaci přiřadit. Provedeme to pomocí příkazu cf bind-service spring-music my_postgres, kde spring-music představuje název aplikace a my_postgres název instance služby, kterou aplikaci přiřazujeme. Úspěšné přiřazení instance služby aplikaci ověříme pomocí příkazu cf services, kde na výstupu bude ve sloupci bound apps zobrazena aplikace, jíž jsme danou instanci služby právě přiřadili. Přiřazená instance služby bude nicméně pro aplikaci dostupná až ve chvíli, kdy budou aplikaci předány příslušné proměnné prostředí obsahující přístupové údaje k dané instanci služby. Naštěstí to PaaS zařídí za nás a postačí, když zadáme příkaz cf restage spring-music, což zajistí opětovné nasazení aplikace, v jejímž rámci již bude instance služby pro aplikaci dostupná. To, že jsou nyní proměnné prostředí obsahující přístupové údaje dané instance služby pro aplikaci dostupné, můžeme ověřit pomocí příkazu cf env spring-music.

Jestliže aplikaci odstraníme, instance služby bude i nadále existovat. Pokud ji chceme odstranit, použijeme příkaz cf delete-service my_postgres. V případě, že je daná instance připojena k některé aplikaci, bude toto připojení odstraněno. Proto je dobré po odstranění instance služby opět u příslušných aplikací provést cf restage nebo ještě lépe před odstraněním instance služby provést zrušení připojení služby k aplikaci pomocí příkazu cf unbind-service <app_name> <service_instance>. Úspěšné odstranění služby pak můžeme ověřit pomocí příkazu cf services.

Pokud jde o databázi MySQL, respektive MariaDB, pak je v PaaS dostupný plugin pro cf-cli, který lze nainstalovat pomocí příkazu cf install-plugin -r „CF-Community“ mysql-plugin, a jehož prostřednictvím se lze do poskytnuté instance dané databáze přihlásit. Pro tyto účely musíme ale mít na stroji, kde máme nainstalováno cf-cli a odkud se do PaaS přihlašujeme, balíček mysql-client (pokud je nainstalován nemáte, můžete jej instalovat pomocí příkazu sudo apt install mysql-client). Pak již pro přihlášení do databáze (pokud jste v PaaS přihlášeni) stačí zadat příkaz cf mysql <mysql_service_name>. Úspěšné přihlášení je indikováno změnou promptu na prompt databázového klienta.

PaaS_6

Závěrem

Nápovědu k dalším příkazům souvisejícím se škálováním aplikace, nastavováním proměnných prostředí, atd., získáte pomocí cf help –a, a vyhledáním nápovědy ke konkrétnímu příkazu nebo na stránkách dokumentace. Samozřejmě se také můžete obrátit na nás. Pokud při testování nebo používání služby PaaS narazíte na jakýkoli problém, neváhejte a napište nám nebo volejte.