Задачи по devops
Цена договорная
Прошу в комментариях писать стоимость и сроки.
Также сразу скажу, запускается 1 сервис с тестовым окружением, для тестирования всей цепочки.
Навскидку: есть один или несколько серверов, на которых либо уже установлен гипервизор, либо надо установить гипервизор. Работать будем только с виртуалками; на голом железе ничего не предполагается запускать.
Для хранения кода планируем использовать облачный гитЛаб. Но можно рассмотреть вариант установки гитлаба на виртуалку, если опасаемся, что гитлаб нам закроют.
Этапы
Я вижу два этапа. Первый, самый объемный — первоначальная настройка, доведение до ума и документирование. Второй — поддержка, консультирование, плановые обновления и внеплановые починки всего, когда все сломалось
Задачи 1 этапа
Настроить управление виртуалками, чтобы можно было создать/удалить/мигрировать/снепшотить виртуалки.
Создать Kubernetes кластер:
нодами будут виртуалки
конфигурация кластера, количество и тип нод — обсуждается, предложения приветствуются
кластер должен создаваться кодом (вероятно, Terraform)
настроить деплой k8s-приложений в кластер (Gitlab Agent, Flux, etc)
выбрать и настроить хранилище для persistent volumes (м.б. Longhorn)
Задеплоить продакшн сервисы. Куда деплоить — в k8s кластер либо как виртуалки — нужно выбрать, что лучше подходит. Деплоить кодом, не руками. Пожелания к технологиям — без экзотики, если это будет Ansible, Terraform, Helm чарты, то отлично. Список:
PostgreSQL v. 16 с PostGIS — просто одна нода, т.е. не кластер — основная БД
Elasticsearch v. 7 — кластер из 3 нод + Kibana — используем для поиска
MinIO — используем для хранения фоток
Graylog — используем для сборки логов (и для грейлога отдельный инстанс Elastic/Opensearch, чтобы не создавать нагрузку на основной эластик)
очень вероятно, что добавится Redis для сессий и RabbitMQ для сообщений, но пока их нет — не делаем, просто имеем в виду
для полноты укажу, что будет еще основное приложение на PHP/Symfony, но его деплоем наверно я сам займусь. Так же, как и деплоем фронтенда (там nextjs). И фронт и бек приложения планирую деплоить в k8s.
Задеплоить вспомогательные сервисы:
Docker registry, в который мы будем пушить свои образы и если возможно, чтобы работало как pull-through cache к внешним registry
Репозиторий php-пакетов (м.б. Satis)
Репозиторий npm-пакетов (хз что они там используют, дефолтный какой-нибудь)
Настроить бекап данных и написать план восстановления из бекапа. В конце первого этапа работы проведем тренировку по восстановлению.
Выбрать способ, которым мы будем работать с SSL сертификатами. Задокументировать, чтобы было понятно, что делать, когда сертификат истечет. Предпочесть в этом вопросе простоту использования — если можно завязаться на Letsencrypt, то и отлично.
Также нужно будет staging окружение. Повторяет прод, но ресурсов можно меньше.
Задокументировать.
Последняя задача 1 этапа — продумать и согласовать задачи 2 этап
Также сразу скажу, запускается 1 сервис с тестовым окружением, для тестирования всей цепочки.
Навскидку: есть один или несколько серверов, на которых либо уже установлен гипервизор, либо надо установить гипервизор. Работать будем только с виртуалками; на голом железе ничего не предполагается запускать.
Для хранения кода планируем использовать облачный гитЛаб. Но можно рассмотреть вариант установки гитлаба на виртуалку, если опасаемся, что гитлаб нам закроют.
Этапы
Я вижу два этапа. Первый, самый объемный — первоначальная настройка, доведение до ума и документирование. Второй — поддержка, консультирование, плановые обновления и внеплановые починки всего, когда все сломалось
Задачи 1 этапа
Настроить управление виртуалками, чтобы можно было создать/удалить/мигрировать/снепшотить виртуалки.
Создать Kubernetes кластер:
нодами будут виртуалки
конфигурация кластера, количество и тип нод — обсуждается, предложения приветствуются
кластер должен создаваться кодом (вероятно, Terraform)
настроить деплой k8s-приложений в кластер (Gitlab Agent, Flux, etc)
выбрать и настроить хранилище для persistent volumes (м.б. Longhorn)
Задеплоить продакшн сервисы. Куда деплоить — в k8s кластер либо как виртуалки — нужно выбрать, что лучше подходит. Деплоить кодом, не руками. Пожелания к технологиям — без экзотики, если это будет Ansible, Terraform, Helm чарты, то отлично. Список:
PostgreSQL v. 16 с PostGIS — просто одна нода, т.е. не кластер — основная БД
Elasticsearch v. 7 — кластер из 3 нод + Kibana — используем для поиска
MinIO — используем для хранения фоток
Graylog — используем для сборки логов (и для грейлога отдельный инстанс Elastic/Opensearch, чтобы не создавать нагрузку на основной эластик)
очень вероятно, что добавится Redis для сессий и RabbitMQ для сообщений, но пока их нет — не делаем, просто имеем в виду
для полноты укажу, что будет еще основное приложение на PHP/Symfony, но его деплоем наверно я сам займусь. Так же, как и деплоем фронтенда (там nextjs). И фронт и бек приложения планирую деплоить в k8s.
Задеплоить вспомогательные сервисы:
Docker registry, в который мы будем пушить свои образы и если возможно, чтобы работало как pull-through cache к внешним registry
Репозиторий php-пакетов (м.б. Satis)
Репозиторий npm-пакетов (хз что они там используют, дефолтный какой-нибудь)
Настроить бекап данных и написать план восстановления из бекапа. В конце первого этапа работы проведем тренировку по восстановлению.
Выбрать способ, которым мы будем работать с SSL сертификатами. Задокументировать, чтобы было понятно, что делать, когда сертификат истечет. Предпочесть в этом вопросе простоту использования — если можно завязаться на Letsencrypt, то и отлично.
Также нужно будет staging окружение. Повторяет прод, но ресурсов можно меньше.
Задокументировать.
Последняя задача 1 этапа — продумать и согласовать задачи 2 этап
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.