• Русский
  • 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, к которому осуществляется доступ, должен соответствовать следующим условиям:

    1. Он должен поддерживать протоколы передачи HTTP/HTTPS и совместим только с режимом протокола Git "smart HTTP". Этот режим является стандартной реализацией для современных Git-серверов, обеспечивая эффективную передачу данных и механизмы аутентификации.

    2. Для операций GitLab API при использовании GitLab CLI (glab) сервер GitLab должен соответствовать требованиям по версии glab CLI. Подробнее: GitLab CLI (glab) Version Requirements

    Создание GitLab Connector на основе GitLab ConnectorClass

    Быстрый старт

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: gitlab-demo
    spec:
      connectorClassName: gitlab
      address: https://gitlab.com
      auth:
        name: patAuth
        secretRef:
          name: gitlab-secret

    spec.connectorClassName

    Константное значение gitlab.

    Описание

    Вы можете добавить описание для GitLab Connector через поле annotations.

    • cpaas.io/description: Описание для GitLab Connector.

    Например:

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: gitlab-demo
      annotations:
        cpaas.io/description: "Подключение к GitLab для доступа к репозиториям команды"

    Адрес

    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. Он обеспечивает тонкую настройку прав доступа и может быть легко отозван без изменения паролей.

    Пример:

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: gitlab-demo
    spec:
      connectorClassName: gitlab
      address: https://gitlab.com
      auth:
        name: patAuth
        secretRef:
          name: gitlab-secret

    Необходимо создать Secret в том же пространстве имён, например:

    apiVersion: v1
    kind: Secret
    metadata:
      name: gitlab-secret
    type: connectors.cpaas.io/gitlab-pat-auth
    stringData:
      token: glpat-xxxxxxxxxxxxxxxxxxxx  # Ваш Private Access Token GitLab

    Примечание: тип секрета должен быть 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:

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: gitlab-demo
    spec:
      connectorClassName: gitlab
      address: https://gitlab.com
      auth:
        name: patAuth

    Прокси и конфигурация

    Для того чтобы клиенты могли обращаться к серверам GitLab без прямого управления учетными данными, GitLab ConnectorClass предоставляет прокси-сервер, который автоматически внедряет информацию об аутентификации.

    Клиенты, имеющие доступ к коннектору, могут использовать этот прокси-сервер для доступа к серверам GitLab без необходимости настраивать учетные данные на стороне клиента.

    Для упрощения использования GitLab ConnectorClass предоставляет конфигурационные файлы, которые можно монтировать в Pod через CSI Driver. При выполнении операций Git CLI, GitLab CLI (glab) или кастомных CLI в Pod эти конфигурации автоматически направляют запросы через прокси-сервис.

    Адрес прокси

    При создании GitLab Connector система автоматически создаст Service для проксирования доступа к репозиторию GitLab.

    Система запишет адрес прокси в поле status.proxy.httpAddress.

    Например:

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: gitlab-demo
    spec:
      # . . .
    status:
      conditions:
      # . . .
      proxy:
        httpAddress:
          url: http://c-gitlab-demo.default.svc.cluster.local

    Конфигурация

    GitLab Connector предоставляет следующие конфигурации:

    • gitconfig: конфигурационный файл Git для операций Git CLI
    • gitlabconfig: конфигурационный файл для операций GitLab CLI (glab)

    Коннектор также наследует системные встроенные конфигурации из connectors-csi. Подробнее см. в разделе: Connectors System Built-in Configurations

    gitconfig

    Конфигурационный файл Git для операций Git CLI.

    • Предоставляет файл .gitconfig, в котором адрес сервера GitLab переписывается на адрес прокси
    • В сочетании с драйвером connectors-csi этот файл монтируется в Pod
    • Позволяет обращаться к серверу GitLab через прокси без необходимости настраивать учетные данные на клиенте

    Пример файла .gitconfig, сгенерированного в Pod:

    [http]
        extraHeader = Authorization: Basic OmV5Smhixxxxxxxxx==
    [url "http://c-gitlab-demo.default.svc"]
        insteadOf = https://gitlab.com

    Как это работает:

    1. В секции [http] добавляется заголовок Authorization с токеном Kubernetes API сервера (временный токен для запросов к прокси-сервису GitLab Connector)
    2. В секции [url] переписывается адрес сервера GitLab на адрес прокси-сервиса
    3. При выполнении операций Git CLI автоматически применяет эти настройки

    Использование:

    Чтобы использовать конфигурацию gitconfig в вашем Pod:

    1. Смонтируйте конфигурацию через CSI драйвер с configuration.names: "gitconfig"
    2. Скопируйте файл .gitconfig в домашний каталог пользователя (обычно /root/)
    3. Установите права доступа к файлу .gitconfig на 644
    4. Git CLI автоматически будет использовать эту конфигурацию для всех операций

    Пример конфигурации CSI volume:

    volumes:
    - name: gitconfig
      csi:
        readOnly: true
        driver: connectors-csi
        volumeAttributes:
          connector.name: "gitlab-demo"
          configuration.names: "gitconfig"

    Полные примеры использования см. в: Quick Start Guide

    gitlabconfig

    Конфигурационный файл для операций GitLab CLI (glab).

    • Предоставляет файл конфигурации config.yml для GitLab CLI (glab)
    • Содержит информацию о сервере GitLab, токен аутентификации и API эндпоинты
    • Позволяет командам glab работать без ручной настройки

    Пример конфигурационного файла, сгенерированного в Pod:

    git_protocol: http
    host: c-gitlab-demo.default.svc.cluster.local
    no_prompt: true
    telemetry: false
    hosts:
      c-gitlab-demo.default.svc.cluster.local:
        token: k8s-api-token-xxxxxxxx
        container_registry_domains: c-gitlab-demo.default.svc.cluster.local,c-gitlab-demo.default.svc.cluster.local:443,registry.c-gitlab-demo.default.svc.cluster.local
        api_host: c-gitlab-demo.default.svc.cluster.local
        git_protocol: http
        api_protocol: http
        user: any-user

    Как это работает:

    1. Конфигурация направляет glab использовать прокси-сервис
    2. Токен предоставляется Kubernetes API сервером (временный токен для запросов к прокси-сервису GitLab Connector)
    3. HTTP и API протоколы настроены на использование прокси, который внедряет информацию об аутентификации в бекенд-запросы

    Использование:

    Чтобы использовать конфигурацию gitlabconfig в вашем Pod:

    1. Смонтируйте конфигурацию через CSI драйвер с configuration.names: "gitlabconfig"
    2. Скопируйте файл config.yml в ~/.config/glab-cli/
    3. Установите права доступа к файлу на 600 для безопасности
    4. GitLab CLI (glab) автоматически будет использовать эту конфигурацию для всех операций

    Пример конфигурации CSI volume:

    volumes:
    - name: gitlab-config
      csi:
        driver: connectors-csi
        readOnly: true
        volumeAttributes:
          connector.name: "gitlab-demo"
          configuration.names: "gitlabconfig"

    Полные примеры использования с командами glab см. в: Using GitLab CLI (glab)

    Совместное использование нескольких конфигураций

    Вы можете смонтировать несколько конфигураций в одном Pod, разделяя их запятой в поле configuration.names:

    volumeAttributes:
      connector.name: "gitlab-demo"
      configuration.names: "gitlabconfig,gitconfig"

    Это позволяет использовать операции Git CLI и GitLab CLI (glab) в одном Pod. Практические примеры см. в:

    Использование системных встроенных конфигураций

    При монтировании gitlab коннектора доступны следующие встроенные конфигурационные файлы:

    • context.token: Private Access Token для аутентификации GitLab
    • connector.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 пайплайнах