flask-htmx-board1/README.md
2023-07-01 21:04:18 +10:00

179 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Table of Contents
1. [Логика доступа к контенту ](#логика-доступа-к-контенту)
1. [Логика деплоя в куб по коммиту ](#логика-деплоя-в-куб-по-коммиту)
1. [Общая схема отдельного приложения](#логика-деплоя-в-куб-по-коммиту)
1. [Логика работы мониторинга](#логика-работы-мониторинга)
Вообще суть такова:
Мы берём фласк, кидаем в контейнер, далее контейнер педалим в кубернетес в деплоймент соответствующий ветке (мастер/дев) с 2-3 подами на деплоймент, всё это должен уметь делать CI/CD
Далее возможно добавление в схему волта
----
## Логика доступа к контенту
[наверх](#table-of-contents)
Попадаем на сервер, nginx отправляет в куб. Там ингресс закидывает на деплоймент соответственно доменному имени. Из деплоймента отвечают свободные поды. Поды ходят в постгрес и минио когда надо.
```mermaid
stateDiagram-v2
state USER
state inet <<join>>
state Nginx
user --> inet : internet
inet --> Nginx : router
state Kube {
NginxIngress
lbServiceMaster
lbServiceDev
state DeploymentMaster {
state "app" as p1
state "app" as p2
}
state DeploymentDev {
state "app" as p1d
state "app" as p2d
}
}
Nginx --> NginxIngress : *.board.vdk2ch.ru, www.vdk2ch.ru
NginxIngress --> lbServiceMaster : master.board.vdk2ch.ru
NginxIngress --> lbServiceDev : dev.board.vdk2ch.ru
lbServiceMaster --> DeploymentMaster
lbServiceMaster --> DeploymentMaster
lbServiceDev --> DeploymentDev
lbServiceDev --> DeploymentDev
state Minio
state Postgresql
state all_join <<join>>
p1 --> all_join
p2 --> all_join
p1d --> all_join
p2d --> all_join
all_join --> Postgres : данные с БД
all_join --> Minio : статика
```
----
## Логика деплоя в куб по коммиту
[наверх](#table-of-contents)
```mermaid
stateDiagram-v2
committer --> Git
Git --> Drone
state "pipeline-${branch}" as pm {
Runner --> Docker : create ${branch} image with new files
Docker --> Kube : ${branch} deploy with new image
}
state branch_fork <<fork>>
Drone --> branch_fork : ветка репо
branch_fork --> pm
```
----
## Общая схема отдельного приложения
[наверх](#table-of-contents)
```mermaid
stateDiagram-v2
User
state inet <<fork>>
User --> inet : дайте борду, запишу свои посты, картинки итд
state Flask {
hmtx : htmx templates
static_files : flask static
}
inet --> Flask
Flask --> Postgres : посты
Flask --> Minio : картинки и шебм
```
----
## Логика работы мониторинга
[наверх](#table-of-contents)
```mermaid
stateDiagram-v2
App
state enter_monitoring <<fork>>
App --> enter_monitoring
enter_monitoring --> Prometheus : metrics
Prometheus --> Grafana
enter_monitoring --> Loki : logs
Loki --> Grafana
state admini {
User : Наш слон
}
Prometheus --> Alertmanager
Loki --> Alertmanager
state alerts_join <<join>>
state dash_join <<join>>
Alertmanager --> alerts_join
Grafana --> alerts_join
alerts_join --> User : алерты
Grafana --> dash_join
dash_join --> User : дашборды
```