Нужно поднять дев и стейджинг окружение, настроить CI/CD

ТЗ DevOps - dev/staging

1) Верхнеуровневое описание работ:
Работа должна быть выполнена используя подход 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 Ocean
Kubernetes
MySQL
Redis
Container Registry
Hetzner Cloud - CI/CD Runner
Backblaze B2 - S3
Github & Github Actions
Sentry - Errors and performance monitoring
Datadog - Logs
Скоуп данного ТЗ:
Development environment
Kubernetes кластер с 2 нодами
Loadbalancer
Managed Mysql без реплик
Managed Redis без реплик
S3 хранилище для файлов
Возможно использование PVC
Интеграция Sentry
Sentry Relay
Интеграция Datadog
Datadog agent
Staging environment
Kubernetes кластер с 2 нодами
Loadbalancer
Managed Mysql без реплик
Managed Redis без реплик
S3 хранилище для файлов
Возможно использование PVC
Интеграция Sentry
Sentry Relay
Интеграция Datadog
Datadog Agent
Наверное можно объединить development и staging окружения
На данном этапе продакшн окружение не требуется.
CI/CD:
Github actions
Dedicated CI/CD Runner на Hetzner cloud
Сборка приложений бэкенда (PHP, Laravel + Octane RoadRunner)
Сборка frontend приложений (VueJs и NuxtJs)
Возможность деплоя отдельных веток приложений
Managed Container Registry
Документация

2) 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 + Roadrunner
2 инстанса бекенд приложений (workers)
PHP 8 + Laravel, демоны
2 инстанса фронтенд приложений
NodeJs + Nuxt
2 инстанса фронтенд приложений
Nginx+static JS
На каждой ноде Sentry Relay
На каждой ноде Datadog Agent
Балансеры и внешний трафик:
SSL termination на балансере, LetsEncrypt
Возможно потребуется 2 балансера, 1 для статики, другой для API
БД - Managed MySQL
4GB RAM + 2 vCPU без резервирования
Кеш - Managed Redis
1.2GB RAM без резервирования
S3 хранилище на Backblaze B2

3) CI/CD:

Container registry на Digital Ocean
Self-hosted CI/CD Runner на Hetzner Cloud
Автоматический деплой develop ветки
Автоматический деплой staging ветки
Возможность деплоя веток у которых название подходит к шаблону (например staging/*)
Максимальное снижение трафика из Container registry
Минимальный размер образов
Кеширование зависимостей в CI/CD pipeline
Запуск пайплайнов только при условии выкатки на dev/staging

4) Интеграции
Логирование в Datadog
Ошибки приложений и APM в Sentry

5)Планируемый production
Kubernetes:
3 nodes:
6GB RAM, 4 shared vCPU
MySQL:
4GB RAM, 2 vCPU
2 standby nodes
Redis:
1.2GB RAM
1 standby node

About Limpid

Мы продуктовая компания которая развивает продукт в сфере automotive.

Company website:
http://limpid.com.ua

Job posted on 6 September 2021
40 views    0 applications


To apply for this and other jobs on Djinni login or signup.