GitLab и GitLab Runner
GitLab — платформа с открытым исходным кодом для хранения репозиториев проектов и автоматизации CI/CD с помощью встроенных пайплайнов и системы отслеживания ошибок. GitLab поддерживает полный цикл CI/CD — непрерывную интеграцию, сборку, тестирование и развертывание кода.
GitLab Runner — открытое программное обеспечение, используется для автоматизации и выполнения задач (пайплайнов) в GitLab CI/CD. Работает как агент, который последовательно выполняет шаги, определенные в задачах пайплайна. Позволяет запускать сборку, тестирование и развертывание приложений в автоматическом режиме, управляя всем процессом выпо лнения задач CI/CD в GitLab.
Можно создать облачный сервер с готовым приложением GitLab и приложением GitLab Runner.
Создать облачный сервер с GitLab
Для работы GitLab облачный сервер должен быть доступен из интернета. Для этого нужно создать приватную подсеть и подключить публичный IP-адрес — это можно сделать при создании сервера. Для настройки GitLab при создании сервера нужно указать user data — пользовательские параметры конфигурации операционной системы.
После создания сервера с GitLab автоматически выпустится бесплатный TLS-сертификат от Let’s Encrypt® для домена, который вы укажете. Для выпуска сертификата нужно добавить A-запись для домена и указать в значении записи публичный IP-адрес сервера. Домен можно добавить в DNS-хостинг Selectel (actual).
Можно создать облачный сервер с GitLab стандартной конфигурации с автоматическим созданием базы данных PostgreSQL на сервере или подключить созданную облачную базу данных PostgreSQL.
-
В панели управления перейдите в раздел Облачная платформа → Серверы.
-
Нажмите Создать сервер.
-
В блоке Имя и расположение:
3.1. В поле Имя введите имя сервера. Оно будет установлено как имя хоста в операционной системе.
3.2. В полях Регион и Пул выберите регион и сегмент пула, в котором будет создан сервер. От сегмента пула зависит список доступных конфигураций сервера и стоимость ресурсов. После создания сервера изменить сегмент пула нельзя.
-
В блоке Источник выберите источник, из которого будет создан сервер.
Нажмите на имя источника по умолчанию, откройте вкладку Приложения, выберите
Cloud GitLab <version>
и нажмите Выбрать. -
В блоке Конфигурация выберите конфигурацию сервера в зависимости от количества пользователей GitLab. Если пользователей ме нее 500, выберите конфигурацию от 4 vCPU, RAM от 8 ГБ и размером загрузочного диска от 20 ГБ. Если пользователей более 500, посмотрите системные требования в официальной документации GitLab. Можно выбрать:
- фиксированную конфигурацию — линейки, в которых зафиксировано соотношение ресурсов;
- или произвольную конфигурацию, в которой можно указать любое соотношение ресурсов.
В конфигурациях используются разные процессоры в зависимости от линейки и сегмента пула.
5.1. Чтобы выбрать фиксированную конфигурацию, нажмите Фиксированная, откройте вкладку с нужной линейкой и выберите конфигурацию.
5.2. Чтобы выбрать произвольную конфигурацию, нажмите Произвольная, укажите количество vCPU и размер RAM.
5.3. Чтобы в качестве загрузочного диска сервера выбрать локальный диск, отметьте чекбокс Локальный SSD NVMe диск. Чтобы в качестве загрузочного диска выбрать сетевой диск, не отмечайте чекбокс.
Объем оперативной памяти, который выделяется серверу, может быть меньше указанного в конфигурации — ядро операционной системы резервирует часть оперативной памяти в зависимости от версии ядра и дистрибутива. Выделенный объем на сервере можно проверить с помощью команды
sudo dmesg | grep Memory
.После создания сервера можно изменить конфигурацию.
-
Если вы не отметили чекбокс Локальный SSD NVMe диск на шаге 5.3., в качестве загрузочного диска сервера будет использоваться первый указанный сетевой диск. В блоке Диски:
6.1. В поле Тип диска выберите тип сетевого загрузочного диска.
6.2. Укажите размер сетевого загрузочного диска в ГБ или ТБ. Учитывайте лимиты сетевых дисков на максимальный размер.
-
Добавьте дополнительные сетевые диски сервера. Дополнительный диск необходим для запуска GitLab и используется для хранения осно вных данных, например баз данных или репозиториев. В блоке Диски:
7.1. В поле Тип диска выберите тип сетевого диска.
7.2. Укажите размер сетевого диска от 30 ГБ. Учитывайте лимиты сетевых дисков на максимальный размер.
7.3. Опционально: чтобы добавить другой дополнительный диск, нажмите Добавить, выберите тип диска и укажите его размер.
После создания сервера можно отключить от него дополнительные диски или подключить новые.
-
В блоке Сеть создайте приватную подсеть и статический публичный IP-адрес. В поле Подсеть выберите Приватная + 1 публичный IP. Автоматически будут созданы приватная сеть
nat
, приватная подсеть, роутерrouter-nat
и публичный IP-адрес.Если приватная подсеть и облачный роутер, подключенный к внешней сети, созданы, в поле Подсеть выберите Приватная + 1 публичный IP, в поле Приватная подсеть выберите созданную подсеть, в поле Приватный IP укажите приватный IP-адрес сервера. Если публичный IP-адрес создан, нажмите Подключить существующий и выберите публичный IP-адрес.
-
В блоке Доступ:
9.1. Разместите на сервере SSH-ключ для проекта для безопасного подключения.
Чтобы добавить в облачную платформу новый SSH-ключ для проекта, нажмите Добавить SSH-ключ, введите имя ключа, вставьте публичный SSH-ключ в формате OpenSSH и нажмите Добавить.
Если SSH-ключ добавлен в облачную платформу, в поле SSH-ключ выберите существующий ключ.
SSH-ключ доступен только в том пуле, в котором он размещен.
9.2. Опционально: в поле Пароль для «root» скопируйте пароль пользователя
root
(пользователь с неограниченными правами на все действия над системой). Сохраните пароль в безопасном месте и не передавайте в открытом виде. -
В блоке Дополнительные настройки:
10.1. Опционально: если вы планируете создать несколько серверов и хотите повысить отказоустойчивость инфраструктуры, добавьте сервер в группу размещения. Чтобы создать новую группу, нажмите Создать группу, введите имя группы и выберите политику размещения на разных хостах:
- желательно — soft-anti-affinity. Система постарается разместить серверы на разных хостах. Если при создании сервера не будет подходящего хоста, он будет создан на том же хосте;
- обязательно — anti-affinity. Серверы в группе обязательно располагаются на разных хостах. Если при создании сервера не будет подходящего хоста, сервер не будет создан.
Если группа создана, в поле Группа размещения выберите группу размещения.
10.2. Опционально: добавьте теги сервера, чтобы добавить дополнительную информацию или фильтровать серверы в списке. Автоматически добавляются теги операционной системы и конфигурации. Чтобы добавить новый тег, в поле Теги введите тег.
-
В блоке Автоматизация в поле User data вставьте скрипт, который выполнится при загрузке системы:
Создание базы данных на сервере
Подключение существующей облачной базы данных
#cloud-config
write_files:
- path: "/opt/gomplate/values/user-values.yaml"
permissions: "0644"
content: |
gitlabDomain: "<example.com>"
gitlabRootEmail: "<root@example.com>"
gitlabRootPassword: "<administrator_password>"
gitlabPostgresDB: "<database_name>"
gitlabPostgresUser: "<database_user_name>"
gitlabPostgresPassword: "<database_user_password>"
useExternalDB: falseУкажите:
<example.com>
— домен для доступа к GitLab. Для домена нужно добавить A-запись и указать в значении записи публичный IP-адрес, который вы указали на шаге 8. Если домен добавлен в DNS-хостинг Selectel (actual), используйте инструкцию Добавить ресурсную запись. После создания сервера для домена автоматически выпустится TLS-сертификат от Let’s Encrypt®;<root@example.com>
— электронная почта администратора GitLab для создания аккаунта и получения уведомлений Let’s Encrypt®;<administrator_password>
— пароль администратора GitLab. Должен быть более восьми символов;<database_name>
— имя базы данных PostgreSQL;<database_user_name>
— имя пользователя базы данных PostgreSQL;<database_user_password>
— пароль пользователя базы данных PostgreSQL;useExternalDB: false
— параметр для использования базы данных на сервере.
#cloud-config
write_files:
- path: "/opt/gomplate/values/user-values.yaml"
permissions: "0644"
content: |
gitlabDomain: "<example.com>"
gitlabRootEmail: "<root@example.com>"
gitlabRootPassword: "<administrator_password>"
gitlabPostgresDB: "<database_name>"
gitlabPostgresUser: "<database_user_name>"
gitlabPostgresPassword: "<database_user_password>"
useExternalDB: true
externalDBHost: "<host>"
externalDBSSLMode: verify-ca
externalDBPort: "5432"Укажите:
<example.com>
— домен для доступа к GitLab. Для домена нужно добавить A-запись и указать в значении записи публичный IP-адрес, который вы указали на шаге 8. Если домен добавлен в DNS-хостинг Selectel (actual), используйте инструкцию Добавить ресурсную запись. После создания сервера для домена автоматически выпустится TLS-сертификат от Let’s Encrypt®;<root@example.com>
— электронная почта администратора GitLab для создания аккаунта и получения уведомлений Let’s Encrypt®;<administrator_password>
— пароль администратора GitLab. Должен быть более восьми символов;<database_name>
— имя облачной базы данных PostgreSQL. Можно посмотреть в панели управления в разделе Облачная платформа → Базы данных → страница кластера → вкладка Базы данных;<database_user_name>
— и мя пользователя облачной базы данных PostgreSQL. Можно посмотреть в панели управления в разделе Облачная платформа → Базы данных → страница кластера → вкладка Базы данных → карточка базы данных → поле Владелец базы;<database_user_password>
— пароль пользователя облачной базы данных PostgreSQL. Пароль не хранится в панели управления — если вы его потеряли, измените пароль;useExternalDB: true
— параметр для использования облачной базы данных;<host>
— DNS-адрес облачной базы данных PostgreSQL. Можно посмотреть в панели управления в разделе Облачная платформа → Базы данных → страница кластера → вкладка Настройки → блок Адреса и статусы нод → вкладка DNS-адреса.
-
Проверьте цену облачного сервера.
-
Нажмите Создать.
Создать облачный сервер с GitLab Runner
Для настройки GitLab Runner при создании сервера нужно указать user data — пользовательские параметры конфигурации операционной системы.
-
В панели управления перейдите в раздел Облачная платформа → Серверы.
-
Нажмите Создать сервер.
-
В блоке Имя и расположение:
3.1. В поле Имя введите имя сервера. Оно будет установлено как имя хоста в операционной системе.
3.2. В полях Регион и Пул выберите регион и сегмент пула, в котором будет создан сервер. От сегмента пула зависит список доступных конфигураций сервера и стоимость ресурсов. После создания сервера изменить сегмент пула нельзя.
-
В блоке Источник выберите источник, из которого будет создан сервер.
Нажмите на имя источника по умолчанию, откройте вкладку Приложения, выберите
Cloud GitLab Runner <version>
и нажмите Выбрать. -
В блоке Конфигурация выберите конфигурацию сервера от 2 vCPU, RAM от 2 ГБ и размером загрузочного диска от 8 ГБ:
- фиксированную конфигурацию — линейки, в которых зафиксировано соотношение ресурсов;
- или произвольную конфигурацию, в которой можно указать любое соотношение ресурсов.
В конфигурациях используются разные процессоры в зависимости от линейки и сегмента пула.
5.1. Чтобы выбрать фиксированную конфигурацию, нажмите Фиксированная, откройте вкладку с нужной линейкой и выберите конфигурацию.
5.2. Чтобы выбрать произвольную конфигурацию, нажмите Произвольная, укажите количество vCPU и размер RAM.
5.3. Чтобы в качестве загрузочного диска сервера выбрать локальный диск, отметьте чекбокс Локальный SSD NVMe диск. Чтобы в качестве загрузочного диска выбрать сетевой диск, не отмечайте чекбокс.
Объем оперативной памяти, который выделяется серверу, может быть меньше указанного в конфигурации — ядро операцион ной системы резервирует часть оперативной памяти в зависимости от версии ядра и дистрибутива. Выделенный объем на сервере можно проверить с помощью команды
sudo dmesg | grep Memory
.После создания сервера можно изменить конфигурацию.
-
Если вы не отметили чекбокс Локальный SSD NVMe диск на шаге 5.3., в качестве загрузочного диска сервера будет использоваться первый указанный сетевой диск. В блоке Диски:
6.1. В поле Тип диска выберите тип сетевого загрузочного диска.
6.2. Укажите размер сетевого загрузочного диска в ГБ или ТБ. Учитывайте лимиты сетевых дисков на максимальный размер.
-
Опционально: добавьте дополнительные сетевые диски сервера. В блоке Диски:
7.1. В поле Тип диска выберите тип сетевого диска.
7.2. Укажите размер сетевого диска в ГБ или ТБ. Учитывайте лимиты сетевых дисков на максимальный размер.
7.3. Чтобы добавить другой дополнительный диск, нажмите Добавить, выберите тип диска и укажите его размер.
После создания сервера можно отключить от него дополнительные диски или подключить новые.
-
В блоке Сеть в поле Подсеть выберите подсеть, которую вы создали, и в поле Приватный IP укажите приватный IP-адрес сервера.
-
В блоке Доступ:
9.1. Разместите на сервере SSH-ключ для проекта для безопасного подключения.
Чтобы добавить в облачную платформу новый SSH-ключ для проекта, нажмите Добавить SSH-ключ, введите имя ключа, вставьте публичный SSH-ключ в формате OpenSSH и нажмите Добавить.
Если SSH-ключ добавлен в облачную платформу, в поле SSH-ключ выберите существующий ключ.
SSH-ключ доступен только в том пуле, в котором он размещен.
9.2. Опционально: в поле Пароль для «root» скопируйте пароль пользователя
root
(пользователь с неогранич енными правами на все действия над системой). Сохраните пароль в безопасном месте и не передавайте в открытом виде. -
В блоке Дополнительные настройки:
10.1. Опционально: если вы планируете создать несколько серверов и хотите повысить отказоустойчивость инфраструктуры, добавьте сервер в группу размещения. Чтобы создать новую группу, нажмите Создать группу, введите имя группы и выберите политику размещения на разных хостах:
- желательно — soft-anti-affinity. Система постарается разместить серверы на разных хостах. Если при создании сервера не будет подходящего хоста, он будет создан на том же хосте;
- обязательно — anti-affinity. Серверы в группе обязательно располагаются на разных хостах. Если при создании сервера не будет подходящего хоста, сервер не будет создан.
Если группа создана, в поле Группа размещения выберите группу размещения.
10.2. Опционально: добавьте теги сервера, чтобы добавить дополнительную информацию или фильтровать серверы в списке. Автоматически добавляются теги о перационной системы и конфигурации. Чтобы добавить новый тег, в поле Теги введите тег.
-
В блоке Автоматизация в поле User data вставьте скрипт, который выполнится при загрузке системы:
#cloud-config
write_files:
- path: "/opt/gomplate/values/user-values.yaml"
permissions: "0644"
content: |
gitlabURL: "<gitlab_server_url>"
token: "<runner_token>"Укажите:
<gitlab_server_url>
— URL сервера с GitLab, к которому подключается GitLab Runner;<runner_token>
— регистрационный токен для GitLab Runner. Можно получить по инструкции Create a project runner with a runner authentication token официальной документации GitLab.
-
Проверьте цену облачного сервера.
-
Нажмите Создать.