Быстрый старт
Этот документ поможет вам быстро понять, как создать 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 без ошибок аутентификации.
Ожидаемые результаты
После успешного выполнения всех шагов вы увидите:
-
Git коннектор в статусе "Ready":
NAME CLASS ADDRESS READY AGE
git-connector git https://github.com True 5m
-
Успешную операцию клонирования 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 работает следующим образом:
- Заменяет оригинальный URL Git репозитория на URL прокси-сервиса
- Внедряет информацию об аутентификации в запросы к прокси-сервису
- Прокси-сервис добавляет необходимые учетные данные при пересылке запросов на 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
Устранение неполадок
Если операция клонирования не удалась, проверьте следующее:
-
Статус коннектора: убедитесь, что коннектор в состоянии "Ready":
kubectl describe connector git-connector -n git-connector-demo
-
Разрешения RBAC: проверьте правильность настройки RoleBinding.
-
Конфигурация job:
- Убедитесь, что путь монтирования тома правильный (/root/)
- Проверьте, что URL репозитория совпадает с тем, что настроен в коннекторе
Следующие шаги
После успешного клонирования первого репозитория с помощью Git Connector вы можете:
- Интегрировать этот подход в ваши CI/CD пайплайны
- Использовать коннектор для других Git операций, таких как push, pull и fetch
- Создавать коннекторы для разных Git сервисов