.. | ||
mongo-configmap.yaml | ||
mongo-express-deployment.yaml | ||
mongo-express-service.yaml | ||
mongo-secret.yaml | ||
mongo-service.yaml | ||
mongo-stateful-set.yaml | ||
namespace.yaml | ||
prepare-app.sh | ||
pv.yaml | ||
readme.md | ||
start-app.sh | ||
stop-app.sh |
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