This commit is contained in:
55
README.md
55
README.md
@@ -1,56 +1,5 @@
|
|||||||
# bcard
|
# bcard
|
||||||
|
|
||||||
Персональная визитная карточка [mikhailkilin.ru](https://mikhailkilin.ru).
|
Персональная визитка https://mikhailkilin.ru
|
||||||
|
|
||||||
## Стек
|
Rust/Axum web-сервер. CI/CD: Woodpecker (build) + ArgoCD (deploy).
|
||||||
|
|
||||||
- **Rust** + [Axum](https://github.com/tokio-rs/axum) — HTTP-сервер
|
|
||||||
- **Tokio** — асинхронный рантайм
|
|
||||||
- **Docker** — multi-stage сборка (builder на `rust:1.75`, финальный образ на `debian:bookworm-slim`)
|
|
||||||
- **Woodpecker CI** — автоматическая сборка и пуш Docker-образа в реестр `git.mikhailkilin.ru`
|
|
||||||
|
|
||||||
## Структура
|
|
||||||
|
|
||||||
```
|
|
||||||
.
|
|
||||||
├── src/
|
|
||||||
│ └── main.rs # HTTP-сервер, отдаёт HTML на /
|
|
||||||
├── k8s/
|
|
||||||
│ └── bcard.yaml # Kubernetes-манифест (Namespace, Deployment, Service, Ingress)
|
|
||||||
├── Cargo.toml # Зависимости: axum, tokio
|
|
||||||
├── Dockerfile # Multi-stage сборка
|
|
||||||
└── .woodpecker.yml # CI-пайплайн
|
|
||||||
```
|
|
||||||
|
|
||||||
## Запуск локально
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cargo run
|
|
||||||
```
|
|
||||||
|
|
||||||
Сервер стартует на `http://0.0.0.0:3000`.
|
|
||||||
|
|
||||||
## Сборка и запуск через Docker
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker build -t bcard .
|
|
||||||
docker run -p 3000:3000 bcard
|
|
||||||
```
|
|
||||||
|
|
||||||
## CI/CD и деплой
|
|
||||||
|
|
||||||
При пуше в репозиторий:
|
|
||||||
|
|
||||||
1. **Woodpecker CI** собирает Docker-образ и пушит в `git.mikhailkilin.ru/killingdruid/bcard:latest`
|
|
||||||
2. **ArgoCD** подхватывает манифесты из `k8s/` и деплоит на кластер
|
|
||||||
|
|
||||||
Для работы пайплайна в настройках репозитория Woodpecker должны быть заданы секреты `docker_username` и `docker_password`.
|
|
||||||
|
|
||||||
## Инфраструктура
|
|
||||||
|
|
||||||
Сервис разворачивается на K3s-кластере (`k8s/bcard.yaml`):
|
|
||||||
|
|
||||||
- **Namespace:** `bcard`
|
|
||||||
- **Deployment:** 1 реплика, образ из Gitea-реестра
|
|
||||||
- **Service:** ClusterIP, порт 80 → 3000
|
|
||||||
- **Ingress:** `mikhailkilin.ru`, TLS через cert-manager (Let's Encrypt)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user