• Русский
  • Git Connector

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

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

    Кроме того, вы можете централизованно управлять конфигурациями доступа к Git по всем namespace, избегая необходимости повторять настройку 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-коннектор поддерживает следующие типы аутентификации:

    • 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

    Примечание: Поле password не ограничивается реальными паролями пользователя. Вы можете использовать другие типы учётных данных, такие как Personal Access Tokens (PAT) или API-ключи, при условии, что они соответствуют требованиям разрешений, описанным в разделе Secret Permissions Required.

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

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

    Требуемые разрешения для учётных данных

    Необходимые разрешения для настроенных учётных данных зависят от того, как вы планируете их использовать в Pods/Pipelines. Кроме того, учётные данные должны иметь права на клонирование репозитория, указанного в разделе Authentication Parameters.

    Например:

    • Если в пайплайнах с использованием этого коннектора требуется выполнять операции клонирования и пуша, учётные данные должны иметь права на клонирование и пуш для целевого репозитория. Иными словами, учётные данные должны позволять как клонировать, так и отправлять изменения в репозиторий.
    • Если необходимо только клонировать репозитории в пайплайнах, учётные данные требуют только права на клонирование целевого репозитория.

    Для обеспечения безопасности рекомендуется создавать учётные данные с минимально необходимыми правами. При необходимости расширенных привилегий создавайте отдельные Connectors с более привилегированными секретами и используйте изоляцию namespace для контроля доступа пользователей к каждому Connector.

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

    Для проверки валидности учётных данных необходимо указать путь к 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 предоставляет конфигурационную информацию, которую можно монтировать в Pods через 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.

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