Настройка репозитория GitLab
Это руководство предназначено для обычных пользователей для настройки их репозиториев GitLab для интеграции с PAC. Если вам нужна информация о URL контроллера PAC или настройке webhook, смотрите инструкции по запросу ниже.
Важно: В этом документе используются два разных пространства имён:
<pac-namespace>: пространство имён, в котором развернуты компоненты PAC (controller, watcher, webhook). По умолчанию —tekton-pipelines, но может быть настроено черезtargetNamespaceв CROpenShiftPipelinesAsCode.<your-namespace>или пространство имён Pipeline: пространство имён, в котором создаются PipelineRuns. Указывается при создании CR Repository и может быть любым пространством имён в вашем кластере.
Замените эти заполнители на реальные имена ваших пространств имён.
В этом руководстве объясняется, как настроить репозиторий GitLab для работы с PAC, чтобы запускать пайплайны по событиям из GitLab.
Содержание
Предварительные требованияОбзорШаг 1: Установка плагина tkn pacШаг 2: Подготовка токена доступа GitLabСоздание Личного токена доступаБезопасное хранение токенаШаг 3: Получение URL контроллера PACМетод 1: Запрос через Ingress (если настроен)Метод 2: Запрос через NodePort Service (если настроен)Метод 3: Запрос через LoadBalancer Service (если настроен)Автоматическое определение tkn pacЕсли не удаётся найти URLШаг 4: Настройка репозитория с помощью tkn pacПерейдите в ваш репозиторийЗапустите tkn pac create repoИнтерактивная настройка1. URL Git репозитория2. Пространство имён для пайплайнов3. ID проекта GitLab4. URL контроллера PAC5. Секрет webhook6. Токен доступа GitLab7. URL API GitLabПример интерактивной сессииШаг 5: Проверка настройкиПроверка CR RepositoryПроверка webhook GitLabПроверка Kubernetes SecretПроверка сгенерированного шаблонаШаг 6: Тестирование настройкиТест подключения webhookЗапуск тестового пайплайнаРучная настройка (альтернатива)Ручное создание CR RepositoryСоздание секрета GitLabСоздание секрета webhookРучная настройка webhook GitLabИспользование приватных репозиториевРабота с пользовательскими сертификатамиУстранение неполадокПроверка, что CR Repository не созданПроверка, что webhook не настроенПроверка, что события webhook не принимаютсяПроверка, что PipelineRuns не создаютсяПроверка проблем с доступом к приватным репозиториямПроверка проблем с сертификатамиСледующие шагиПредварительные требования
Перед настройкой репозитория GitLab убедитесь, что у вас есть:
- Развернутый и работающий компонент PAC (см. Управление компонентом PAC)
- Доступный и открытый контроллер PAC (через Ingress или NodePort)
- Установленный CLI
tknс плагиномpac - Репозиторий GitLab с правами администратора на уровне репозитория
- Личный токен доступа GitLab с необходимыми правами
Обзор
Команда tkn pac create repo — рекомендуемый способ настройки репозитория GitLab для PAC. Она автоматизирует весь процесс:
- Создаёт CR Repository в вашем Kubernetes кластере
- Автоматически настраивает webhook в GitLab
- Создаёт Kubernetes Secret с учётными данными GitLab
- Генерирует базовый шаблон
.tekton/pipelinerun.yamlв вашем репозитории
Шаг 1: Установка плагина tkn pac
Убедитесь, что у вас установлен плагин tkn pac:
Если плагин не установлен, следуйте инструкции по установке в Справочнике команд tkn pac.
Шаг 2: Подготовка токена доступа GitLab
Вам нужен Личный токен доступа GitLab с следующими правами:
api: полный доступ к API
Создание Личного токена доступа
- Перейдите в GitLab → User Settings → Access Tokens (или Project Settings → Access Tokens для токенов проекта)
- Создайте новый токен с параметрами:
- Name:
PAC Integration(или любое описательное имя) - Scopes: выберите
api - Expiration date: установите при необходимости (опционально)
- Name:
- Нажмите Create personal access token
- Скопируйте токен сразу — он больше не будет показан
Безопасное хранение токена
Сохраните токен в безопасном месте. Он понадобится при запуске tkn pac create repo.
Рекомендация по безопасности: рассмотрите возможность использования токена проекта вместо личного токена для лучшего контроля доступа.
Шаг 3: Получение URL контроллера PAC
Перед настройкой репозитория вам нужен URL контроллера PAC. Этот URL используется GitLab для отправки событий webhook в PAC.
Если вы не знаете URL контроллера PAC, попробуйте выполнить следующие команды для его получения. Если команды не возвращают результат, обратитесь к администратору PAC.
Метод 1: Запрос через Ingress (если настроен)
Проверьте, открыт ли контроллер PAC через Ingress (замените <pac-namespace> на ваше пространство имён PAC, по умолчанию tekton-pipelines):
Пример вывода (если Ingress настроен):
Если найден, получите хост Ingress:
Пример вывода:
URL контроллера будет:
- HTTP:
http://<ingress-host> - HTTPS:
https://<ingress-host>
Метод 2: Запрос через NodePort Service (если настроен)
Проверьте, открыт ли контроллер PAC через NodePort (замените <pac-namespace> на ваше пространство имён PAC, по умолчанию tekton-pipelines):
Пример вывода (если NodePort настроен):
Если найден, получите NodePort и IP узла:
Пример вывода:
Метод 3: Запрос через LoadBalancer Service (если настроен)
Проверьте, открыт ли контроллер PAC через LoadBalancer (замените <pac-namespace> на ваше пространство имён PAC, по умолчанию tekton-pipelines):
Пример вывода (если LoadBalancer настроен):
Если найден, получите имя сервиса и внешний IP:
Пример вывода:
Автоматическое определение tkn pac
Команда tkn pac create repo может автоматически определить URL контроллера, проверяя:
- Ресурсы Ingress
- Сервисы LoadBalancer
- Сервисы NodePort
Если автоматическое определение не сработает, вы сможете ввести URL вручную при запросе.
Если не удаётся найти URL
Если ни один из методов не сработал или у вас нет прав на запрос ресурсов кластера:
- Обратитесь к администратору PAC для получения URL контроллера PAC
- Администратор может найти его, используя методы из Управление компонентом PAC
- Формат URL обычно:
http://<host-or-ip>:<port>илиhttps://<host-or-ip>
Шаг 4: Настройка репозитория с помощью tkn pac
Перейдите в ваш репозиторий
Клонируйте или перейдите в каталог вашего репозитория GitLab:
Запустите tkn pac create repo
Важно: Перед запуском команды перейдите в каталог вашего репозитория GitLab. Каталог .tekton будет создан в текущей рабочей директории.
Примечание: Если PAC установлен в другом пространстве имён, измените параметр --pac-namespace соответственно. Замените tekton-pipelines на ваше пространство имён PAC, если вы развернули PAC в другом пространстве. Параметр --pac-namespace указывает, где развернут контроллер PAC (по умолчанию: tekton-pipelines).
Интерактивная настройка
Команда запросит у вас следующую информацию:
1. URL Git репозитория
- По умолчанию: Автоматически определяется из git remote текущей директории
- Формат:
https://gitlab.com/username/repoилиgit@gitlab.com:username/repo - Действие: Нажмите Enter для использования значения по умолчанию или введите другой URL
2. Пространство имён для пайплайнов
- По умолчанию:
default - Описание: Kubernetes пространство имён, в котором будут создаваться PipelineRuns
- Действие: Введите предпочитаемое пространство имён (например,
project-pipelines) или нажмите Enter для использованияdefault
Важно:
-
Пространство имён должно существовать до того, как PAC сможет создавать PipelineRuns в нём
-
Если пространства имён нет, создайте его:
Пример:
-
Рекомендуется использовать отдельное пространство имён, например
project-pipelines, вместоdefault -
В пространстве имён должны быть настроены RBAC права для PAC на создание ресурсов
3. ID проекта GitLab
- Как найти:
- Перейдите в ваш проект GitLab → Settings → General
- Найдите "Project ID" в разделе "Project information"
- Или используйте API:
curl --header "PRIVATE-TOKEN: <token>" "https://gitlab.com/api/v4/projects?search=<repo-name>"
4. URL контроллера PAC
- По умолчанию: Автоматически определяется из ресурсов кластера
- Действие:
- Если URL определён автоматически, нажмите Enter
- Если нет, введите URL вручную
- Если вы не знаете URL: смотрите Шаг 3: Получение URL контроллера PAC выше или обратитесь к администратору PAC
5. Секрет webhook
- По умолчанию: Автоматически сгенерированная случайная строка
- Описание: Секрет для проверки запросов webhook от GitLab
- Действие: Нажмите Enter для использования значения по умолчанию или введите свой секрет
Безопасность: Храните этот секрет в безопасности. Он сохраняется в Kubernetes Secret.
6. Токен доступа GitLab
- Описание: Личный токен доступа, созданный на Шаге 2
- Действие: Вставьте ваш токен
7. URL API GitLab
- По умолчанию:
https://gitlab.com(для GitLab.com) - Для self-hosted GitLab: введите URL вашего экземпляра GitLab, например
https://gitlab.example.com - Действие: Нажмите Enter для GitLab.com или введите URL вашего экземпляра
Пример интерактивной сессии
Шаг 5: Проверка настройки
Проверка CR Repository
Сначала определите ваше пространство имён (то, которое вы указали при создании CR Repository). Если не помните, выведите список всех CR Repository:
Пример вывода:
Затем проверьте, что CR Repository создан в вашем пространстве имён:
Пример вывода:
Просмотр деталей CR Repository:
Сначала получите имя репозитория из списка выше, затем просмотрите детали:
Замените <repo-name> на фактическое имя репозитория из списка (например, my-repo).
Пример вывода (сокращённый):
Проверка webhook GitLab
- Перейдите в ваш проект GitLab → Settings → Webhooks
- Убедитесь, что webhook создан с:
- URL: URL вашего контроллера PAC
- Триггеры: Push events, Merge request events, Comments
- Секретный токен: секрет webhook, который вы настроили
Проверка Kubernetes Secret
При использовании tkn pac create repo секрет с учётными данными GitLab создаётся автоматически. Проверьте секрет:
Пример вывода:
Просмотр деталей секрета:
Замените <secret-name> на фактическое имя секрета (обычно совпадает с именем репозитория).
Пример вывода (значения закодированы в base64):
Секрет содержит:
provider.token: ваш личный токен доступа GitLabwebhook.secret: секрет для проверки webhook
Проверка сгенерированного шаблона
Убедитесь, что в вашем репозитории создан шаблон .tekton/pipelinerun.yaml:
Пример вывода:
Шаг 6: Тестирование настройки
Тест подключения webhook
Вы можете протестировать webhook из GitLab:
- Перейдите в проект GitLab → Settings → Webhooks
- Найдите ваш webhook PAC
- Нажмите Test → Push events
- Проверьте ответ webhook
Запуск тестового пайплайна
Создайте простой коммит для запуска пайплайна:
Проверьте, создан ли PipelineRun:
Пример вывода:
Ручная настройка (альтернатива)
Если вы предпочитаете настраивать вручную или хотите больше контроля, можно создать CR Repository и настроить webhook отдельно.
Ручное создание CR Repository
Создайте файл repository.yaml:
Примените CR:
Пример вывода:
Создание секрета GitLab
Создайте секрет с вашим токеном GitLab:
Пример вывода:
Создание секрета webhook
Пример вывода:
Ручная настройка webhook GitLab
- Перейдите в проект GitLab → Settings → Webhooks
- Добавьте новый webhook:
- URL:
http://pac.example.com - Secret token: секрет webhook из вышеуказанного шага
- Триггеры: выберите "Push events" и "Merge request events"
- URL:
- Нажмите Add webhook
Использование приватных репозиториев
PAC поддерживает приватные репозитории GitLab. Для настройки аутентификации приватных репозиториев смотрите руководство Настройка аутентификации для приватных репозиториев.
В этом руководстве описаны методы аутентификации, работающие со всеми провайдерами Git, включая:
- Аутентификацию с помощью Личного токена доступа (PAT)
- Аутентификацию по SSH-ключам
- Шаги проверки и устранения неполадок
Работа с пользовательскими сертификатами
Если ваш экземпляр GitLab использует самоподписанные сертификаты или пользовательские CA-сертификаты, необходимо настроить PAC для доверия этим сертификатам. Смотрите руководство Настройка пользовательских сертификатов для подробных инструкций.
В этом руководстве рассматриваются:
- Создание ConfigMap с CA-сертификатами
- Монтирование сертификатов в поды контроллера PAC
- Настройка Git для использования пользовательских сертификатов
- Шаги проверки и устранения неполадок
Устранение неполадок
Проверка, что CR Repository не создан
Проверьте наличие ошибок:
Пример вывода (сокращённый):
Проверка, что webhook не настроен
Если webhook не был создан автоматически:
- Проверьте, что токен GitLab имеет scope
api - Проверьте валидность токена:
curl --header "PRIVATE-TOKEN: <token>" "https://gitlab.com/api/v4/user" - Создайте webhook вручную (см. раздел Ручная настройка выше)
Проверка, что события webhook не принимаются
-
Проверьте логи контроллера PAC:
Пример вывода:
- Убедитесь, что URL webhook доступен из GitLab
- Проверьте, что секрет webhook совпадает в GitLab и CR Repository
Проверка, что PipelineRuns не создаются
-
Проверьте CR Repository:
Пример вывода (сокращённый):
- Проверьте логи контроллера PAC на наличие ошибок
- Убедитесь, что
.tekton/pipelinerun.yamlсуществует в вашем репозитории - Проверьте права в пространстве имён
Проверка проблем с доступом к приватным репозиториям
- Проверьте права токена: убедитесь, что токен имеет scope
api - Проверьте наличие секрета: убедитесь, что секрет аутентификации существует в пространстве имён
- Проверьте CR Repository: убедитесь, что секрет корректно указан
- Проверьте логи PAC: ищите ошибки аутентификации в логах контроллера
Для подробностей смотрите Настройка аутентификации для приватных репозиториев.
Проверка проблем с сертификатами
- Проверьте монтирование сертификата: убедитесь, что сертификат смонтирован в поде
- Проверьте срок действия сертификата: убедитесь, что сертификат не просрочен
- Проверьте конфигурацию Git: убедитесь, что Git настроен на использование сертификата
- Проверьте логи: ищите ошибки SSL/сертификатов в логах контроллера PAC
Для подробностей смотрите Настройка пользовательских сертификатов.
Следующие шаги
- Настройка аутентификации для приватных репозиториев — настройка аутентификации для приватных репозиториев
- Настройка пользовательских сертификатов — настройка пользовательских CA-сертификатов
- Поддержка кода пайплайна — как определять пайплайны в вашем репозитории
- Запуск пайплайнов — различные методы запуска пайплайнов
- Распространённые проблемы — руководство по устранению неполадок