Документ описывает текущий технологический стек инфраструктуры РГБ, используемые инструменты и ожидания от DevOps-инженера.
Основная задача DevOps-инженера — сопровождение существующей инфраструктуры, автоматизация процессов эксплуатации, развертывание новых сервисов и обеспечение стабильной работы информационных систем.
Основная серверная инфраструктура работает под управлением Linux.
Используемые дистрибутивы:
Для отдельных legacy-проектов также используются:
Необходимо уверенное владение Linux на уровне системного администратора:
journalctl, syslog);Также требуется уверенное владение Bash для автоматизации рутинных задач и написания служебных скриптов.
Основной способ поставки сервисов — Docker.
Используемые технологии:
Docker Swarm используется ограниченно и поддерживается исключительно для legacy-проектов (например, старой инфраструктуры НЭБ).
Большинство новых сервисов поставляются в виде Docker-контейнеров.
Основной стек разработки:
Node.js
Python;
Go;
PHP.
Ожидается понимание:
Основной системой контроля версий является Git.
Используемые инструменты:
GitLab используется как единая платформа для:
GitLab CI обеспечивает:
Nexus Repository используется для:
DevOps-инженер должен уверенно понимать:
Основным инструментом автоматизации инфраструктуры является Ansible.
Практически вся инфраструктура описывается декларативно и хранится в Git.
Ansible используется для:
Все изменения инфраструктуры проходят через GitLab CI.
При вводе нового сервиса в эксплуатацию ожидается, что вся инфраструктурная конфигурация будет оформлена средствами Ansible.
Используемый стек мониторинга:
Все компоненты мониторинга разворачиваются и сопровождаются через Ansible.
DevOps-инженер должен понимать:
Основным Reverse Proxy является Nginx.
Также используются:
Конфигурация Reverse Proxy хранится в репозитории Ansible и изменяется исключительно через Infrastructure as Code.
Ожидается понимание:
В инфраструктуре присутствует кластер Kubernetes версии около 1.22.
Кластер находится на стадии вывода из эксплуатации.
Основные задачи:
Развертывание сервисов осуществляется преимущественно через Kustomize.
Знание Helm приветствуется, однако в текущей инфраструктуре практически не используется.
Основные используемые СУБД:
PostgreSQL является основной реляционной СУБД.
Используются как одиночные экземпляры, так и кластеры в конфигурации Master/Replica, обеспечивающие отказоустойчивость и масштабирование операций чтения.
DevOps-инженер должен понимать:
Глубокое администрирование БД (оптимизация запросов, проектирование схем и т.д.) не является основной задачей.
В инфраструктуре используются:
Используются как отдельные инстансы, так и распределенные кластеры.
Для проекта НЭБ развернут кластер OpenSearch из 9 узлов, используемый в качестве поисковой платформы.
DevOps-инженер должен понимать принципы работы данных систем, сопровождать существующие инсталляции, участвовать в обновлениях, мониторинге и устранении возникающих проблем.
Резервное копирование инфраструктуры организовано с использованием Restic.
Управление резервным копированием осуществляется средствами Ansible.
DevOps-инженер участвует в:
Часть информационных систем сопровождается подрядными организациями и использует устаревший технологический стек.
В подобных проектах встречаются:
От DevOps-инженера не требуется глубокая разработка данных систем, однако необходимо понимание принципов их эксплуатации, сопровождения и взаимодействия с подрядчиками при выполнении инфраструктурных работ.
Для организации процессов разработки используются:
От DevOps-инженера ожидается:
DevOps-инженер должен: