Настройка репозитория GitLab
Это руководство предназначено для обычных пользователей для настройки их репозиториев GitLab для интеграции с PAC. Если вам нужна информация о URL контроллера PAC или настройке webhook, смотрите инструкции по запросу ниже.
Важно: В этом документе используются два разных пространства имён:
<pac-namespace>: пространство имён, в котором развернуты компоненты PAC (контроллер, 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 → Настройки пользователя → Access Tokens (или Настройки проекта → Access Tokens для токенов проекта)
- Создайте новый токен с:
- Имя:
PAC Integration(или любое описательное имя) - Права: выберите
api - Дата истечения: по необходимости (опционально)
- Имя:
- Нажмите 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 репозитория
- По умолчанию: определяется автоматически из удалённого репозитория текущей директории
- Формат:
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 → Настройки → Общие
- Найдите "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) - Для самохостинга 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 → Настройки → 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 → Настройки → Webhooks
- Найдите ваш webhook PAC
- Нажмите Test → Push events
- Проверьте ответ webhook
Запустите тестовый пайплайн
Создайте простой коммит для запуска пайплайна:
Проверьте, создан ли PipelineRun:
Пример вывода:
Ручная настройка (альтернатива)
Если вы предпочитаете настраивать вручную или хотите больше контроля, можно создать CR Repository и настроить webhook отдельно.
Создайте CR Repository вручную
Создайте файл repository.yaml:
Примените CR:
Пример вывода:
Создайте секрет GitLab
Создайте секрет с вашим токеном GitLab:
Пример вывода:
Создайте секрет webhook
Пример вывода:
Настройте webhook GitLab вручную
- Перейдите в проект GitLab → Настройки → Webhooks
- Добавьте новый webhook:
- URL:
http://pac.example.com - Секретный токен: секрет 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 имеет права
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существует в вашем репозитории - Проверьте права в пространстве имён
Проверьте проблемы с доступом к приватному репозиторию
- Проверьте права токена: убедитесь, что токен имеет права
api - Проверьте наличие секрета: убедитесь, что секрет аутентификации существует в пространстве имён
- Проверьте CR Repository: убедитесь, что секрет корректно указан
- Проверьте логи PAC: ищите ошибки аутентификации в логах контроллера
Подробности смотрите в Настройка аутентификации для приватных репозиториев.
Проверьте проблемы с сертификатами
- Проверьте монтирование сертификата: убедитесь, что сертификат смонтирован в поде
- Проверьте срок действия сертификата: убедитесь, что сертификат не просрочен
- Проверьте конфигурацию Git: убедитесь, что Git настроен на использование сертификата
- Проверьте логи: ищите ошибки SSL/сертификатов в логах контроллера PAC
Подробности смотрите в Настройка кастомных сертификатов.
Следующие шаги
- Настройка аутентификации для приватных репозиториев — настройка аутентификации для приватных репозиториев
- Настройка кастомных сертификатов — настройка кастомных CA-сертификатов
- Поддержка кода пайплайна — как определять пайплайны в вашем репозитории
- Запуск пайплайнов — различные методы запуска
- Распространённые проблемы — руководство по устранению неполадок