diff --git a/DevOps/Gitlab/Minimal-install.md b/DevOps/Gitlab/Minimal-install.md new file mode 100644 index 0000000..b7757e3 --- /dev/null +++ b/DevOps/Gitlab/Minimal-install.md @@ -0,0 +1,102 @@ +--- +title: Gitlab minimal install +description: +published: true +date: 2025-03-25T18:39:58.350Z +tags: gitlab +editor: markdown +dateCreated: 2025-03-25T18:39:58.350Z +--- + +Популярный open source продукт, который можно развернуть на своём оборудовании, Gitlab требует для своей работы приличное количество ресурсов. Для того, чтобы он в установке по умолчанию работал бодрячком лучше всего начать с 4 CPU и 8 GB оперативной памяти. Можно выделить 4 GB, но будет заметно тормозить, иногда 500-е ошибки выдавать. + +Для того, чтобы иметь возможность использовать Gitlab для единоличного использования, либо очень небольшого коллектива, многие из стандартных компонентов и настроек программного комплекса можно безболезненно отключить. В документации есть отдельная статья на этот счёт: + +⇨ Running GitLab in a memory-constrained environment (https://docs.gitlab.com/omnibus/settings/memory_constrained_envs.html) (Запуск GitLab в среде с ограниченным объемом памяти) + +Следуя этим рекомендация, можно заставить работать систему с использованием всего 2 GB оперативной памяти. Если вы запускаете его для себя на арендованном железе, то можно получить существенную экономию ресурсов. + +Я взял виртуальную машину с 1 CPU и 2 GB памяти и попробовал на ней запустить Gitlab. Что для этого нужно сделать? + +1️⃣ Подключаем 1 GB свопа. + +``` +# dd if=/dev/zero of=/swap bs=1024 count=1000000 +# mkswap /swap +# chmod 0600 /swap +# swapon /swap +``` + +Добавляем в /etc/fstab: +`/swap swap swap defaults 0 0` + +2️⃣ Меняем параметр swappiness: + +`# sysctl vm.swappiness=10` + +Добавляем в /etc/sysctl.conf: + +`vm.swappiness=10` + +3️⃣ Устанавливаем Gitlab. +``` +# curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash +# EXTERNAL_URL="http://10.20.1.36" apt-get install gitlab-ce +```` + +4️⃣ Отключаем службу puma, которая помогает обрабатывает конкурентные запросы. Без большой нагрузки можно обойтись без неё. В /etc/gitlab/gitlab.rb добавляем: + +`puma['worker_processes'] = 0` + +5️⃣ Уменьшаем число фоновых процессов Sidekiq: + +`sidekiq['concurrency'] = 10` + +6️⃣ Оптимизируем Gitaly. Туда же в конфиг добавляем: +```json +gitaly['configuration'] = { +  concurrency: [ +   { +    'rpc' => "/gitaly.SmartHTTPService/PostReceivePack", +    'max_per_repo' => 3, +   }, { +    'rpc' => "/gitaly.SSHService/SSHUploadPack", +    'max_per_repo' => 3, +   }, +  ], +} +``` + +gitaly['env'] = { + 'GITALY_COMMAND_SPAWN_MAX_PARALLEL' => '2' +} + +❗️Обращаю ваше внимание, что я убрал из этого раздела настройки, касающиеся cgroups. В инструкции судя по всему какая-то ошибка. Если их оставить, то сокет gitaly не поднимается. А в интерфейсе при создании каких-либо сущностей, например, нового проекта, вылетает 502 ошибка. И это не зависит от выделенных ресурсов. + +7️⃣ Отключаем мониторинг: + +prometheus_monitoring['enable'] = false + +8️⃣ Уменьшаем потребление памяти процессам GitLab: + +gitlab_rails['env'] = { + 'MALLOC_CONF' => 'dirty_decay_ms:1000,muzzy_decay_ms:1000' +} + +gitaly['env'] = { + 'MALLOC_CONF' => 'dirty_decay_ms:1000,muzzy_decay_ms:1000' +} + +9️⃣ Перезапускаем Gitlab: + +# gitlab-ctl reconfigure + +🔟 Идём в веб интерфейс и отключаем в настройках мониторинга метрики Prometheus: Admin Area ⇨ Settings ⇨ Metrics and profiling ⇨ Metrics - Prometheus ⇨ отключаем Enable Prometheus Metrics. + +После перезапуска Gitlab будет очень долго подниматься. Но в итоге заработает. Смотрим потребление памяти и проверяем, как всё работает: + +# free -h + +Более подробно всё это описано по ссылке в статье из начала заметки. Для комфортной работы лучше всё же добавить до 2CPU и 3GB памяти. Тогда всё это будет бодро работать с предложенными параметрами. Если этого не сделать, то иногда будете видеть 500-е ошибки. + +❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки. \ No newline at end of file