Git Connector
Git connector — это платформонезависимый коннектор, который можно использовать для подключения к любому Git-серверу, например GitHub, GitLab, Bitbucket.
Вы можете использовать Git Connector для безопасного клонирования приватных репозиториев в CICD пайплайнах или применять его в контейнеризованных нагрузках для выполнения Git-операций без использования учётных данных.
Кроме того, вы можете централизованно управлять конфигурациями доступа к Git по всем namespace, избегая необходимости повторять настройку Git-учётных данных в каждом namespace.
В этом документе описано:
- Требования к Git-серверам
- Как создать Git-коннектор на основе Git connectorclass
- Возможности прокси и конфигурации Git-коннектора
Содержание
Требования к Git-серверамСоздание Git-коннектора на основе Git connectorclassБыстрый стартspec.connectorClassNameОписаниеАдресАутентификацияИспользование базовой аутентификацииТребуемые разрешения для учётных данныхПараметры аутентификацииПрокси и конфигурацияАдрес проксиКонфигурацияДополнительноТребования к Git-серверам
Git-сервер, к которому планируется доступ, должен соответствовать следующим условиям:
- Он должен поддерживать транспортные протоколы HTTP/HTTPS и быть совместимым только с режимом протокола Git "smart HTTP". Этот режим является стандартной реализацией для современных Git-серверов, обеспечивая эффективную передачу данных и механизмы аутентификации.
Создание Git-коннектора на основе Git connectorclass
Быстрый старт
spec.connectorClassName
Постоянное значение git.
Описание
Вы можете добавить описание для Git-коннектора через поле annotations.
cpaas.io/description: Описание Git-коннектора.
Например:
Адрес
spec.address указывает адрес доступа к Git-серверу, например: https://github.com. Важно отметить, что этот адрес используется для клонирования Git-репозиториев, а не является адресом API Git-сервера.
Аутентификация
Git-коннектор поддерживает следующие типы аутентификации:
basicAuth: аутентификация по имени пользователя и паролю (опционально), соответствующий тип секрета:kubernetes.io/basic-auth
Использование базовой аутентификации
Например:
Необходимо создать Secret в том же namespace, например:
Примечание: Поле password не ограничивается реальными паролями пользователя. Вы можете использовать другие типы учётных данных, такие как Personal Access Tokens (PAT) или API-ключи, при условии, что они соответствуют требованиям разрешений, описанным в разделе Secret Permissions Required.
Если Git-сервер не требует аутентификации, поле secretRef можно опустить:
Требуемые разрешения для учётных данных
Необходимые разрешения для настроенных учётных данных зависят от того, как вы планируете их использовать в Pods/Pipelines. Кроме того, учётные данные должны иметь права на клонирование репозитория, указанного в разделе Authentication Parameters.
Например:
- Если в пайплайнах с использованием этого коннектора требуется выполнять операции клонирования и пуша, учётные данные должны иметь права на клонирование и пуш для целевого репозитория. Иными словами, учётные данные должны позволять как клонировать, так и отправлять изменения в репозиторий.
- Если необходимо только клонировать репозитории в пайплайнах, учётные данные требуют только права на клонирование целевого репозитория.
Для обеспечения безопасности рекомендуется создавать учётные данные с минимально необходимыми правами. При необходимости расширенных привилегий создавайте отдельные Connectors с более привилегированными секретами и используйте изоляцию namespace для контроля доступа пользователей к каждому Connector.
Параметры аутентификации
Для проверки валидности учётных данных необходимо указать путь к Git-репозиторию. Коннектор будет использовать учётные данные для доступа к этому репозиторию во время выполнения, чтобы определить их корректность.
Этот параметр аутентификации задаётся через spec.auth.params.
repository: указывает путь к Git-репозиторию, используемый для проверки аутентификации, напримерorg/repo.git.
Например:
Прокси и конфигурация
Для предоставления клиентам возможности доступа к Git-репозиториям без учётных данных, Git connectorclass предоставляет прокси-сервер, который автоматически внедряет информацию об аутентификации.
Клиенты с доступом к коннектору могут использовать этот прокси-сервер для доступа к Git-репозиториям без необходимости настраивать учётные данные на стороне клиента.
Для упрощения использования Git connectorclass предоставляет конфигурационную информацию, которую можно монтировать в Pods через CSI. В Pod при выполнении Git-операций автоматически используется прокси-сервис для завершения Git-операций.
Адрес прокси
При создании Git-коннектора система автоматически создаёт Service для проксирования доступа к Git-репозиторию.
Система записывает адрес прокси в поле status.proxy.httpAddress.
Например:
Конфигурация
Git-коннектор, созданный на основе Git connectorclass, предоставляет следующую конфигурацию:
gitconfig: информация конфигурации Git.
- Предоставляется конфигурационный файл
.gitconfig, в котором адрес Git-репозитория заменяется на адрес прокси. В сочетании с connector-csi-driver этот конфигурационный файл монтируется в Pod, что позволяет получать доступ к Git-репозиторию через прокси без необходимости настройки учётных данных на стороне клиента.
Пример конфигурационного файла, сгенерированного в Pod:
Больше примеров использования можно найти в разделе Using Git Connector in Clone Job.