Projekt

Obecné

Profil

Deployment » Historie » Verze 12

Michal Schwob, 2022-05-31 12:06

1 1 Michal Schwob
h1. Deployment
2
3 7 Michal Schwob
Pro deployment aplikace je využíváno Kubernetes. Byl pro nás vytvořen namespace *cnat*.
4 5 Michal Schwob
Adresa Kuberenes Dashboardu: https://dashboard.kube.zcu.cz/#/overview?namespace=cnat
5 6 Michal Schwob
Přístup nejspíš jenom pro uživatele správce deploymentu (anonymní já :D)
6 2 Michal Schwob
7 1 Michal Schwob
h2. Prerekvizity
8
9 12 Michal Schwob
Konfigurační soubory pro _deployment_ a _service_ databáze, aplikace a frontendu jsou uloženy v repozitory
10 1 Michal Schwob
11
h3. Frontend
12
13
V nginx configu pro frontend musí být vytvořeno přesměrování volání /api na backend server
14 12 Michal Schwob
Requesty na backend se posílají na base adresu /api - nastaveno ve složce _frontend/src/_ v souboru _.env_ (pro deployment musí být nastaveno *_REACT_APP_DEV_ENV=false_*)
15 3 Michal Schwob
Dockerfile pro frontend
16 1 Michal Schwob
17
h3. Backend
18
19 12 Michal Schwob
Před buildem docker image je potřeba spustit build aplikace přes maven příkazem _mvn clean install_
20 3 Michal Schwob
Dockerfile pro backend
21 1 Michal Schwob
22
h2. Kroky pro deploy aplikace:
23
24
h3. Build docker image
25
26 12 Michal Schwob
Nejdříve je potřeba sestavit docker image pro backend a frontend. Stačí spustit příkaz *docker-compose up* ve složce _backend_. Před buildem je ještě potřeba smazat lokální docker image nebo povýšit verzi v souboru _backend/docker-compose.yml_.
27 1 Michal Schwob
Následně image nahrát do docker hubu - příkaz *docker push* a název image, tj. *schwobik/frontend-app:<verze>* nebo *schwobik/backend-app:<verze>*. Verze musí odpovídat verzi uvedené v _docker-compose.yaml_ ve složce _backend_.
28
29 11 Michal Schwob
h3. Vytvoření konfiguračních souborů pro Kubernetes
30 1 Michal Schwob
31 12 Michal Schwob
Konfigurační soubory jsou uloženy v repozitáři. Pokud je potřeba nějaká změna, upravte patřičně soubor_backend/docker-compose.yml_ a pokračujte následujícím návodem, nebo soubory upravte ručně.
32
33 4 Michal Schwob
Soubory se vytvoří příkazem *kompose convert* , pokud je stažen kompose (https://kubernetes.io/docs/tasks/configure-pod-container/translate-compose-kubernetes/)
34 11 Michal Schwob
Soubor frontend-service.yaml je třeba ještě upravit, je třeba přidat řádku _type: LoadBalancer_ do elementu _specs_, jinak by Service nebyla přístupná z venku.
35 1 Michal Schwob
36
h3. Deployment
37
38
Dále stačí nahrát soubory do Kubernetes Clusteru.
39 12 Michal Schwob
40
h3. Zálohování aplikace
41
42
Pro databázi je vytvořen v Kubernetes Physical Volume Claim (PVC) _db-data_, který zajišťuje uchování dat databáze i v případě ukončení či spadnutí Podu s databází.
43
Data z databáze jsou navíc periodicky zálohována na PVC _db-data-backup_ na cestu _/var/backups/_ pomocí Cron Jobu, který je načasován na běh jednou týdně. K záloze je použit nástroj pg_dump.