Поддерживают ли они масштабную архитектуру.
Не совсем, учитывая GitLab Omnibus image - это один пакет со связанными зависимостями.
Но я никогда не сталкивался с таким большим трафиком, чтобы его приходилось разделять и масштабировать.
Хотя есть предложение разделить изображение Омнибуса: gitlab-org/omnibus-gitlab
выпуск 1800 .
Он указывает на gitlab-org/build/CNG
, который делает именно то, что вы ищете:
Каждый каталог содержит Dockerfile для определенного компонента инфраструктуры, необходимой для запуска GitLab.
- rails - Код Rails, необходимый как для API, так и для сети.
- единорог - контейнер Unicorn, который выставляет Rails.
- sidekiq - Контейнер Sidekiq, выполняющий асинхронные задания Rails
- shell - Запуск GitLab Shell и OpenSSH для предоставления git over ssh и поддержка авторизованных ключей из базы данных
- gitaly - Контейнер Gitaly, который предоставляет распределенные репозитории git
Другой вариант, использующий Kubernetes, это charts/gitlab
:
Диаграмма gitlab - лучший способ работы с GitLab в Кубернетесе. Эта диаграмма содержит все необходимые компоненты для начала работы и может масштабироваться до крупных развертываний.
Некоторые из ключевых преимуществ этой таблицы и соответствующих контейнеров:
- Улучшенная масштабируемость и надежность
- Нет необходимости для привилегий root
- Использование хранилища объектов вместо NFS для хранения
Развертывание по умолчанию включает в себя:
- Основные компоненты GitLab: Unicorn, Shell, Рабочая лошадка, Registry, Sidekiq и Gitaly
- Необязательные зависимости: Postgres, Redis, Minio
- Автоматически масштабируемый непривилегированный GitLab Runner с использованием исполнителя Kubernetes
- Автоматически предоставляемый SSL через Let's Encrypt.