-
Делаем проект сайт визитку, по аналогии с https://tosinonikute.com/
- Определимся на какой технологии его делаем (Python FastAPI + React)
- Организовать хранение проекта на Git
- Делаем MVP
- Делаем заготовку
- Проверяем что заготовка работает
- Наполняем заготовку базовым содержимым (пока пропускаем, это же не MPV иначе получается)
- Контейнеризуем приложение (Dockerfile, Docker Compose)
- Формируем Dockerfile
- для бэкенда
- для фронтенда
- Собираем Docker образы локально
- Тестируем образы локально (запуск и проверка работы)
- Формируем файл Docker Compose
- Тестируем приложение через Docker Compose
- Формируем Dockerfile
- Отрабатываем локальное развёртывание
- Настраиваем локальное окружение (minikube)
- Создаём Kubernetes манифесты
- Тестируем и отлаживаем развертывание в minikube
- Настраиваем Helm charts
- Тестируем развертывание через Helm
- Настраиваем Terraform для инфраструктуры
- Подготавливаем облачное развёртывание
- Выбор облачного провайдера (Yandex Cloud)
- Настройка доступа к облаку (установлен yc, выполнены yc init и yc config list)
- Настройка инфраструктуры через Terraform для serverless bundle (Yandex Serverless Containers)
- Подключение облачного provider в Terraform
- Описание backend/frontend как serverless containers
- Настройка сервисного аккаунта и IAM (invoker, registry)
- Развёртывание через terraform и получение публичных endpoint-адресов
- Тестирование развернутых сервисов через endpoints (по отдельности)
- Настройки сети внутри облака
- Настроить статический хостинг фронтенда в Object Storage (
kulibin-devops-portfolio.website.yandexcloud.net) - Перевести frontend в Object Storage (Terraform, отключить serverless frontend container)
- Настроить API Gateway как прокси к backend serverless container (публичный URL)
- Включить CORS/авторизацию для API, выдать gateway роль
serverless.containers.invoker - Проверка, что приложение доступно из Интернета
- Настроить статический хостинг фронтенда в Object Storage (
- Настраиваем CI/CD пайплайн
- Настроить GitHub Actions/GitLab CI для сборки backend-образа и публикации в YCR
- Добавить шаг сборки фронтенда и выгрузки
distв Object Storage через CLI - Подготовить отдельный job для
terraform apply/yc serverlessпосле публикации артефактов - Подключить секреты (tokens/keys) и уведомления о статусе пайплайна
- Выполнить тестирование CI
- Мержим проект в master
- Документируем проект
- Рефакторинг структуры проекта
- Переименовать папку "devops-portfolio" в "helm", проверив работоспособность и отразив это в документации
- Перенести папки "backend" и "frontend" в "src", проверив работоспособность и отразив это в документации
- Обновить основной README.md
- Описание проекта и его назначение
- Структура проекта
- Быстрый старт (локальное развёртывание)
- Ссылки на документацию по компонентам
- Рефакторинг структуры проекта
- Настраиваем мониторинг
- Yandex Monitoring для serverless контейнеров (встроенный мониторинг, метрики, алерты)
- Настраиваем логирование
- Yandex Logging для serverless контейнеров (встроенное логирование)
- Наполняем заготовку базовым содержимым
- Проверяем различные аспекты проекта
- Исправить пропавшее локальное развёртывание minicube при помощи Terraform
- Автоматически генерировать Mermaid-диаграмму из
.github/workflows/ci.yml - Оптимизировать сборку проекта
- build-backend
- Настраиваем DevSecOps практики
- Сканирование Docker образов на уязвимости в CI/CD (Trivy, Grype)
- SAST анализ кода (SonarQube, CodeQL)
- Управление секретами (GitHub Secrets, Yandex Lockbox)
- Политики безопасности для Container Registry
- Документируем проект (README, архитектура)
- Документация архитектуры
- Схема компонентов и их взаимодействие
- Описание инфраструктуры (Terraform, Yandex Cloud)
- Описание CI/CD пайплайна
- Документация развёртывания
- Инструкции по локальному развёртыванию
- Инструкции по облачному развёртыванию
- Настройка секретов и переменных окружения
- Документация API (если требуется)
-
Доработка развертывания на Kubernetes
- Доработка развертывания из terraform/cloudK8
- Завершить настройку Managed Kubernetes Cluster в Yandex Cloud
- Настроить Ingress для доступа к приложению
- Интеграция с CI/CD для автоматического развёртывания в k8s
- Настраиваем мониторинг для Kubernetes
- Prometheus + Grafana для Kubernetes развёртывания
- Настройка метрик и алертов
- Настраиваем логирование для Kubernetes
- Централизованное логирование (ELK/Loki) для Kubernetes
- Настройка сбора логов из подов
- Настраиваем GitOps (ArgoCD/Flux)
- Установка и настройка ArgoCD или Flux
- Настройка автоматического развёртывания из Git репозитория
- Интеграция с Helm charts
- Доработка развертывания из terraform/cloudK8