ТЗ DevOps - dev/stagingВерхнеуровневое описание работ:Работа должна быть выполнена используя подход Infrastructure as CodeРабота должна быть задокументирована, например, разворачивая kubernetes кластер:Нужно описать последовательность выполнения действий и команд для развёртки кластера.Обязательные и необязательные environment variables, config files, config maps.Установленные в кластер CRDs, Operators, DaemonSetsИнтеграции сторонних SaaS поставщиков и их credentials важные для их работы.Описание соответствия High Availability сервисов которые мы деплоим или используем.(сервис А в 5 экземплярах на 3х хостах, БД имеет 3 хоста, 2 из которых standby реплики)Всё это должно быть явно прописано в readme или wiki проекта инфраструктуры.Провайдеры:Digital OceanKubernetesMySQLRedisContainer RegistryHetzner Cloud - CI/CD RunnerBackblaze B2 - S3Github & Github ActionsSentry - Errors and performance monitoringDatadog - LogsСкоуп данного ТЗ:Development environmentKubernetes кластер с 2 нодамиLoadbalancerManaged Mysql без репликManaged Redis без репликS3 хранилище для файловВозможно использование PVCИнтеграция SentrySentry RelayИнтеграция DatadogDatadog agentStaging environmentKubernetes кластер с 2 нодамиLoadbalancerManaged Mysql без репликManaged Redis без репликS3 хранилище для файловВозможно использование PVCИнтеграция SentrySentry RelayИнтеграция DatadogDatadog AgentНаверное можно объединить development и staging окруженияНа данном этапе продакшн окружение не требуется.CI/CD:Github actionsDedicated CI/CD Runner на Hetzner cloudСборка приложений бэкенда (PHP, Laravel + Octane RoadRunner)Сборка frontend приложений (VueJs и NuxtJs)Возможность деплоя отдельных веток приложенийManaged Container RegistryДокументация Dev & staging envsБюджет на дев+стейдж environment - 230$ в месяцКластеры:Думаем использовать 2 кластера - dev и staging
В каждом по 2 ноды (2.5GB RAM, 2 shared vCPU)Можно объединить в 1 кластер, 2 ноды по 6GB RAM, 4 shared vCPU или 3 ноды по 2.5GB RAM, 2 shared vCPUВ каждый кластер нужно будет развернуть:2 инстанса бекенд приложений (api)PHP 8 + Laravel, запуск через Laravel Octane + Roadrunner2 инстанса бекенд приложений (workers)PHP 8 + Laravel, демоны2 инстанса фронтенд приложенийNodeJs + Nuxt2 инстанса фронтенд приложенийNginx+static JSНа каждой ноде Sentry RelayНа каждой ноде Datadog AgentБалансеры и внешний трафик:SSL termination на балансере, LetsEncryptВозможно потребуется 2 балансера, 1 для статики, другой для APIБД - Managed MySQL4GB RAM + 2 vCPU без резервированияКеш - Managed Redis1.2GB RAM без резервированияS3 хранилище на Backblaze B2CI/CD:Container registry на Digital OceanSelf-hosted CI/CD Runner на Hetzner CloudАвтоматический деплой develop веткиАвтоматический деплой staging веткиВозможность деплоя веток у которых название подходит к шаблону (например staging/*)Максимальное снижение трафика из Container registryМинимальный размер образовКеширование зависимостей в CI/CD pipelineЗапуск пайплайнов только при условии выкатки на dev/stagingИнтеграцииЛогирование в DatadogОшибки приложений и APM в SentryПланируемый productionKubernetes:3 nodes:6GB RAM, 4 shared vCPUMySQL:4GB RAM, 2 vCPU2 standby nodesRedis:1.2GB RAM1 standby node