Простое FastAPI-приложение с деплоем в Kubernetes через ArgoCD.
Выполни эти шаги один раз перед первым git push:
-
Создай репозиторий на GitHub и запушь код:
git remote add origin https://github.com/SergeyAnokhin/simple-python-api-argocd.git git push -u origin main
-
Зарегистрируй ArgoCD Application (один раз, с любой машины с доступом к кластеру):
kubectl apply -f argocd-app.yaml
После этого ArgoCD начнёт следить за папкой
k8s/в веткеmain.
редактируешь .py файлы → git push → GitHub Actions собирает образ
→ обновляет тег в k8s/deployment.yaml → ArgoCD видит изменение → деплоит
Каждый пуш в main автоматически:
- Собирает Docker-образ и пушит в GHCR с тегами
latestиsha-XXXXXXX - Обновляет
k8s/deployment.yamlс точным SHA-тегом - ArgoCD обнаруживает изменение манифеста и синхронизирует кластер
| URL | Описание |
|---|---|
http://192.168.1.31:30080 |
Корень API — статус и версия |
http://192.168.1.31:30080/health |
Healthcheck (используется liveness probe) |
http://192.168.1.31:30080/items |
Список items |
http://192.168.1.31:30080/items/1 |
Получить item по ID |
| URL | Описание |
|---|---|
http://192.168.1.31:30080/docs |
Swagger UI — интерактивная документация, можно выполнять запросы прямо в браузере |
http://192.168.1.31:30080/redoc |
ReDoc — альтернативный UI в читабельном формате |
simple-python-api-argocd/
├── app/
│ ├── main.py # FastAPI app
│ ├── requirements.txt
│ └── routers/
│ └── items.py # /items эндпоинты
├── Dockerfile
├── k8s/
│ ├── namespace.yaml
│ ├── deployment.yaml
│ └── service.yaml
├── .github/
│ └── workflows/
│ └── build-and-deploy.yaml
└── argocd-app.yaml # применяется вручную один раз