Git Connector

Git connector — это платформонезависимый коннектор, который можно использовать для подключения к любому Git-серверу, например GitHub, GitLab, Bitbucket.

Вы можете использовать Git Connector для безопасного клонирования приватных репозиториев в CICD пайплайнах или применять его в контейнеризованных нагрузках для выполнения Git-операций без необходимости указывать учетные данные.

Кроме того, вы можете централизованно управлять конфигурациями доступа к Git в разных пространствах имён, избегая повторной настройки Git-учетных данных в каждом namespace.

В этом документе описано:

  • Требования к Git-серверам
  • Как создать Git-коннектор на основе Git connectorclass
  • Возможности прокси и конфигурации Git-коннектора

Содержание

Требования к Git-серверам

Git-сервер, к которому будет осуществляться доступ, должен соответствовать следующим условиям:

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

Создание Git-коннектора на основе Git connectorclass

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

apiVersion: connectors.alauda.io/v1alpha1
kind: Connector
metadata:
  name: github-demo
spec:
  connectorClassName: git
  address: https://github.com
  auth:
    name: basicAuth
    params:
    - name: repository
      value: "kubernetes/website.git"

spec.connectorClassName

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

Описание

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

  • cpaas.io/description: Описание Git-коннектора.

Например:

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

Адрес

spec.address указывает адрес доступа к Git-серверу, например: https://github.com. Важно отметить, что этот адрес используется для клонирования Git-репозиториев, а не является адресом API Git-сервера.

Аутентификация

Git connectorclass поддерживает следующие типы аутентификации:

  • basicAuth: аутентификация по имени пользователя и паролю (опционально), соответствующий тип учетных данных: kubernetes.io/basic-auth

Например:

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

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

apiVersion: v1
stringData:
  password: your-password
  username: your-username
kind: Secret
metadata:
  name: github-secret
type: kubernetes.io/basic-auth

Если Git-сервер не требует аутентификации, информацию об аутентификации можно опустить.

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

Параметры аутентификации

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

Этот параметр аутентификации задаётся через spec.auth.params.

  • repository: указывает путь к Git-репозиторию, используемому для проверки аутентификации, например org/repo.git.

Например:

apiVersion: connectors.alauda.io/v1alpha1
kind: Connector
metadata:
  name: github-demo
spec:
  connectorClassName: git
  address: https://github.com
  auth:
    name: basicAuth
    params:
    - name: repository
      value: org/repo.git
    secretRef:
      name: github-secret

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

Для предоставления клиентам возможности доступа к Git-репозиториям без указания учетных данных, Git connectorclass предоставляет прокси-сервер, который автоматически внедряет информацию об аутентификации.

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

Для упрощения использования Git connectorclass предоставляет конфигурационные данные, которые можно монтировать в Pod через CSI. В Pod при выполнении Git-операций автоматически используется прокси-сервис для завершения операций Git.

Адрес прокси

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

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

Например:

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

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

Git-коннектор, созданный на основе Git connectorclass, предоставляет следующую конфигурацию:

gitconfig: информация конфигурации Git.

  • Предоставляется конфигурационный файл .gitconfig, в котором адрес Git-репозитория будет заменён на адрес прокси. В сочетании с connector-csi-driver этот конфигурационный файл монтируется в Pod, что позволяет обращаться к Git-репозиторию через прокси без необходимости настраивать учетные данные на стороне клиента.

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

[http]
    extraHeader = Authorization: Basic <base64 encoded token of the service account>
[url "http://c-github-demo.default.svc"]
    insteadOf = https://github.com

Больше примеров использования можно найти в Using Git Connector in Clone Job.

Дополнительно