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