Масштабирование основано на параметре ModuleConfig targetUsercount — в зависимости от его значения модуль изменяет HPA, PDB, запросы/лимиты по CPU и памяти.

Внимание. Не рекомендуется использовать любые экземпляры burstable в облачной инфраструктуре из-за непостоянной производительности.

Архитектурная справка

  1. 10 пользователей:

    Простая инсталляция без режима высокой доступности (HA). Подходит для ознакомительного использования. В такой инсталляции не гарантируется отказоустойчивость или способность выдерживать нагрузку.

  2. 100 пользователей:

    Приблизительная нагрузка:

    • API: 2 RPS.
    • Web: 1 RPS.
    • Git (Pull): 1 RPS.
    • Git (Push): 1 RPS.

    Параметры установки:

    • Deckhouse HA: не требуется.
    • Узлы Kubernetes: минимум 2 узла.

    Общие требования (без Gitaly):

    • 6 vCPU.
    • Память: минимум 14 ГБ.

    Компоненты:

    • Веб-сервис: 0.6 vCPU, 5 ГБ памяти, HPA от 1 до 2.
    • Sidekiq: 1.8 vCPU, 4 ГБ памяти, HPA от 1 до 2.
    • Shell: 0.03 vCPU, 25 МБ памяти, HPA от 1 до 2.
    • Pages: 1.8 vCPU, 4 ГБ памяти, HPA от 1 до 2.
    • Praefect: 0.3 vCPU, 600 МБ памяти.
    • Gitaly (1 узел): 3 vCPU, 7 ГБ памяти.
  3. 1000 пользователей:

    Приблизительная нагрузка:

    • API: 20 RPS.
    • Web: 2 RPS.
    • Git (Pull): 2 RPS.
    • Git (Push): 1 RPS.

    Параметры установки:

    • Deckhouse HA: не требуется.
    • Узлы Kubernetes: минимум 3 узла.

    Общие требования (без Gitaly):

    • 12 vCPU.
    • Память: от 18 ГБ до 32 ГБ.

    Компоненты:

    • Веб-сервис: 6 vCPU, 9 ГБ памяти, лимит 12 ГБ, HPA от 2 до 3.
    • Sidekiq: 2.7 vCPU, 6 ГБ памяти, лимит 12 ГБ, HPA от 1 до 3.
    • Shell: 0.03 vCPU, 150 МБ памяти, лимит 750 МБ, HPA от 2 до 3.
    • Pages: 2.7 vCPU, 3 ГБ памяти, лимит 6 ГБ, HPA от 2 до 3.
    • Praefect: 0.3 vCPU, 600 МБ памяти.
    • Gitaly (1 узел): 3 vCPU, 7 ГБ памяти.
  4. 3000 пользователей:

    Приблизительная нагрузка:

    • API: 60 RPS.
    • Web: 6 RPS.
    • Git (Pull): 6 RPS.
    • Git (Push): 1 RPS.

    Параметры установки:

    • Deckhouse HA: требуется.
    • Узлы Kubernetes: минимум 4–5 узлов.

    Общие требования (без Gitaly):

    • 29 vCPU.
    • Память: от 48 ГБ до 82 ГБ.

    Компоненты:

    • Веб-сервис: 16 vCPU, 20 ГБ памяти, лимит 28 ГБ, HPA от 3 до 4.
    • Sidekiq: 7.2 vCPU, 16 ГБ памяти, лимит 32 ГБ, HPA от 6 до 8.
    • Shell: 0.25 vCPU, 400 МБ памяти, лимит 2 ГБ, HPA от 4 до 8.
    • Pages: 5.4 vCPU, 6 ГБ памяти, лимит 18 ГБ, HPA от 3 до 6.
    • Praefect: 0.3 vCPU, 600 МБ памяти.
    • Gitaly (1 узел): 3 vCPU, 7 ГБ памяти.
  5. 5000 пользователей:

    Приблизительная нагрузка:

    • API: 100 RPS.
    • Web: 10 RPS.
    • Git (Pull): 10 RPS.
    • Git (Push): 2 RPS.

    Параметры установки:

    • Deckhouse HA: требуется.
    • Узлы Kubernetes: минимум 6 узлов.

    Общие требования (без Gitaly):

    • 52 vCPU.
    • Память: от 78 ГБ до 130 ГБ.

    Компоненты:

    • Веб-сервис: 36 vCPU, 45 ГБ памяти, лимит 63 ГБ, HPA от 7 до 9.
    • Sidekiq: 7.2 vCPU, 16 ГБ памяти, лимит 32 ГБ, HPA от 6 до 8.
    • Shell: 1 vCPU, 500 МБ памяти, лимит 2.5 ГБ, HPA от 6 до 10.
    • Pages: 7.2 vCPU, 16 ГБ памяти, лимит 32 ГБ, HPA от 4 до 8.
    • Praefect: 0.3 vCPU, 600 МБ памяти.
    • Gitaly (1 узел): 3 vCPU, 7 ГБ памяти.

Примечания

  1. Максимальное потребление указано на основе лимитов памяти, заданных в модуле.
  2. Требования к Gitaly зависят от уровня отказоустойчивости, необходимого для модуля.

Настройка хранилища Gitaly

Если вы видите непустую таблицу ‘OOM events’ в Grafana или срабатывающий алерт GitalyCgroupMemoryOOM в Prometheus, вероятно, вам нужно скорректировать ресурсы памяти и CPU для Gitaly. Увеличьте значения instanceSpec.gitData.resources в вашей конфигурации (например, установите память на 16Gi и CPU на 4). Примените изменения и наблюдайте за Gitaly.