• Русский
  • 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 server, к которому выполняется доступ, должен соответствовать следующим условиям:

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

    Создание 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: "Connect to GitHub for accessing team public repositories"

    Адрес

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

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

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

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

    Использование Basic Authentication

    Например:

    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 keys, если они соответствуют требованиям к разрешениям, описанным в разделе Credential Permissions Required.

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

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

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

    Требуемые разрешения для настроенных учетных данных зависят от того, как вы собираетесь использовать их в ваших 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.

    Например:

    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 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.

    Например:

    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 repository будет заменен на адрес прокси. В сочетании с connector-csi-driver этот файл конфигурации будет смонтирован в Pod, что позволит получать доступ к Git repository через прокси без необходимости настраивать учетные данные на стороне клиента.

    Пример файла конфигурации, сгенерированного в 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.

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