Использование Git Connector в задачах клонирования

Содержание

Обзор функции

Git Connector позволяет обычным пользователям выполнять операции клонирования кода без прямого обращения с учетными данными. С помощью коннектора информация об учетных данных централизованно управляется администратором и автоматически внедряется в процесс клонирования по мере необходимости, что повышает безопасность и удобство.

Сценарии использования

  • Несколько команд совместно используют права доступа к репозиториям кода без обмена учетными данными.
  • Требуется безопасный доступ к приватным репозиториям кода в DevOps пайплайнах.
  • В средах необходима централизованная система управления правами доступа к репозиториям кода.
  • Избежать жесткого кодирования или встраивания Git учетных данных непосредственно в Kubernetes workloads.

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

Перед использованием функции убедитесь, что:

  • Компонент Connectors Core развернут в среде.
  • Компонент Connectors Git развернут в среде.
  • У вас есть права на создание ресурсов Kubernetes (Namespace, Secret, Connector и т.д.).

Шаги

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

  1. Создайте Namespace

    kubectl create ns connectors-git-demo
  2. Создайте 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
  3. Создайте задачу клонирования с использованием коннектора

    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
  4. Просмотрите результат выполнения задачи клонирования

    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:

  1. Исходный адрес репозитория Git автоматически заменяется адресом сервиса connectors-proxy.
  2. Система автоматически внедряет информацию об аутентификации для прокси-запроса (эта информация истекает через 30 минут).
  3. connectors-proxy автоматически завершает внедрение учетных данных на стороне сервера для выполнения операции клонирования.