Initial commit: визитка mikhailkilin.ru
Rust/Axum HTTP-сервер, Dockerfile, Woodpecker CI pipeline, Kubernetes-манифесты для деплоя на k3s. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
56
README.md
Normal file
56
README.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# bcard
|
||||
|
||||
Персональная визитная карточка [mikhailkilin.ru](https://mikhailkilin.ru).
|
||||
|
||||
## Стек
|
||||
|
||||
- **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