Skip to content

Repository files navigation

FastAPI Kubernetes Project

FastAPI Next.js Kubernetes Yandex_Cloud PostgreSQL Redis Docker GitLab CI/CD

Мини-сервис разработан для демонстрации развертывания масштабируемого приложения в Yandex Cloud (YC). Проект использует управляемые сервисы (Managed Kubernetes, Managed PostgreSQL) и обеспечивает безопасность через Yandex Lockbox.

Структура проекта

.
├── services/
│   ├── backend/            # Микросервис Backend (FastAPI)
│   │   ├── app/
│   │   │   ├── api/        # API эндпоинты
│   │   │   │   └── endpoints/ # Реализация конкретных роутов (auth, admin и др.)
│   │   │   ├── core/       # Конфигурация, безопасность, логирование
│   │   │   ├── models/     # Модели базы данных (SQLAlchemy)
│   │   │   ├── schemas/    # Pydantic схемы (валидация данных)
│   │   │   ├── db/         # Подключение к БД и сессии
│   │   │   └── main.py     # Точка входа в приложение
│   │   ├── alembic/        # Миграции базы данных
│   │   ├── tests/          # Тесты (pytest)
│   │   └── Dockerfile      # Образ для бэкенда
│   └── frontend/           # Frontend (Next.js)
│       ├── src/
│       │   ├── app/        # Роутинг и страницы (App Router)
│       │   ├── components/ # React компоненты (UI, Auth, Layout)
│       │   ├── store/      # Управление состоянием (Zustand)
│       │   ├── lib/        # Утилиты и конфигурация API (Axios)
│       │   └── proxy.ts    # Конфигурация проксирования
│       └── Dockerfile      # Образ для фронтенда
├── helm/                   # Helm-чарты для деплоя в Kubernetes
├── terraform/              # Infrastructure as Code (Yandex Cloud)
├── deploy.ps1              # Скрипт автоматизированного деплоя
├── prepare-infra.ps1       # Скрипт подготовки инфраструктуры
├── cleanup.ps1             # Скрипт удаления ресурсов
├── Makefile                # Команды для локальной разработки и сборки
└── DEPLOY.md               # Подробная инструкция по развертыванию

Схема работы

  1. Ingress (Nginx): Принимает внешний трафик и маршрутизирует его между Frontend и Backend сервисами.
  2. Frontend (Next.js): Выполняет отрисовку интерфейса (SSR/Static) и взаимодействует с API.
  3. Backend (FastAPI): Обрабатывает бизнес-логику, выполняет аутентификацию и предоставляет REST API.
  4. PostgreSQL: Хранит основные данные приложения (пользователи, настройки и т.д.).
  5. Redis (Valkey): Используется для ограничения частоты запросов (Rate Limiting) и ускорения работы приложения.

Развертывание

  1. Локальное развертывание (Terraform + PowerShell): Инструкция в файле DEPLOY.md.
  2. Автоматизация через GitLab CI/CD: Инструкция в файле GITLAB_CI_SETUP.md.

About

Production-ready FastAPI starter for Yandex Cloud Deploy a scalable backend with Kubernetes (Helm), infrastructure as code (Terraform), database migrations via K8s Job. Designed to grow from monolith to microservices.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages