• Русский
  • Быстрый старт

    Этот документ поможет вам быстро понять, как создать Git Connector и использовать его для безопасного клонирования репозиториев без прямой работы с учетными данными.

    Введение

    Применимые сценарии

    Git Connector позволяет безопасно выполнять операции клонирования кода за счет:

    • Централизованного управления учетными данными вместо их жесткого кодирования в рабочих нагрузках
    • Автоматической подстановки аутентификации во время процесса клонирования
    • Обеспечения контролируемого доступа к приватным репозиториям в командах

    Этот подход особенно полезен для:

    • CI/CD конвейеров, требующих безопасного доступа к приватным репозиториям
    • Команд, которые делятся доступом к репозиториям без передачи учетных данных
    • Сред, требующих централизованного управления Git учетными данными

    Оценочное время чтения

    15 минут

    Примечания

    • Git Connector использует интеграцию с CSI драйвером для безопасной подстановки Git учетных данных.
    • Конфигурации, сгенерированные коннектором, истекают через 30 минут.

    Предварительные требования

    • Kubernetes кластер с установленной системой Connectors (Operator, Core и Git компоненты). Подробности об установке компонентов смотрите в Installation Guide.
    • kubectl, настроенный для работы с вашим кластером
    • Git репозиторий с действительными учетными данными (имя пользователя/пароль или токен)
    • Базовые знания ресурсов Kubernetes

    Обзор процесса

    Шаг операцииОписание
    1Создать NamespaceСоздать выделенный namespace для демонстрации
    2Создать Git Credentials и ConnectorНастроить учетные данные и коннектор для доступа к Git
    3Настроить RBAC разрешенияПредоставить необходимые разрешения для использования коннектора
    4Создать Clone JobЗапустить job, использующий коннектор для клонирования репозитория
    5Проверить выполнениеУбедиться, что репозиторий успешно клонирован

    Шаги для выполнения

    Шаг 1: Создать Namespace

    Создайте выделенный namespace для этой демонстрации:

    kubectl create ns git-connector-demo

    Шаг 2: Создать Git Credentials и Connector

    Создайте Secret с учетными данными Git и ресурс Git Connector. Более подробную информацию о создании и настройке коннекторов смотрите в Connectors Quick Start Guide.

    cat <<EOF | kubectl apply -f -
    kind: Secret
    apiVersion: v1
    metadata:
      name: git-auth
      namespace: git-connector-demo
    type: kubernetes.io/basic-auth
    stringData:
      username: your-username # Замените на ваше имя пользователя Git
      password: your-token    # Замените на ваш пароль или токен Git
    ---
    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: git-connector
      namespace: git-connector-demo
    spec:
      connectorClassName: git
      address: https://github.com  # Замените на адрес вашего Git сервера
      auth:
        name: basicAuth
        secretRef:
          name: git-auth
        params:
        - name: repository
          value: your-org/your-repo.git  # Замените на путь к вашему репозиторию
    EOF

    Проверьте, что коннектор находится в статусе "Ready":

    kubectl get connector git-connector -n git-connector-demo

    Вывод должен быть следующим:

    NAME           CLASS   ADDRESS            READY   AGE
    git-connector  git     https://github.com True    1m

    Шаг 3: Создать Clone Job

    Создайте job, который использует коннектор для клонирования репозитория:

    cat <<EOF | kubectl apply -f -
    apiVersion: batch/v1
    kind: Job
    metadata:
      name: git-clone
      namespace: git-connector-demo
    spec:
      template:
        spec:
          restartPolicy: Never
          containers:
          - name: git
            image: bitnami/git:2.47.1
            imagePullPolicy: IfNotPresent
            command:
            - "git"
            args: [ "clone", "--progress", "https://github.com/your-org/your-repo.git", "/tmp/repo" ]  # Замените на ваш репозиторий
            volumeMounts:
            - name: gitconfig
              mountPath: /root/
          volumes:
          - name: gitconfig
            csi:
              readOnly: true
              driver: connectors-csi
              volumeAttributes:
                connector.name: "git-connector"
                configuration.names: "gitconfig"
    EOF

    Ключевые параметры:

    • connector.name: имя вашего Git коннектора
    • configuration.names: установлено в "gitconfig", что ссылается на конкретный шаблон конфигурации, определенный в Git ConnectorClass. Этот шаблон используется для генерации файла ".gitconfig" с необходимыми настройками для аутентификации и переписывания URL.
    • mountPath: должен быть установлен в "/root/", так как контейнер работает от имени root, и Git ищет конфигурацию по пути "/root/.gitconfig"

    Шаг 4: Проверить выполнение

    Проверьте логи job, чтобы убедиться, что репозиторий успешно клонирован:

    kubectl logs -f job/git-clone -n git-connector-demo

    Вы должны увидеть успешное завершение операции клонирования Git без ошибок аутентификации.

    Ожидаемые результаты

    После успешного выполнения всех шагов вы увидите:

    1. Git коннектор в статусе "Ready":

      NAME           CLASS   ADDRESS            READY   AGE
      git-connector  git     https://github.com True    5m
    2. Успешную операцию клонирования Git в логах job:

      Cloning into '/tmp/repo'...
      remote: Enumerating objects: 1324, done.
      remote: Counting objects: 100% (1324/1324), done.
      remote: Compressing objects: 100% (712/712), done.
      remote: Total 1324 (delta 612), reused 1324 (delta 612), pack-reused 0
      Receiving objects: 100% (1324/1324), 2.56 MiB | 4.25 MiB/s, done.
      Resolving deltas: 100% (612/612), done.

    Как это работает

    Git Connector работает следующим образом:

    1. Заменяет исходный URL Git репозитория на URL прокси-сервиса
    2. Внедряет информацию об аутентификации в запросы к прокси-сервису
    3. Прокси-сервис добавляет необходимые учетные данные при пересылке запросов на Git сервер

    Чтобы просмотреть сгенерированную конфигурацию:

    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: inspect-git-config
      namespace: git-connector-demo
    spec:
      restartPolicy: Never
      containers:
      - name: git
        image: bitnami/git:2.47.1
        command: ["sleep", "3600"]
        volumeMounts:
        - name: gitconfig
          mountPath: /root/
      volumes:
      - name: gitconfig
        csi:
          readOnly: true
          driver: connectors-csi
          volumeAttributes:
            connector.name: "git-connector"
            configuration.names: "gitconfig"
    EOF

    Просмотрите сгенерированную конфигурацию:

    kubectl exec -it inspect-git-config -n git-connector-demo -- cat /root/.gitconfig

    Пример вывода:

    [http]
        extraHeader = Authorization: Basic OmV5Smhixxxxxxxxx==
    [url "http://c-git-connector.git-connector-demo.svc]
        insteadOf = https://github.com

    Устранение неполадок

    Если операция клонирования не удалась, проверьте следующее:

    1. Статус коннектора: Убедитесь, что коннектор в состоянии "Ready":

      kubectl describe connector git-connector -n git-connector-demo
    2. Разрешения RBAC: Проверьте правильность настройки RoleBinding.

    3. Конфигурация job:

      • Убедитесь, что путь монтирования тома правильный (/root/)
      • Проверьте, что URL репозитория совпадает с тем, что настроен в коннекторе

    Следующие шаги

    После успешного клонирования первого репозитория с помощью Git Connector вы можете:

    • Интегрировать этот подход в ваши CI/CD конвейеры
    • Использовать коннектор для других операций с Git, таких как push, pull и fetch
    • Создавать коннекторы для разных Git сервисов