zkt22/z2/readme.md

3.6 KiB

Základy klaudových technológií - Zadanie 2

Ondrej Ladomirják

Funkcionalita aplikácie

Táto aplikácia sa skladá z dvoch kontajnerov mongodb a mongo-express a slúži na správu NoSQL databázy MongoDB. Keďže práca s databázou cez príkazový riadok nie je veľmi "user-friendly", tak súčasťou je taktiež webové rozhranie pre správu databázy Mongo-Express, v ktorom možno vytvárať nové databázy, kolekcie, a pridávať do novovytvorených kolekcií potrebné záznamy.

Použité kontajneri

Použité boli dva kontajneri. Prvý kontajner je vytvorený v súbore mongo-stateful-set.yaml a drží najnovší obraz mongo. Druhý kontajner je vytvorený v súbore mongo-express-deployment.yaml a drží najnovší obraz mongo-express. Oba kontajneri využívajú objekt typu Secret, ktorý drží autentifikačné údaje vo formáte base64. Tieto údaje sú volané pri volaní premenných prostredia.

Použité Kubernetes objekty

  • Deployment: použitý pre vytvore mongo-express PODu. Stará sa o beh mongo-express aplikácie.
  • Service: použitý pre vytvorenie spojenia medzi PODmi.
  • Secret: udržiava citlivé informácie. V našom prípade meno a heslo.
  • Namespace: slúži pre lepšie usporiadanie aplikácii, s ktorými pracujeme. Bez využitia menných priestorov by sa všetky aplikácie a objekty nachádzali v defaultnom mennom priestore. V jednom mennom priestore by sa mali nachádzať aplikácie, ktoré spolu komunikujú.
  • Statefulset: služi na manažovanie aplikácií, ktoré si potrebujú udržať svoj stav (stateful applications)
  • PersistentVolume: typ objektu, ktorý určuje miesto kde je možné uložiť dáta

Konfigurácia kontajnerov

  • Konfigurácia kontajnera mongo možno nájsť v súbore mongo-stateful-set.yaml a konfiguráciu kontajner mongo-express v súbore mongo-express-deployment.yaml.
  • Vytvorené boli dva kontajneri, ktorým bolo dané meno mongodb a mongo-express.
  • Pre mongodb bola použitá najnovšia verzia obrazu mongo dostupnom na docker hube.
  • Pre mongo-express bola použitá najnovšia verzia obrazu mongo-express dostupnom na docker hube.
  • Namapované boli porty pre mongodb -> 27017:27017.
  • Namapované boli porty pre mongo-express -> 8081:30001.
  • Pre vytvorenie nového používateľa a nastavenia jeho mena a hesla boli v kontajneri mongodb nakonfigurované premenné prostredia MONGO_INITDB_ROOT_USERNAME a MONGO_INITDB_ROOT_PASSWORD, tento používateľ je vytvorený v admin authentication database a je mu pridelená rola root. Defaultne používateľské meno a heslo sa nachádzajú v súbore mongo-secret.yaml vo formáte base64.
  • Pre autentifikáciu a pripojenie mongo-express k mongodb boli použité premenné prostredia ME_CONFIG_MONGODB_ADMINUSERNAME a ME_CONFIG_MONGODB_ADMINPASSWORD. Defaultne používateľské meno a heslo sa nachádzajú v súbore mongo-secret.yaml vo formáte base64.
  • Pre komunikáciu mongo-express s databázovým serverom bola použitá premenná prostredia ME_CONFIG_MONGODB_SERVER, ktorá získava informácie z objektu typu ConfigMap, ten odkazuje na Service, ktorý bol vytvorený pre
  • Pre kontajner mongodb bol vytvorený pomenovaný zväzok volumeMounts s názvom mongopvc, ktorý odkazuje na PersistentVolumeClaim objekt

Príprava aplikácie

sh prepare-app.sh

Spustenie aplikácie

sh start-app.sh

Zastavenie aplikácie

sh stop-app.sh

Sputenie aplikácie na webe

do vyhľadávania je potrebné zadať http://localhost:8081