GitLab Connector
GitLab Connector — это специализированный коннектор, который можно использовать для подключения к GitLab Server (как к GitLab.com, так и к собственным инстансам).
Вы можете использовать GitLab Connector для безопасного клонирования приватных репозиториев в CI/CD пайплайнах, использовать GitLab CLI (glab) для расширенных операций или применять кастомные CLI-инструменты в контейнеризованных нагрузках для взаимодействия с GitLab без прямого управления учетными данными.
Кроме того, вы можете централизовать управление конфигурациями доступа к GitLab по пространствам имён, избегая необходимости повторять настройку учетных данных GitLab в каждом namespace.
Примечания:
- 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 в том же namespace, например:
Примечание: тип секрета должен быть 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 с более привилегированными токенами и используйте изоляцию namespace для контроля доступа пользователей к каждому 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-driver этот файл монтируется в Pod
- Позволяет обращаться к серверу GitLab через прокси без необходимости настраивать учетные данные на стороне клиента
Пример файла .gitconfig, сгенерированного в Pod:
Как это работает:
- Раздел
[http]добавляет заголовок Authorization с токеном Kubernetes API сервера (временный токен для запросов к прокси-сервису GitLab Connector) - Раздел
[url]переписывает адрес сервера GitLab на адрес прокси-сервиса - При выполнении операций Git CLI автоматически используются эти настройки
Использование:
Чтобы использовать конфигурацию gitconfig в вашем Pod:
- Смонтируйте конфигурацию через CSI driver с
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 driver с
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 connector доступны следующие встроенные конфигурационные файлы:
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 пайплайнах