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

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

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

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

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

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

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

    • Компонент 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 автоматически завершает внедрение учетных данных на стороне сервера для выполнения операции клонирования.