GitLab
GitLab — платформа с открытым исходным кодом для хранения репозиториев проектов и автоматизации CI/CD с помощью встроенных пайплайнов и системы отслеживания ошибок. GitLab поддерживает полный цикл CI/CD — непрерывную интеграцию, сборку, тестирование и развертывание кода.
Можно создать облачный сервер с готовым приложением GitLab. В России приложение работает на облачном сервере c настроенной операционной системой SelectOS 1.1. В других странах — Ubuntu 22.04.
Создать облачный сервер с GitLab
Облачный сервер с GitLab будет доступен по SSH через порт 22022.
Для работы GitLab облачный сервер должен быть доступен из интернета. Для этого при создании сервера создайте приватную подсеть и подключите публичный IP-адрес. Для настройки GitLab также при создании сервера укажите user data — пользовательские параметры конфигурации операционной системы. Вы можете задать один из двух набор параметров:
- с автоматическим созданием базы данных PostgreSQL на сервере;
- с подключением созданной облачной базы данных PostgreSQL.
После создания сервера с GitLab автоматически выпустится бесплатный TLS-сертификат от Let’s Encrypt® для домена, который вы укажете. Для выпуска сертификата нужно добавить A-запись для домена и указать в значении записи публичный IP-адрес сервера. Домен можно добавить в DNS-хостинг Selectel (actual).
1. Создать публичный IP-адрес
Создайте публичный IP-адрес, чтобы облачный сервер с GitLab был доступен из интернета.
Используй те подраздел Создать публичный IP-адрес инструкции Публичные IP-адреса.
2. Добавить А-запись для домена
Добавьте ресурсную запись, чтобы получить доступ к GitLab по домену.
Укажите:
- тип ресурсных записей в группе — A;
- значение записи — публичный IP-адрес, который вы создали ранее.
3. Создать облачный сервер с GitLab
-
В панели управления в верхнем меню нажмите Продукты и выберите Облачные серверы.
-
Нажмите Создать сервер.
-
Заполните блоки:
-
Проверьте цену облачного сервера.
-
Нажмите Создать.
Имя и расположение
-
Введите имя сервера. Оно будет установлено как имя хоста в операционной системе.
-
Выберите регион и сегмент пула, в котором будет создан сервер. От сегмента пула зависит список доступных конфигураций сервера и стоимость ресурсов. После создания сервера изменить сегмент пула нельзя.
Источник
-
Откройте вкладку Приложения.
-
Выберите Cloud GitLab.
-
Опционально: если вам нужна другая актуальная или архивная версия приложения, в поле Версия выберите нужную версию.
Конфигурация
Выберите конфигурацию от 4 vCPU, RAM от 8 ГБ и размером загрузочного диска от 20 ГБ для 500 пользователей GitLab и меньше. Для сервера доступны два типа конфигураций:
- фиксированные конфигурации — несколько линеек с разными техническими характеристиками, в которых зафиксировано соотношение ресурсов;
- произвольные конфигурации, в которых можно указать любое соотношение ресурсов.
В конфигурациях используются разные процессоры в зависимости от линейки и сегмента пула. После создания сервера можно будет изменить конфигурацию.
Фиксированная конфигурация
Произвольная конфигурация
-
Нажмите Фиксированная.
-
Откройте вкладку с нужной линейкой.
-
Выберите конфигурацию.
-
Если в выбранной конфигурации доступны и локальные, и сетевые диски, выберите диск, который будет использоваться в качестве загрузочного:
- локальный диск — отметьте чекбокс Локальный SSD NVMe диск. Сервер с локальным диском можно создать только из образов и приложений;
- сетевой диск — не отмечайте чекбокс.
Объем оперативной памяти, который выделяется серверу, может быть меньше указанного в конфигурации — ядро операционной системы резервирует часть опера тивной памяти в зависимости от версии ядра и дистрибутива. Выделенный объем на сервере можно проверить с помощью команды
sudo dmesg | grep Memory
.
-
Нажмите Произвольная.
-
Укажите количество vCPU и размер RAM.
-
Если в выбранной конфигурации доступны и локальные, и сетевые диски, выберите диск, который будет использоваться в качестве загрузочного:
- локальный диск — отметьте чекбокс Локальный SSD NVMe диск. Сервер с локальным диском можно создать только из образов и приложений;
- сетевой диск — не отмечайте чекбокс.
Объем оперативной памяти, который выделяется серверу, может быть меньше указанного в конфигурации — ядро операционной системы резервирует часть оперативной памяти в зависимости от версии ядра и дистрибутива. Выделенный объем на сервере можно проверить с помощью команды
sudo dmesg | grep Memory
.
Диски
-
Если при настройке конфигурации вы не отметили чекбокс Локальный SSD NVMe диск, в качестве загрузочного диска сервера будет использоваться первый указанный сетевой диск. Чтобы настроить его:
1.1. Выберите тип сетевого загрузочного диска.
1.2. Укажите размер сетевого загрузочного диска в ГБ или ТБ. Учитывайте лимиты сетевых дисков на максимальный размер.
1.3. Если вы выбрали тип диска Универсальный v2, укажите общее количество операций чтения и записи в IOPS. После создания диска вы можете изменить количество IOPS — уменьшить или увеличить. Количество изменений IOPS не ограничено.
-
Добавьте дополнительный сетевой диск сервера. Дополнительный диск необходим для запуска GitLab и используется для хранения основных данных, например баз данных или репозиториев.:
2.1. Нажмите Добавить.
2.2. Выберите тип сетевого диска.
2.3. Укажите размер сетевого диска от 30 ГБ. Учитывайте лимиты сетевых дисков на максимальный размер.
2.4. Если вы выбрали тип диска Универсальный v2, укажите общее количество операций чтения и записи в IOPS. После создания диска вы можете изменить количество IOPS — уменьшить или увеличить. Количество изменений IOPS не ограничено.
После создания сервера можно будет подключить новые дополнительные диски.
Сеть
Сервер может быть добавлен в новую приватную подсеть или в уже существующую.
Приватная — подсеть без доступа из интернета или с одним статическим публичным IP-адресом. Публичный IP-адрес подключается к серверу, который будет доступен из интернета.
Существующая приватная подсеть
Новая приватная подсеть
-
Нажмите Приватная подсеть.
-
В поле Публичный IP-адрес для доступа из интернета выберите публичный IP-адрес, который вы создали раннее или создайте новый.
-
Разверните блок с настройками приватной подсети.
-
В поле Подсеть выберите существующую подсеть.
-
В поле Приватный IP укажите приватный IP-адрес сервера. Публичный IP-адрес будет автоматически подключен к приватному адресу.
-
Нажмите Приватная подсеть.
-
В поле Публичный IP-адрес для доступа из интернета выберите публичный IP-адрес, который вы создали раннее или создайте новый.
-
Разверните блок с настройками приватной подсети.
-
Если у вас есть существующие сети в проекте, в поле Подсеть выберите Новая подсеть.
-
Опционально: измените CIDR подсети.
-
Опционально: включите тумблер DHCP.
-
Опционально: в поле Шлюз измените IP-адрес шлюза по умолчанию.
-
В поле Сеть выберите существующую сеть, в которой будет создана подсеть, или Новая сеть. Для приватной подсети с публичным IP-адресом автоматически будет создан роутер
router-<network_name>
, где<network_name>
— имя сети. -
Если вы выбрали Новая сеть, введите имя сети.
Безопасность
Выберите группы безопасности для фильтрации трафика на портах сервера. Без групп безопасности трафик буде т запрещен. Если блок отсутствует, в сети сервера выключена фильтрация трафика (port security). С выключенной фильтрацией трафика весь трафик будет разрешен.
Доступ
-
Разместите на сервере SSH-ключ для проекта для безопасного подключения:
1.1. Если SSH-ключ для проекта не добавлен в облачную платформу, нажмите Добавить SSH-ключ, введите имя ключа, вставьт е публичный ключ в формате OpenSSH и нажмите Добавить.
1.2. Если SSH-ключ для проекта добавлен в облачную платформу, в поле SSH-ключ выберите существующий ключ. SSH-ключ доступен только в том пуле, в котором он размещен.
-
Опционально: в поле Пароль для «root»:
2.1. Скопируйте пароль пользователя
root
— пользователя с неограниченными правами на все действия над системой.2.2. Сохраните пароль в безопасном месте и не передавайте в открытом виде.
Дополнительные настройки
-
Если вы планируете создать несколько серверов и хотите повысить отказоустойчивость инфраструктуры, добавьте сервер в группу размещения:
1.1. Чтобы создать новую группу, в поле Группа размещения нажмите Создать.
1.2. Выберите Новая группа и введите имя группы.
1.3. Выберите политику размещения на разных хостах:
- желательно — soft-anti-affinity. Система постарается разместить серверы на разных хостах. Если при создании сервера не будет подходящего хоста, он будет создан на том же хосте;
- обязательно — anti-affinity. Серверы в группе обязательно располагаются на разных хостах. Если при создании сервера не будет подходящего хоста, сервер не будет создан.
1.4. Если группа создана, в поле Группа размещения выберите группу размещения.
-
Чтобы добавить дополнительную информацию или фильтровать серверы в списке, добавьте теги сервера. Автоматически добавляются теги операционной системы и конфигурации. Чтобы добавить новый тег, в поле Теги введите тег.
-
Чтобы добавить скрипт, который выполнится с помощью агента cloud-init при первом запуске операционной системы, в блоке Автоматизация в поле 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, который вы добавили ранее;<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, который вы добавили ранее;<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-адреса.