search
Cloud Блог – Как развернуть self-managed GitLab на облачных платформах:
Gitlab

Как развернуть self-managed GitLab на облачных платформах:

Я предлагаю вам рассмотреть развертывание самоуправляемого GitLab на облачных платформах как волшебный ключ к полному контролю над вашим проектом. Такое развертывание позволяет масштабировать ресурсы, идеально соответствуя вашим потребностям, обеспечивая гибкость и эффективное их использование. Это, конечно, открывает широкие возможности для интеграции с другими сервисами и инфраструктурой, позволяя вам настраивать и интегрировать GitLab под свои потребности. И самое лучшее в этом заключается в том, что вы сами контролируете уровень безопасности и защиты ваших данных — это особенно важно для организаций, которые придают большое значение безопасности и конфиденциальности.

С чего начнем? GitLab можно установить на платформы облачных систем, такие как Amazon Web Services, Google Cloud Platform, Microsoft Azure и другие, которые поддерживают Linux. Для этого существуют различные методы, о которых рассказывается в статье ниже. Вы также найдете необходимые инструкции для простой установки GitLab для компаний с числом пользователей до 500, учитывая их потребности и требования.

Давайте начнем с того, какие методы установки вообще существуют:

 

Official Linux package 

GitLab рекомендует использовать пакет Linux с названием Omnibus для эффективного развертывания самостоятельной версии GitLab на различных облачных платформах, таких как GCP, AWS, Azure и другие. Этот метод подходит для объема до 1000 пользователей. С помощью этого подхода обеспечивается быстрая и качественная реализация полноценной платформы DevSecOps для улучшения лучших практик в жизненном цикле разработки программного обеспечения (SDLC). В пакет Omnibus включен набор всех необходимых служб и инструментов, обеспечивающих бесперебойную работу, легкое администрирование и, что имеет большое значение, постоянное обновление.

Reference architectures (Еталонні архітектури)

GitLab разработал и протестировал уникальные эталонные архитектуры, оптимизированные для рекомендуемых развертываний в крупном масштабе. Пакеты эталонных архитектур GitLab могут успешно работать с большим количеством пользователей — от 1 000 до 50 000. Однако, если ваши потребности заключаются в создании среды для меньшего числа пользователей (до 3 000), рекомендуется использовать альтернативный метод, так как эталонная архитектура требует высокой доступности, чтобы каждый компонент системы GitLab мог эффективно функционировать в случае отказов, используя различные механизмы. Достижение такого уровня является сложной задачей, и создание необходимой среды может занять значительное время и потребовать значительных усилий.

 

GitLab Helm chart  (Kubernetes)

Helm Chart включает все необходимые компоненты для быстрого запуска и масштабирования до крупномасштабных развертываний. Если вы планируете установить GitLab на платформе OpenShift, рекомендуется использовать GitLab Operator. В случае других сценариев вам придется самостоятельно настраивать ограничения контекста безопасности. Однако для среды GitLab этот подход не рекомендуется, так как он разворачивает все сервисы GitLab в пределах кластера. Чтобы обеспечить идеальную и надежную работу GitLab, компоненты, такие как PostgreSQL или Gitaly, должны работать вне кластера. Эта конфигурация обеспечивает масштабируемость и надежное обслуживание рабочих нагрузок в среде GitLab. При использовании Kubernetes GitLab рекомендует развернуть эталонную архитектуру для Kubernetes, известную как «Cloud Native Hybrid».

 

Cloud Native Hybrid

Этот подход использует эталонную архитектуру с важным отличием: не все сервисы размещаются в пределах одного кластера для обеспечения оптимальной производительности рабочих процессов. Все компоненты хранения данных должны функционировать вне кластера. GitLab активно разрабатывает инфраструктуру как код (IaC), что позволяет настраивать комбинацию Helm Chart с дополнительной облачной инфраструктурой, такой как Google Kubernetes Engine (GKE) или Amazon Elastic Kubernetes Service (EKS), обеспечивая масштабируемость и гибкость развертывания.

Как установить GitLab и сделать минимальные настройки для полноценной работы?

Мы остановимся на самом простом и наиболее распространенном методе — официальном пакете для Linux. GitLab self-managed имеет два типа:

  • GitLab CE (Community Edition).
  • GitLab EE (Enterprise Edition).

Оба типа имеют незначительные отличия и являются бесплатными до момента приобретения лицензии. Однако, основное различие заключается в том, что GitLab CE является бесплатной версией, к которой невозможно добавить лицензии. Поэтому, если компания планирует использовать платные функциональные возможности, рекомендуется сразу установить GitLab EE, чтобы избежать дополнительных затрат на будущую миграцию.

В первую очередь, нам необходимо выбрать сервер, на котором будет разворачиваться наш GitLab. Вот рекомендации от GitLab относительно выбора сервера на платформах AWS, GCP и Azure:

Рассматривая рекомендуемые характеристики рабочей машины от GitLab, а также их предложение о добавлении 2 ГБ пространства SWAP, мы предлагаем выбрать машину с минимум 8 ГБ оперативной памяти и добавить 4 ГБ пространства SWAP для обеспечения бесперебойного администрирования. При настройке и обновлении системы может возникнуть значительная нагрузка, которая может привести к прерыванию процесса. По нашему мнению, затраты времени на устранение возможных проблем стоят разницы в цене машины. После создания необходимой машины с выбранной операционной системой, например, Ubuntu 22.04, мы начинаем установку и настройку необходимых зависимостей.

Начинаем с установки и настройки соответствующих зависимостей.

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install -y curl openssh-server ca-certificates tzdata perl

Согласно рекомендациям GitLab, следующим шагом является установка Postfix для отправки электронных уведомлений. Однако, если вы предпочитаете использовать альтернативный инструмент, вы можете пропустить этот шаг и настроить внешний SMTP-сервер после установки GitLab. В документации GitLab вы найдете подробные инструкции по настройке этого параметра.

sudo apt-get install -y postfix

После этого Postfix откроет экран конфигурации, на котором нам нужно выбрать тип веб-сайта:

 

Далее указываем домен нашего GitLab: <gitlab.example.com>:

 

blog-image-deploy-2

 

Для всех остальных вопросов нажмите кнопку «OK», чтобы принять все значения по умолчанию. Производим добавление и установку репозитория пакетов GitLab.

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash

Затем устанавливаем GitLab.

sudo apt-get install gitlab-ee

 

blog-image-deploy-3

 

После установки, пароль для пользователя root будет автоматически сгенерирован и сохранен в течение 24 часов в файле /etc/gitlab/initial_root_password.

Обратите внимание! Настоятельно рекомендуется изменить пароль сразу после установки. На данном этапе мы будем настраивать и активировать брандмауэр в вашей операционной системе, учитывая, что используется Ubuntu 22.04.

Если доступ к серверу уже настроен, вы можете пропустить этот шаг. Сначала нам необходимо предоставить права доступа к серверу.

1|  sudo ufw allow http

2|  sudo ufw allow https

3|  sudo ufw allow OpenSSH

Включаем брандмауэр:

sudo ufw enable

Сейчас мы открываем конфигурационный файл GitLab для редактирования. Файл с настройками gitlab.rb находится по пути /etc/gitlab/gitlab/gitlab.rb:

sudo vim /etc/gitlab/gitlab.rb 

или 

sudo nano /etc/gitlab/gitlab.rb

Необходимо указать свой IP-адрес в следующей строке:

external_url  <‘http://51.120.241.152’>

 

blog-image-deploy-4

 

sudo gitlab-ctl reconfigure

После этого вам нужно будет ожидать следующее сообщение, которое может занять некоторое время:

 

blog-image-deploy-5

 

После завершения этой процедуры реконфигурации, перейдите по вашему IP-адресу и убедитесь, что GitLab установлен и работает должным образом.

 

Затем вернитесь к файлу конфигурации gitlab.rb и внесите следующие изменения, раскомментировав необходимые строки.

sudo vim /etc/gitlab/gitlab.rb 

или

sudo nano /etc/gitlab/gitlab.rb

external_url — домен сервера, на котором установлен GitLab, внимательно проверьте, чтобы было указано https://  

  • letsencrypt[‘enable’]= true  —  использование сертификата Let’s Encrypt
  • letsencrypt[‘contact_emails’] — указываем электронную почту для регистрации
  • Letsencrypt[‘auto_renew’]= true —  автообновление сертификата Let’s Encrypt
  • Letsencrypt[‘auto_renew_hour’]= “12” указываем час обновления
  • letsencrypt[‘auto_renew_minute’]= “30” указываем минуты обновления
  • letsencrypt[‘auto_renew_day_of_month’]=“*/7” указываем день месяца, когда должен обновиться сертификат

Убедитесь, что изменения в файле gitlab.rb выглядят следующим образом, обратите внимание, что файл gitlab.rb имеет большой объем, поэтому различные изменения могут находиться удаленно друг от друга.

external_url ‘https://gitlab.example.com’

letsencrypt[‘enable’] = true

letsencrypt[‘contact_emails’] = [‘example@com’]

letsencrypt[‘auto_renew’] = true

letsencrypt[‘auto_renew_hour’] = «12»

letsencrypt[‘auto_renew_minute’] = «30»

letsencrypt[‘auto_renew_day_of_month’] = «*/7»

 

blog-image-deploy-6

Сохраняем наши изменения и применяем их:

sudo gitlab-ctl reconfigure

После получения этого сообщения, которое может занять некоторое время, особенно если возникнет ошибка 502, вы сможете успешно войти в систему GitLab. Сгенерированный пароль можно найти в соответствующем файле от GitLab.

sudo cat /etc/gitlab/initial_root_password

 

Получим следующий вывод:

blog-image-deploy-7

 

В поле «Имя пользователя или электронная почта» введите пользователя «root», а в поле «Пароль» введите пароль, который находится в файле «/etc/gitlab/initial_root_password». После успешной авторизации мы сможем войти в нашу учетную запись GitLab.

 

 

Важно немедленно изменить свой пароль! Для этого перейдите в свой профиль, нажав на аватарку, расположенную в правом верхнем углу экрана.

 

 

Нажмите на <Edit profile -> Password>:

На предыдущем этапе мы уже выполнили необходимые шаги для установки GitLab. Теперь перейдем к дополнительным настройкам. На примере видно, что GitLab предлагает возможность отключить регистрацию новых аккаунтов для любого лица, которое знает наш домен. Это означает, что любое лицо, знакомое с нашим доменом, сможет создать аккаунт (однако администратор все равно должен будет утвердить такую регистрацию).

 

 

Убираем галочку:

 

 

Также вы можете сразу настроить разрешение на регистрацию с вашей организацией:

Нажимаем <Save changes>.

Пустой GitLab потребляет следующие мощности:

Теперь вы можете без проблем использовать удобные функции GitLab, осталось только правильно настроить SMTP для получения уведомлений, и вы готовы начать создание вашей рабочей среды. Таким образом, вы успешно завершили установку, которая, как правило, отвечает потребностям большинства компаний.

Итоги

Поскольку мы выбираем между развертыванием самоуправляемого GitLab на облачных платформах, таких как GCP, AWS, Azure, или использованием SaaS-версии, решение зависит от заказчика, поскольку учитываются требования законодательства определенных стран относительно хранения проектов в облачных средах. Но если правовые ограничения не являются препятствием, мы останавливаемся на использовании SaaS-версии GitLab. Этот подход имеет несколько неоспоримых преимуществ:

  • Снижение затрат на обслуживание облачной инфраструктуры.
  • Экономия времени и усилий, которые обычно требуются для администрирования системы.
  • Отсутствие необходимости в сложной настройке, которая часто является трудоемкой и затратной.
  • Автоматическая настройка SMTP для уведомлений.

Получение обновлений и других пользовательских преимуществ во время использования. Однако это не означает, что самоуправляемый GitLab не является приемлемым вариантом. Он просто требует больше внимания, усилий и ресурсов для эффективной работы. Самоуправляемый GitLab может быть выгодным для компаний с особыми требованиями, высокими стандартами безопасности или потребностью в полном контроле над своими данными.

GitLab and Cloudfresh

Cloudfresh является сертифицированным партнером GitLab, предоставляющим услуги по внедрению, миграции, обучению, интеграции, консультациям и поддержке. Мы помогаем организациям полностью раскрыть потенциал решения GitLab, повышая операционную эффективность, сокращая время разработки и снижая риски безопасности. Наши эксперты помогут вам внедрить и управлять высококачественными техническими решениями GitLab. Ознакомиться с нашими профессиональными услугами можно по ссылке.

А чтобы получить 30-дневную бесплатную пробную версию для самостоятельных лицензий GitLab, профессиональную адаптацию, консультации, опыт и техническую поддержку от Cloudfresh, нажмите здесь.

Давайте ускорим вашу трансформацию DevSecOps вместе!