42 lines
3.6 KiB
Markdown
42 lines
3.6 KiB
Markdown
# 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 |