GitLab Connector
GitLab Connector — это специализированный коннектор, который можно использовать для подключения к GitLab Server (как GitLab.com, так и к собственным инстансам).
Вы можете использовать GitLab Connector для безопасного клонирования приватных репозиториев в CI/CD пайплайнах, использования GitLab CLI (glab) для расширенных операций или применения кастомных CLI-инструментов в контейнеризованных нагрузках для взаимодействия с GitLab без прямого управления учетными данными.
Кроме того, вы можете централизованно управлять конфигурациями доступа к GitLab по пространствам имён, избегая необходимости повторять настройку учетных данных GitLab в каждом пространстве имён.
Примечания:
- GitLab Connector поддерживает как GitLab.com, так и собственные инстансы GitLab.
- GitLab Connector поддерживает использование CLI-инструментов (Git CLI, GitLab CLI и кастомных CLI) для взаимодействия с GitLab.
В этом документе описано:
- Требования к серверам GitLab
- Как создать GitLab Connector на основе GitLab connectorclass
- Возможности прокси и конфигурации GitLab Connector
Содержание
Требования к серверам GitLab и GitLab CLI (glab)Создание GitLab Connector на основе GitLab ConnectorClassБыстрый стартspec.connectorClassNameОписаниеАдресАутентификацияИспользование аутентификации с Private Access TokenСоздание Private Access Token GitLabИспользование без аутентификацииПрокси и конфигурацияАдрес проксиКонфигурацияgitconfiggitlabconfigСовместное использование нескольких конфигурацийИспользование системных встроенных конфигурацийДополнительные материалыТребования к серверам GitLab и GitLab CLI (glab)
Сервер GitLab, к которому осуществляется доступ, должен соответствовать следующим условиям:
-
Он должен поддерживать протоколы передачи HTTP/HTTPS и совместим только с режимом протокола Git "smart HTTP". Этот режим является стандартной реализацией для современных Git-серверов, обеспечивая эффективную передачу данных и механизмы аутентификации.
-
Для операций GitLab API при использовании GitLab CLI (glab) сервер GitLab должен соответствовать требованиям по версии glab CLI. Подробнее: GitLab CLI (glab) Version Requirements
Создание GitLab Connector на основе GitLab ConnectorClass
Быстрый старт
spec.connectorClassName
Константное значение gitlab.
Описание
Вы можете добавить описание для GitLab Connector через поле annotations.
cpaas.io/description: Описание для GitLab Connector.
Например:
Адрес
spec.address указывает адрес доступа к серверу GitLab.
Важно: Этот адрес используется для клонирования репозиториев, а не является API-адресом сервера GitLab. При использовании GitLab CLI (glab) коннектор автоматически формирует API-адрес, добавляя /api/v4 к этому адресу.
Примеры:
- Для GitLab.com:
https://gitlab.com - Для собственных инстансов:
https://gitlab.example.com
Аутентификация
GitLab Connector поддерживает следующие типы аутентификации:
patAuth: аутентификация с помощью Private Access Token (опционально), соответствующий тип секрета:connectors.cpaas.io/gitlab-pat-auth
Использование аутентификации с Private Access Token
Private Access Token (PAT) — рекомендуемый метод аутентификации для GitLab. Он обеспечивает тонкую настройку прав доступа и может быть легко отозван без изменения паролей.
Пример:
Необходимо создать Secret в том же пространстве имён, например:
Примечание: тип секрета должен быть connectors.cpaas.io/gitlab-pat-auth.
Создание Private Access Token GitLab
Подробные инструкции по созданию Personal Access Token в GitLab смотрите в официальной документации: {your-gitlab-server}/help/user/profile/personal_access_tokens.md#create-a-personal-access-token
Необходимые области действия токена:
При создании токена выберите следующие области в зависимости от ваших потребностей:
read_repository: требуется для клонирования репозиториевwrite_repository: требуется для отправки изменений, если вы хотите пушить изменения в репозиторийapi: требуется для операций GitLab API, например, список проектов, веток, merge requests и т.д.
Рекомендации по безопасности:
Для безопасности рекомендуется создавать токены с минимально необходимыми правами. При необходимости дополнительных привилегий создавайте отдельные Connectors с более привилегированными токенами и используйте изоляцию пространств имён для контроля доступа пользователей к каждому Connector.
Использование без аутентификации
Если сервер GitLab не требует аутентификации (для публичных репозиториев), можно опустить поле secretRef:
Прокси и конфигурация
Для того чтобы клиенты могли обращаться к серверам GitLab без прямого управления учетными данными, GitLab ConnectorClass предоставляет прокси-сервер, который автоматически внедряет информацию об аутентификации.
Клиенты, имеющие доступ к коннектору, могут использовать этот прокси-сервер для доступа к серверам GitLab без необходимости настраивать учетные данные на стороне клиента.
Для упрощения использования GitLab ConnectorClass предоставляет конфигурационные файлы, которые можно монтировать в Pod через CSI Driver. При выполнении операций Git CLI, GitLab CLI (glab) или кастомных CLI в Pod эти конфигурации автоматически направляют запросы через прокси-сервис.
Адрес прокси
При создании GitLab Connector система автоматически создаст Service для проксирования доступа к репозиторию GitLab.
Система запишет адрес прокси в поле status.proxy.httpAddress.
Например:
Конфигурация
GitLab Connector предоставляет следующие конфигурации:
gitconfig: конфигурационный файл Git для операций Git CLIgitlabconfig: конфигурационный файл для операций GitLab CLI (glab)
Коннектор также наследует системные встроенные конфигурации из connectors-csi. Подробнее см. в разделе: Connectors System Built-in Configurations
gitconfig
Конфигурационный файл Git для операций Git CLI.
- Предоставляет файл
.gitconfig, в котором адрес сервера GitLab переписывается на адрес прокси - В сочетании с драйвером connectors-csi этот файл монтируется в Pod
- Позволяет обращаться к серверу GitLab через прокси без необходимости настраивать учетные данные на клиенте
Пример файла .gitconfig, сгенерированного в Pod:
Как это работает:
- В секции
[http]добавляется заголовок Authorization с токеном Kubernetes API сервера (временный токен для запросов к прокси-сервису GitLab Connector) - В секции
[url]переписывается адрес сервера GitLab на адрес прокси-сервиса - При выполнении операций Git CLI автоматически применяет эти настройки
Использование:
Чтобы использовать конфигурацию gitconfig в вашем Pod:
- Смонтируйте конфигурацию через CSI драйвер с
configuration.names: "gitconfig" - Скопируйте файл
.gitconfigв домашний каталог пользователя (обычно/root/) - Установите права доступа к файлу
.gitconfigна644 - Git CLI автоматически будет использовать эту конфигурацию для всех операций
Пример конфигурации CSI volume:
Полные примеры использования см. в: Quick Start Guide
gitlabconfig
Конфигурационный файл для операций GitLab CLI (glab).
- Предоставляет файл конфигурации
config.ymlдля GitLab CLI (glab) - Содержит информацию о сервере GitLab, токен аутентификации и API эндпоинты
- Позволяет командам glab работать без ручной настройки
Пример конфигурационного файла, сгенерированного в Pod:
Как это работает:
- Конфигурация направляет glab использовать прокси-сервис
- Токен предоставляется Kubernetes API сервером (временный токен для запросов к прокси-сервису GitLab Connector)
- HTTP и API протоколы настроены на использование прокси, который внедряет информацию об аутентификации в бекенд-запросы
Использование:
Чтобы использовать конфигурацию gitlabconfig в вашем Pod:
- Смонтируйте конфигурацию через CSI драйвер с
configuration.names: "gitlabconfig" - Скопируйте файл
config.ymlв~/.config/glab-cli/ - Установите права доступа к файлу на
600для безопасности - GitLab CLI (glab) автоматически будет использовать эту конфигурацию для всех операций
Пример конфигурации CSI volume:
Полные примеры использования с командами glab см. в: Using GitLab CLI (glab)
Совместное использование нескольких конфигураций
Вы можете смонтировать несколько конфигураций в одном Pod, разделяя их запятой в поле configuration.names:
Это позволяет использовать операции Git CLI и GitLab CLI (glab) в одном Pod. Практические примеры см. в:
- Using GitLab CLI (glab) — Клонирование репозиториев с помощью glab
Использование системных встроенных конфигураций
При монтировании gitlab коннектора доступны следующие встроенные конфигурационные файлы:
context.token: Private Access Token для аутентификации GitLabconnector.status.proxyAddress: адрес прокси-сервиса
Эти файлы полезны для кастомных интеграций или CLI-инструментов, которым нужен прямой доступ к токену аутентификации или адресу прокси.
Полный пример использования встроенных конфигураций см. в: Using Reviewdog with GitLab Connector
Подробнее о системных встроенных конфигурациях: Connectors-CSI Built-in Configurations
Дополнительные материалы
- Quick Start Guide — Начало работы с GitLab Connector
- Using GitLab CLI (glab) — Как использовать glab с коннектором
- Using Reviewdog — Как использовать кастомные CLI-инструменты, например reviewdog, для взаимодействия с GitLab
- CI/CD Integration — Использование в CI/CD пайплайнах