[Документация Yandex Cloud](../index.md) > [Yandex Managed Service for GitLab](index.md) > Начало работы

# Как начать работать с Managed Service for GitLab

Чтобы начать работу с сервисом:
1. [Создайте инстанс](#instance-create).
1. [Настройте рабочее окружение](#configure-mgl).
1. [Добавьте SSH-ключи в GitLab](#ssh).
1. [Начните работу с репозиторием](#start-work-with-git).

{% note warning %}

Если вы начинаете работу с Managed Service for GitLab, чтобы перенести в него проекты из пользовательской инсталляции GitLab, обратитесь к [инструкции](operations/instance/migration.md).

{% endnote %}

Подробнее об отличиях Managed Service for GitLab от пользовательской инсталляции GitLab Community Edition читайте в разделе [Преимущества сервиса перед пользовательской инсталляцией GitLab](concepts/managed-gitlab-vs-custom-installation.md).

## Перед началом работы {#before-you-begin}

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. Перейдите в [консоль управления](https://console.yandex.cloud), затем войдите в Yandex Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
  1. Если у вас еще нет каталога, создайте его:

     1. В [консоли управления](https://console.yandex.cloud) на панели сверху нажмите ![image](../_assets/console-icons/layout-side-content-left.svg) или ![image](../_assets/console-icons/chevron-down.svg) и выберите нужное [облако](../resource-manager/concepts/resources-hierarchy.md#cloud).
     1. Справа от названия облака нажмите ![image](../_assets/console-icons/ellipsis.svg).
     1. Выберите ![image](../_assets/console-icons/plus.svg) **Создать каталог**.
     
        ![create-folder1](../_assets/resource-manager/create-folder-1.png)
     
     1. Введите имя [каталога](../resource-manager/concepts/resources-hierarchy.md#folder). Требования к имени:
     
         * длина — от 3 до 63 символов;
         * может содержать строчные буквы латинского алфавита, цифры и дефисы;
         * первый символ — буква, последний — не дефис.
     
     1. (Опционально) Введите описание каталога.
     1. Выберите опцию **Создать сеть по умолчанию**. Будет создана [сеть](../vpc/concepts/network.md#network) с подсетями в каждой зоне доступности. Также в этой сети будет создана [группа безопасности по умолчанию](../vpc/concepts/security-groups.md#default-security-group), внутри которой весь сетевой трафик разрешен.
     1. Нажмите кнопку **Создать**.
     
        ![create-folder2](../_assets/resource-manager/create-folder-2.png)

  1. [Назначьте](../iam/operations/roles/grant.md) вашему аккаунту в Yandex Cloud роль [vpc.user](../vpc/security/index.md#vpc-user) и роль [gitlab.editor или выше](security/index.md#roles-list). Эти роли позволяют создать инстанс.

      {% note info %}
      
      Если вы не можете управлять ролями, обратитесь к администратору вашего облака или организации.
      
      {% endnote %}

{% endlist %}

## Создайте инстанс {#instance-create}

{% note warning %}

После создания инстанса нельзя изменить его сетевую конфигурацию: зону доступности и подсеть.

{% endnote %}

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В консоли управления выберите [каталог](../resource-manager/concepts/resources-hierarchy.md#folder), в котором нужно создать [инстанс GitLab](concepts/index.md#instance).
  1. Перейдите в сервис **Managed Service for&nbsp;GitLab**.
  1. Нажмите кнопку **Создать инстанс**.
  1. В верхней части страницы:
  
     1. Введите имя инстанса. Оно должно быть уникальным в рамках Yandex Cloud.
  
        * длина — от 3 до 63 символов;
        * может содержать строчные буквы латинского алфавита, цифры и дефисы;
        * первый символ — буква, последний — не дефис.
  
     1. (Опционально) Введите описание инстанса.
     1. (Опционально) Добавьте [метки](../resource-manager/concepts/labels.md) для разделения инстансов на логические группы.
     1. (Опционально) Установите защиту инстанса от случайного удаления пользователем.
  
  1. В блоке **Конфигурация**:
  
     1. Выберите [тип инстанса](concepts/index.md#config). После создания инстанса можно [изменить его тип](operations/instance/instance-update.md) на более производительный.
     1. Укажите [зону доступности](../overview/concepts/geo-scope.md). После создания инстанса изменить его зону доступности невозможно.
     1. Укажите [подсеть](../vpc/concepts/network.md#subnet), в которой будет размещен инстанс. Технические ограничения Yandex Cloud временно не позволяют выбрать подсеть с диапазоном адресов `192.168.0.0/24`.
     1. Выберите [группу безопасности](../vpc/concepts/security-groups.md) или создайте новую:
  
        1. Нажмите кнопку **Создать группу**.
        1. Введите имя и описание группы безопасности. Правила для группы безопасности вы сможете добавить позже в сервисе **Virtual Private Cloud**.
        1. Нажмите кнопку **Создать**.
  
        Если не задать отдельную группу безопасности, будет использована [группа безопасности по умолчанию](../vpc/concepts/security-groups.md#default-security-group), созданная в сети инстанса.
        
        [Настройте](operations/configure-security-group.md) группу безопасности так, чтобы правила разрешали входящий и исходящий трафик с нужных портов и IP-адресов.
              
        {% note warning %}
        
        От настройки группы безопасности зависит работоспособность и доступность инстанса Managed Service for GitLab.
        
        {% endnote %}
        
        Если у вас возникли проблемы с настройкой группы безопасности, обратитесь в [техническую поддержку](https://kz.center.yandex.cloud/support).
  
     1. Выберите размер [диска](../compute/concepts/disk.md). После создания инстанса размер его диска [можно увеличить](operations/instance/instance-update.md).
     1. Укажите [доменное имя инстанса](../compute/concepts/network.md#hostname) — для него будут автоматически созданы нужные DNS-записи в домене `.gitlab.yandexcloud.net`.
  
        Доменное имя должно быть уникальным в рамках Yandex Cloud.
        
        * Длина — от 5 до 50 символов.
        * Может содержать строчные буквы латинского алфавита, цифры и дефисы.
        * Первый и последний символ — не дефис.
  
     1. Задайте срок хранения автоматических резервных копий (в днях).
     1. (Опционально) Включите [правила ревью кода](concepts/approval-rules.md). Для этого выберите подходящую конфигурацию правил ревью.
  
        {% note warning %}
        
        За использование правил ревью кода в Managed Service for GitLab взимается плата в зависимости от используемой [конфигурации](concepts/approval-rules.md#packages). Подробнее читайте на странице [Правила тарификации для Yandex Managed Service for GitLab](pricing.md).
        
        {% endnote %}
  
  1. В блоке **Данные администратора** укажите:
     * **Электронная почта** — адрес электронной почты администратора инстанса GitLab. На этот адрес придет письмо со ссылкой для создания пароля.
     * **Логин** — логин администратора.
  1. (Опционально) В блоке **Дополнительные настройки** включите удаление образов без тегов. Настройка влияет на свободное место на диске инстанса.
  1. Нажмите кнопку **Создать**.
  1. Дождитесь, когда инстанс будет готов к работе: его статус на панели Managed Service for GitLab сменится на **Running**. Это может занять некоторое время.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../cli/quickstart.md#install).
  
  По умолчанию используется каталог, указанный при [создании](../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
  
  1. Посмотрите описание команды [CLI](../cli/index.md) для создания инстанса Managed Service for GitLab:
  
       ```bash
       yc managed-gitlab instance create --help
       ```
  
  1. Выберите [подсеть](../vpc/concepts/network.md#subnet):
  
      ```bash
      yc vpc subnet list
      ```
  
      Результат:
  
       ```text
       +----------------------+---------------------------+----------------------+----------------+-------------------+-----------------+
       |          ID          |           NAME            |      NETWORK ID      | ROUTE TABLE ID |       ZONE        |      RANGE      |
       +----------------------+---------------------------+----------------------+----------------+-------------------+-----------------+
       | e9bnlm18l70a******** |   default-kz1-a   | enpe3m3fa00u******** |                |   kz1-a   | [10.128.0.0/24] |
       +----------------------+---------------------------+----------------------+----------------+-------------------+-----------------+
       ```
  
  1. Создайте инстанс GitLab (в примере приведены не все доступные параметры):
  
      ```bash
      yc managed-gitlab instance create \
        --name first-instance \
        --resource-preset-id <класс_хостов> \
        --disk-size <размер_диска_ГБ> \
        --admin-login <логин администратора> \
        --admin-email <электронная_почта_администратора> \
        --domain-prefix <доменное_имя_инстанса> \
        --deletion-protection \
        --approval-rules <конфигурация_правил_ревью_кода> \
        --subnet-id <идентификатор_подсети>
      ```
  
      Где:
      * `--name` — имя инстанса, уникальное в рамках Yandex Cloud. Требования к имени:
  
        * длина — от 3 до 63 символов;
        * может содержать строчные буквы латинского алфавита, цифры и дефисы;
        * первый символ — буква, последний — не дефис.
  
      * `--resource-preset-id` — класс хостов. Он определяет технические характеристики виртуальной машины, на которой будет развернут инстанс GitLab. Возможные значения:
        * `s2.micro` — 2 vCPU, 8 ГБ RAM.
        * `s2.small` — 4 vCPU, 16 ГБ RAM.
        * `s2.medium` — 8 vCPU, 32 ГБ RAM.
        * `s2.large` — 16 vCPU, 64 ГБ RAM.
      * `--disk-size` — размер диска в ГБ.
      * `--admin-login` — логин администратора инстанса GitLab.
      * `--admin-email` — адрес электронной почты администратора. На этот адрес придет письмо со ссылкой для создания пароля.
      * `--domain-prefix` — [доменное имя инстанса](../compute/concepts/network.md#hostname). Для него будут автоматически созданы нужные DNS-записи в домене `.gitlab.yandexcloud.net`.
  
        Доменное имя должно быть уникальным в рамках Yandex Cloud.
        
        * Длина — от 5 до 50 символов.
        * Может содержать строчные буквы латинского алфавита, цифры и дефисы.
        * Первый и последний символ — не дефис.
  
      * `--deletion-protection` — защита инстанса от случайного удаления пользователем.
      * `--approval-rules` — конфигурация [правил ревью кода](concepts/approval-rules.md). Возможные значения:
        * `BASIC` — базовая.
        * `STANDARD` — стандартная.
        * `ADVANCED` — продвинутая.
  
        {% note warning %}
        
        За использование правил ревью кода в Managed Service for GitLab взимается плата в зависимости от используемой [конфигурации](concepts/approval-rules.md#packages). Подробнее читайте на странице [Правила тарификации для Yandex Managed Service for GitLab](pricing.md).
        
        {% endnote %}
  
      * `--subnet-id` — идентификатор выбранной подсети.
  
      Результат:
  
      ```text
      id: c17c60tpadua********
      folder_id: b1g2slt7p9ug********
      created_at: "2025-07-20T18:34:16.078Z"
      updated_at: "2025-07-20T18:34:16.078Z"
      name: test-cli
      resource_preset_id: s2.small
      disk_size: "107374182400"
      status: RUNNING
      admin_login: admin-gl
      admin_email: user@example.com
      domain: test-domain-user.gitlab.yandexcloud.net
      subnet_id: e9b4rrpuu2a********
      backup_retain_period_days: "7"
      deletion_protection: true
      approval_rules_id: BASIC
      gitlab_version: 17.11.6
      ```
  
      Подробнее о команде читайте в [справочнике CLI](cli-ref/instance/create.md).

{% endlist %}

{% note info %}

В Managed Service for GitLab при создании инстанса автоматически генерируется SSL-сертификат. Дополнительная настройка для работы по протоколу HTTPS не требуется.

{% endnote %}

## Настройте рабочее окружение {#configure-mgl}

1. Активируйте инстанс Managed Service for GitLab:
   1. Перейдите по ссылке, полученной на электронную почту администратора после создания инстанса.
   1. Измените пароль администратора.
   1. Авторизуйтесь с помощью логина и пароля администратора.
1. (Опционально) [Создайте группу](https://docs.gitlab.com/ee/user/group/#create-a-group), в которой будет размещен проект с репозиторием.

   Если есть несколько проектов, удобно объединять пользователей в группы. Это позволяет:

   * предоставлять права в определенные проекты каждой группе;
   * просматривать Issues и мерж-реквесты по группам;
   * просматривать аналитику по активности группы.

   Подробнее в [документации GitLab](https://docs.gitlab.com/ee/user/group/).

1. [Создайте пустой проект](https://docs.gitlab.com/ee/user/project/), в котором будет размещен репозиторий.
1. [Создайте пользователей и добавьте](operations/create-user.md) их в группу или проект с ролью `Maintainer` или `Owner`.

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

## Добавьте SSH-ключи в GitLab {#ssh}

1. Создайте пару из открытого и закрытого SSH-ключей для аккаунта в GitLab:

    {% list tabs group=operating_system %}

    - Linux/macOS {#linux-macos}

      1. Откройте терминал.
      1. Создайте новый ключ с помощью команды `ssh-keygen`:
      
          ```bash
          ssh-keygen -t ed25519 -C "<опциональный_комментарий>"
          ```
      
          Вы можете передать в параметре `-C` пустую строку, чтобы не добавлять комментарий, или не указывать параметр `-C` вообще — в таком случае будет добавлен комментарий по умолчанию.
      
          После выполнения команды вам будет предложено указать имя и путь к файлам с ключами, а также ввести пароль для закрытого ключа. Если задать только имя, пара ключей будет создана в текущей директории. Открытый ключ будет сохранен в файле с расширением `.pub`, закрытый ключ — в файле без расширения.
      
          По умолчанию команда предлагает сохранить ключ под именем `id_ed25519` в директории `/home/<имя_пользователя>/.ssh`. Если в этой директории уже есть SSH-ключ с именем `id_ed25519`, вы можете случайно перезаписать его и потерять доступ к ресурсам, в которых он используется. Поэтому рекомендуется использовать уникальные имена для всех SSH-ключей.

    - Windows 10/11 {#windows}

      Если у вас еще не установлен [OpenSSH](https://ru.wikipedia.org/wiki/OpenSSH), установите его по [инструкции](https://learn.microsoft.com/ru-ru/windows-server/administration/openssh/openssh_install_firstuse).
      
      1. Запустите `cmd.exe` или `powershell.exe` (предварительно обновите PowerShell).
      1. Создайте новый ключ с помощью команды `ssh-keygen`:
      
          ```shell
          ssh-keygen -t ed25519 -C "<опциональный_комментарий>"
          ```
      
          Вы можете передать в параметре `-C` пустую строку, чтобы не добавлять комментарий, или не указывать параметр `-C` вообще — в таком случае будет добавлен комментарий по умолчанию.
      
          После выполнения команды вам будет предложено указать имя и путь к файлам с ключами, а также ввести пароль для закрытого ключа. Если задать только имя, пара ключей будет создана в текущей директории. Открытый ключ будет сохранен в файле с расширением `.pub`, закрытый ключ — в файле без расширения.
      
          По умолчанию команда предлагает сохранить ключ под именем `id_ed25519` в папку `C:\Users\<имя_пользователя>/.ssh`. Если в этой директории уже есть SSH-ключ с именем `id_ed25519`, вы можете случайно перезаписать его и потерять доступ к ресурсам, в которых он используется. Поэтому рекомендуется использовать уникальные имена для всех SSH-ключей.

    - Windows 7/8 {#windows7-8}

      Создайте ключи с помощью приложения PuTTY:
      
      1. [Скачайте](https://www.putty.org) и установите PuTTY.
      1. Добавьте папку с PuTTY в переменную `PATH`:
      
          1. Нажмите кнопку **Пуск** и в строке поиска Windows введите **Изменение системных переменных среды**.
          1. Справа снизу нажмите кнопку **Переменные среды...**.
          1. В открывшемся окне найдите параметр `PATH` и нажмите **Изменить**.
          1. Добавьте путь к папке в список.
          1. Нажмите кнопку **ОК**.
      
      1. Запустите приложение PuTTYgen.
      1. В качестве типа генерируемой пары выберите **EdDSA**. Нажмите **Generate** и поводите курсором в поле выше до тех пор, пока не закончится создание ключа.
      
          ![ssh_generate_key](../_assets/compute/ssh-putty/ssh_generate_key.png)
      
      1. В поле **Key passphrase** введите надежный пароль. Повторно введите его в поле ниже.
      1. Нажмите кнопку **Save private key** и сохраните закрытый ключ. Никому не сообщайте ключевую фразу от него.
      1. Нажмите кнопку **Save public key** и сохраните открытый ключ в файле `<имя_ключа>.pub`.

    {% endlist %}

1. Запустите SSH-агент:
   
   {% list tabs group=operating_system %}
   
   - Linux/MacOS {#linux-macos}
   
      1. Выполните команду:
   
         ```bash
         ssh-agent -s
         ```
   
      1. Чтобы SSH-агент запускался при входе в систему, в файл `~/.profile` добавьте команду запуска:
   
         ```bash
         ssh-agent -s
         ```
   
   - Windows {#windows}
   
      1. Откройте контекстное меню кнопки **Пуск**.
      1. Выберите пункт **Управление компьютером**.
      1. Перейдите в раздел **Службы и приложения** → **Службы**.
      1. Откройте контекстное меню службы **SSH agent** и выберите пункт **Свойства**.
      1. На вкладке **Главное** измените тип запуска с **Выключена** на **Автоматически**.
      1. Нажмите кнопку **OK** и запустите службу.
   
   {% endlist %}
1. Добавьте ключ в SSH-агент:

   ```bash
   ssh-add <путь_к_закрытому_ключу>
   ```

1. [Присвойте публичный SSH-ключ](https://docs.gitlab.com/ee/user/ssh.html#add-an-ssh-key-to-your-gitlab-account) аккаунту в GitLab.
1. Проверьте, что вы можете подключиться к GitLab:

   ```bash
   ssh -T git@<домен_инстанса_GitLab>
   ```

   Пример:

   ```bash
   ssh -T git@example.gitlab.yandexcloud.net
   ```

   Если вы подключаетесь в первый раз, отобразится подобное сообщение:

   ```text
   The authenticity of host 'gitlab.example.com (35.231.145.151)' can't be established.
   ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw.
   Are you sure you want to continue connecting (yes/no)? yes
   Warning: Permanently added 'gitlab.example.com' (ECDSA) to the list of known hosts.
   ```

   Введите `yes` и нажмите **Enter**.

   Если вы подключаетесь не в первый раз, в случае успеха появится сообщение:

   ```text
   Welcome to GitLab, @<логин>!
   ```

   В случае ошибки запустите подключение в режиме Verbose, чтобы получить логи:

   ```bash
   ssh -Tvvv git@<домен_инстанса_GitLab>
   ```

Попросите каждого участника вашей группы или проекта создать пару SSH-ключей таким образом и присвоить публичный ключ своему аккаунту в GitLab.

## Начните работу с репозиторием {#start-work-with-git}

Чтобы начать работу с локальной копией вашего репозитория от имени созданного аккаунта, выполните следующие действия на локальном компьютере:

1. [Установите клиент Git](https://docs.gitlab.com/ee/gitlab-basics/start-using-git.html#install-git).
1. [Клонируйте репозиторий](https://docs.gitlab.com/ee/gitlab-basics/start-using-git.html#clone-a-repository) по протоколу SSH.

   {% cut "Что делать в случае ошибки `Permission denied (publickey)`" %}

   При клонировании может возникнуть ошибка:

   ```text
   Cloning into '<название_проекта>'...
   git@<домен_инстанса_GitLab>: Permission denied (publickey).
   fatal: Could not read from remote repository.

   Please make sure you have the correct access rights
   and the repository exists.
   ```

   Если вы получили такую ошибку:

   1. Создайте и откройте конфигурационный файл для настройки SSH-ключей:

      ```bash
      nano ~/.ssh/config
      ```

   1. Добавьте в него содержимое:

      ```bash
      Host <домен_инстанса_GitLab>
         IdentityFile <путь_к_закрытому_ключу>
      ```

      В параметре `IdentityFile` укажите абсолютный путь к закрытому ключу, который вы создали для проекта GitLab.

   1. Сохраните файл.
   1. Снова склонируйте репозиторий по SSH.

   {% endcut %}

1. Перейдите в каталог с репозиторием:

   ```bash
   cd <имя_проекта>
   ```

1. Внесите изменения в файлы репозитория.
1. [Проиндексируйте и примените изменения](https://docs.gitlab.com/ee/gitlab-basics/start-using-git.html#add-and-commit-local-changes) в локальном репозитории:

   ```bash
   git add . && git commit -m "<название_коммита>"
   ```

1. Отправьте изменения в удаленный репозиторий:

   ```bash
   git push origin main
   ```