Как масштабировать Gitlab EE - PullRequest
0 голосов
/ 01 ноября 2018

В настоящее время я использую весь gitlab EE как один контейнер. Мне нужно масштабировать сервис так, чтобы он мог одновременно поддерживать больше пользователей и больше операций / pull / push / Merge Requests и т. Д.

  • Мне нужно запустить собственный кластер redis

  • Мне нужно запустить кластер PG отдельно

  • Мне нужно интегрировать эластичный поиск для поиска

Но как я могу масштабировать оставшиеся базовые службы gitlab. Поддерживают ли они масштабную архитектуру.

  • рабочая лошадка gitlab
  • Единорог (рельсы Гитлаб)
  • sidekiq (рельсы для гитлаба)
  • gitaly
  • оболочка gitlab

1 Ответ

0 голосов
/ 01 ноября 2018

Поддерживают ли они масштабную архитектуру.

Не совсем, учитывая 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.
...