Git-коннектор
Git-коннектор — это независимый от платформы коннектор, который можно использовать для подключения к любому Git Server, например GitHub, GitLab или Bitbucket.
Git Connector можно использовать для безопасного клонирования приватных репозиториев в CICD pipelines, а также в контейнеризованных нагрузках для выполнения Git-операций без учетных данных.
Кроме того, вы можете централизованно управлять конфигурациями доступа Git в разных namespaces, избегая необходимости повторять настройку Git-учетных данных в каждом namespace.
В этом документе рассматриваются:
- Требования к Git-серверам
- Как создать Git-коннектор на основе Git connectorclass
- Возможности прокси и конфигурации Git-коннектора
Содержание
Требования к Git-серверамСоздание Git-коннектора на основе Git ConnectorClassБыстрый стартspec.connectorClassNameОписаниеAddressАутентификацияИспользование Basic AuthenticationНеобходимые права учетных данныхПараметры аутентификацииПрокси и конфигурацияАдрес проксиКонфигурацияДополнительноТребования к Git-серверам
Git-сервер, к которому выполняется доступ, должен соответствовать следующим условиям:
- Он должен поддерживать транспортные протоколы HTTP/HTTPS и совместим только с режимом Git "smart HTTP". Этот режим является стандартной реализацией для современных Git-серверов и поддерживает эффективную передачу данных и механизмы аутентификации.
Создание Git-коннектора на основе Git ConnectorClass
Быстрый старт
spec.connectorClassName
Константное значение git.
Описание
Вы можете добавить информацию с описанием Git-коннектора через поле annotations.
cpaas.io/description: Информация с описанием Git-коннектора.
Например:
Address
spec.address задает адрес доступа к Git-серверу, например: https://github.com. Важно отметить, что этот адрес используется для клонирования Git-репозиториев, а не для API-адреса Git-сервера.
Аутентификация
Git-коннектор поддерживает следующие типы аутентификации:
basicAuth: Аутентификация на основе имени пользователя и пароля (необязательно), соответствующий тип Secret:kubernetes.io/basic-auth
Использование Basic Authentication
Например:
Необходимо создать Secret в том же namespace, например:
Примечание: Поле password не ограничивается фактическими паролями пользователей. Вы можете использовать другие типы учетных данных, такие как Personal Access Tokens (PAT) или API keys, если они соответствуют требованиям к правам доступа, описанным в разделе Required Credential Permissions.
Если Git-сервер не требует аутентификации, можно опустить поле secretRef:
Необходимые права учетных данных
Требуемые права для настроенных учетных данных зависят от того, как вы планируете использовать их в Pods/Pipelines. Кроме того, учетные данные должны иметь права на клонирование для аутентифицируемого репозитория, указанного в разделе Authentication Parameters.
Например:
- Если в pipelines с использованием этого коннектора вам нужно выполнять и клонирование, и push-операции, учетные данные должны иметь права как на клонирование, так и на push для целевого репозитория. Иными словами, учетные данные должны позволять как клонировать репозиторий, так и отправлять в него изменения.
- Если в pipelines вам нужно только клонировать репозитории, учетным данным достаточно только прав на клонирование целевого репозитория.
В целях безопасности мы рекомендуем создавать учетные данные с минимально необходимыми правами. Если требуются более широкие привилегии, создавайте отдельные Connectors с более привилегированным Secret и используйте изоляцию namespace, чтобы контролировать, какие пользователи могут получать доступ к каждому Connector.
Параметры аутентификации
Чтобы проверить, являются ли учетные данные действительными, необходимо указать путь к Git-репозиторию. Коннектор будет использовать учетные данные для доступа к этому репозиторию во время выполнения, чтобы определить их корректность.
Этот параметр аутентификации задается через spec.auth.params.
repository: Указывает путь к Git-репозиторию, используемому для проверки аутентификации, напримерorg/repo.git.
Например:
Прокси и конфигурация
Чтобы предоставить клиентам возможность получать доступ к Git-репозиториям без учетных данных, Git connectorclass предоставляет proxy server для автоматической подстановки информации аутентификации.
Клиенты, имеющие доступ к коннектору, могут использовать этот proxy server для доступа к Git-репозиториям без необходимости настраивать учетные данные на стороне клиента.
Для упрощения использования Git connectorclass предоставляет информацию о конфигурации, которую можно монтировать в Pods через CSI. В Pod при выполнении Git-операций proxy service может использоваться автоматически для выполнения 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.