Files
bcard/README.md
Mikhail Kilin 3be3f55be4 Initial commit: визитка mikhailkilin.ru
Rust/Axum HTTP-сервер, Dockerfile, Woodpecker CI pipeline,
Kubernetes-манифесты для деплоя на k3s.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 17:58:47 +03:00

2.0 KiB

bcard

Персональная визитная карточка mikhailkilin.ru.

Стек

  • Rust + 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-пайплайн

Запуск локально

cargo run

Сервер стартует на http://0.0.0.0:3000.

Сборка и запуск через Docker

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)