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. |