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

Этот документ поможет вам быстро понять, как создать 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 сервисов