Использование Git Connector в задачах клонирования
Содержание
Обзор функции
Git Connector позволяет обычным пользователям выполнять операции клонирования кода без прямого обращения с учетными данными. С помощью коннектора информация об учетных данных централизованно управляется администратором и автоматически внедряется в процесс клонирования по мере необходимости, что повышает безопасность и удобство.
Сценарии использования
- Несколько команд совместно используют права доступа к репозиториям кода без обмена учетными данными.
- Требуется безопасный доступ к приватным репозиториям кода в DevOps пайплайнах.
- В средах необходима централизованная система управления правами доступа к репозиториям кода.
- Избежать жесткого кодирования или встраивания Git учетных данных непосредственно в Kubernetes workloads.
Предварительные требования
Перед использованием функции убедитесь, что:
- Компонент Connectors Core развернут в среде.
- Компонент Connectors Git развернут в среде.
- У вас есть права на создание ресурсов Kubernetes (Namespace, Secret, Connector и т.д.).
Шаги
Выполните следующие шаги для использования Git Connector для выполнения клонирования кода:
-
Создайте Namespace
kubectl create ns connectors-git-demo
-
Создайте Git Connector и его учетные данные
cat <<EOF | kubectl apply -f -
kind: Secret
apiVersion: v1
metadata:
name: test-secret
namespace: connectors-git-demo
type: kubernetes.io/basic-auth
stringData:
username: username # Замените на имя пользователя вашего Git сервера
password: password # Замените на пароль вашего Git сервера
---
apiVersion: connectors.alauda.io/v1alpha1
kind: Connector
metadata:
name: test-connector
namespace: connectors-git-demo
spec:
connectorClassName: git
address: https://github.com # Замените на адрес вашего Git сервера
auth:
name: basicAuth
secretRef:
name: test-secret
params:
- name: repository
value: AlaudaDevops/connectors-git.git # Замените на путь к репозиторию, доступному с текущими учетными данными
EOF
-
Создайте задачу клонирования с использованием коннектора
cat <<EOF | kubectl apply -f -
apiVersion: batch/v1
kind: Job
metadata:
name: git-clone
namespace: connectors-git-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/AlaudaDevops/connectors-git.git", "/tmp/demo" ] # Измените на адрес вашего репозитория
volumeMounts:
- name: gitconfig
mountPath: /root/
volumes:
- name: gitconfig
csi:
readOnly: true
driver: connectors-csi
volumeAttributes:
connector.name: "test-connector"
configuration.names: "gitconfig"
EOF
-
Просмотрите результат выполнения задачи клонирования
kubectl logs -f job/git-clone -n connectors-git-demo
Описание параметров:
Параметр | Описание |
---|
connector.name | Указывает имя коннектора для использования |
configuration.names | Указывает тип генерируемого конфигурационного файла; gitconfig означает генерацию конфигурационного файла Git |
mountPath | Указывает путь монтирования конфигурационного файла; для операций Git должен быть смонтирован в директорию /root/ |
Результат работы
После успешной настройки задача клонирования сможет выполнить клонирование репозитория кода без прямого использования учетных данных. Вы можете проверить успешность операции клонирования, просмотрев логи.
Принцип работы
Для лучшего понимания принципа работы Git Connector можно создать долго работающий Pod для проверки сгенерированной конфигурации:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: pod-git-clone
namespace: connectors-git-demo
spec:
restartPolicy: Never
containers:
- name: git
image: bitnami/git:2.47.1
imagePullPolicy: IfNotPresent
command:
- "sleep"
args: [ "3600" ]
volumeMounts:
- name: gitconfig
mountPath: /root/
volumes:
- name: gitconfig
csi:
readOnly: true
driver: connectors-csi
volumeAttributes:
connector.name: "test-connector"
configuration.names: "gitconfig"
EOF
Используйте следующую команду для просмотра содержимого сгенерированного конфигурационного файла:
kubectl exec -it pod-git-clone -n connectors-git-demo -- cat /root/.gitconfig
Пример сгенерированного конфигурационного файла:
[http]
extraHeader = Authorization: Basic OmV5Smhixxxxxxxxx==
[url "http://connectors-proxy-service.connectors-system.svc/namespaces/default/connectors/test-connector"]
insteadOf = https://github.com
Во время процесса клонирования Git:
- Исходный адрес репозитория Git автоматически заменяется адресом сервиса
connectors-proxy
.
- Система автоматически внедряет информацию об аутентификации для прокси-запроса (эта информация истекает через 30 минут).
connectors-proxy
автоматически завершает внедрение учетных данных на стороне сервера для выполнения операции клонирования.