Настройка репозитория GitLab
Это руководство предназначено для обычных пользователей, которые настраивают свои репозитории GitLab для интеграции с PAC. Если вам нужна информация об URL контроллера PAC или о настройке webhook, см. инструкции по запросу ниже.
Важно: В этом документе мы используем два разных namespace:
<pac-namespace>: namespace, в котором развернуты компоненты PAC (controller, watcher, webhook). По умолчанию этоtekton-pipelines, но его можно изменить черезtargetNamespaceв CROpenShiftPipelinesAsCode.<your-namespace>или Pipeline namespace: namespace, в котором создаются PipelineRun. Он задается при создании Repository CR и может быть любым namespace в вашем cluster.
Замените эти заполнители на фактические имена ваших namespace.
В этом руководстве описано, как настроить репозиторий GitLab для работы с PAC, чтобы pipeline можно было запускать по событиям GitLab.
Содержание
Предварительные требованияОбзорШаг 1: Установите плагин tkn pacШаг 2: Подготовьте GitLab Access TokenСоздание Personal Access TokenБезопасное хранение tokenШаг 3: Получите URL контроллера PACСпособ 1: Запрос через Ingress (если настроен)Способ 2: Запрос через NodePort Service (если настроен)Способ 3: Запрос через LoadBalancer Service (если настроен)Автоматическое определение в tkn pacЕсли не удается найти URLШаг 4: Настройте repository с помощью tkn pacПерейдите в ваш repositoryЗапустите tkn pac create repoИнтерактивная настройка1. URL Git repository2. Namespace для Pipeline3. GitLab Project ID4. URL контроллера PAC5. Webhook Secret6. GitLab Access Token7. GitLab API URLПример интерактивной сессииШаг 5: Проверьте настройкуПроверьте Repository CRПроверьте GitLab WebhookПроверьте Kubernetes SecretПроверьте сгенерированный шаблонШаг 6: Проверьте настройкуПроверьте подключение webhookЗапустите тестовый pipelineРучная настройка (альтернатива)Создайте Repository CR вручнуюСоздайте Secret GitLabСоздайте Webhook SecretНастройте GitLab Webhook вручнуюИспользование private repositoriesРабота с custom certificatesУстранение неполадокПроверка, если Repository CR не созданПроверка, если webhook не настроенПроверка, если webhook-события не получаютсяПроверка, если PipelineRun не создаютсяПроверка, если есть проблемы с доступом к private repositoryПроверка, если есть проблемы с сертификатамиСледующие шагиПредварительные требования
Перед настройкой репозитория GitLab убедитесь, что у вас есть:
- Развернутый и запущенный компонент PAC (см. Manage PAC Component)
- Контроллер PAC, доступный извне и reachable (через Ingress или NodePort)
- Установленный CLI
tknс плагиномpac - Репозиторий GitLab с доступом администратора в рамках repo-scope
- GitLab Personal Access Token с подходящими scopes
Обзор
Команда tkn pac create repo — рекомендуемый способ настройки репозитория GitLab для PAC. Она автоматизирует весь процесс настройки:
- Создает Repository CR в вашем cluster Kubernetes
- Автоматически настраивает GitLab webhook
- Создает Kubernetes Secret с учетными данными GitLab
- Генерирует базовый шаблон
.tekton/pipelinerun.yamlв вашем репозитории
Шаг 1: Установите плагин tkn pac
Убедитесь, что плагин tkn pac установлен:
Если он не установлен, следуйте инструкции по установке в tkn pac Command Reference.
Шаг 2: Подготовьте GitLab Access Token
Вам нужен GitLab Personal Access Token со следующими scopes:
api: Полный доступ к API
Создание Personal Access Token
- Перейдите в GitLab → User Settings → Access Tokens (или в Project Settings → Access Tokens для project tokens)
- Создайте новый token со следующими параметрами:
- Name:
PAC Integration(или любое описательное имя) - Scopes: выберите
api - Expiration date: задайте при необходимости (необязательно)
- Name:
- Нажмите Create personal access token
- Сразу скопируйте token — он больше не будет показан
Безопасное хранение token
Сохраните token в безопасном месте. Он понадобится вам при запуске tkn pac create repo.
Рекомендация по безопасности: Для лучшего контроля доступа рассмотрите использование project token вместо personal token.
Шаг 3: Получите URL контроллера PAC
Перед настройкой repository вам нужен URL контроллера PAC. Этот URL используется GitLab для отправки webhook-событий в PAC.
Если вы не знаете URL контроллера PAC, попробуйте выполнить следующие команды, чтобы получить его. Если эти команды не возвращают результат, обратитесь к администратору PAC.
Способ 1: Запрос через Ingress (если настроен)
Проверьте, доступен ли контроллер PAC через Ingress (замените <pac-namespace> на ваш PAC namespace; по умолчанию это tekton-pipelines):
Пример вывода (если Ingress настроен):
Если найден, получите host Ingress:
Пример вывода:
URL контроллера будет следующим:
- HTTP:
http://<ingress-host> - HTTPS:
https://<ingress-host>
Способ 2: Запрос через NodePort Service (если настроен)
Проверьте, доступен ли контроллер PAC через NodePort (замените <pac-namespace> на ваш PAC namespace; по умолчанию это tekton-pipelines):
Пример вывода (если NodePort настроен):
Если найден, получите NodePort и IP узла:
Пример вывода:
Способ 3: Запрос через LoadBalancer Service (если настроен)
Проверьте, доступен ли контроллер PAC через LoadBalancer (замените <pac-namespace> на ваш PAC namespace; по умолчанию это tekton-pipelines):
Пример вывода (если LoadBalancer настроен):
Если найден, получите имя service и внешний IP:
Пример вывода:
Автоматическое определение в tkn pac
Команда tkn pac create repo может автоматически определить URL контроллера, проверяя:
- Ресурсы Ingress
- Сервисы LoadBalancer
- Сервисы NodePort
Если автоматическое определение не удалось, вы сможете вручную ввести URL при появлении запроса.
Если не удается найти URL
Если ни один из указанных выше способов не работает или у вас нет прав на запрос cluster resources:
- Обратитесь к администратору PAC, чтобы получить URL контроллера PAC
- Администратор может найти его, используя способы из Manage PAC Component
- Обычно формат URL такой:
http://<host-or-ip>:<port>илиhttps://<host-or-ip>
Шаг 4: Настройте repository с помощью tkn pac
Перейдите в ваш repository
Склонируйте repository GitLab или перейдите в него:
Запустите tkn pac create repo
Важно: Перед запуском команды перейдите в каталог вашего repository GitLab. Каталог .tekton будет создан в текущем рабочем каталоге.
Примечание: Если PAC установлен в другом namespace, скорректируйте параметр --pac-namespace соответствующим образом. Замените tekton-pipelines на фактический PAC namespace, если вы развернули PAC в другом namespace. Параметр --pac-namespace указывает, где развернут контроллер PAC (по умолчанию: tekton-pipelines).
Интерактивная настройка
Команда запросит у вас следующую информацию:
1. URL Git repository
- По умолчанию: автоматически определяется по git remote текущего каталога
- Формат:
https://gitlab.com/username/repoилиgit@gitlab.com:username/repo - Действие: нажмите Enter, чтобы использовать значение по умолчанию, или введите другой URL
2. Namespace для Pipeline
- По умолчанию:
default - Описание: Kubernetes namespace, в котором будут создаваться PipelineRun
- Действие: введите предпочитаемый namespace (например,
project-pipelines) или нажмите Enter, чтобы использоватьdefault
Важно:
-
Namespace должен существовать до того, как PAC сможет создавать в нем PipelineRun
-
Если namespace не существует, сначала создайте его:
Пример:
-
Рекомендуется использовать отдельный namespace, например
project-pipelines, вместоdefault -
Для создания ресурсов PAC в namespace должны быть настроены RBAC permissions
3. GitLab Project ID
- Как найти:
- Перейдите в ваш GitLab project → Settings → General
- Найдите "Project ID" в разделе "Project information"
- Или используйте API:
curl --header "PRIVATE-TOKEN: <token>" "https://gitlab.com/api/v4/projects?search=<repo-name>"
4. URL контроллера PAC
- По умолчанию: автоматически определяется по ресурсам cluster
- Действие:
- Если определен автоматически корректно, нажмите Enter
- Если не определен, введите URL вручную
- Если вы не знаете URL: см. Шаг 3: Получите URL контроллера PAC выше, где приведены команды для запроса, или обратитесь к администратору PAC
5. Webhook Secret
- По умолчанию: случайная строка, сгенерированная автоматически
- Описание: Secret, используемый для проверки webhook-запросов от GitLab
- Действие: нажмите Enter, чтобы использовать значение по умолчанию, или введите собственный secret
Безопасность: Храните этот secret в безопасности. Он хранится в Kubernetes Secret.
6. GitLab Access Token
- Описание: Personal Access Token, созданный на шаге 2
- Действие: вставьте ваш token
7. GitLab API URL
- По умолчанию:
https://gitlab.com(для GitLab.com) - Для self-hosted GitLab: введите URL вашей GitLab instance, например
https://gitlab.example.com - Действие: нажмите Enter для GitLab.com или введите URL вашей instance
Пример интерактивной сессии
Шаг 5: Проверьте настройку
Проверьте Repository CR
Сначала определите ваш namespace (тот, который вы указали при создании Repository CR). Если вы его не помните, выведите список всех Repository CR:
Пример вывода:
Затем проверьте, что Repository CR создан в вашем namespace:
Пример вывода:
Просмотрите сведения о Repository CR:
Сначала возьмите имя repository из списка выше, затем посмотрите подробности:
Замените <repo-name> на фактическое имя repository из списка (например, my-repo).
Пример вывода (сокращенно):
Проверьте GitLab Webhook
- Перейдите в ваш GitLab project → Settings → Webhooks
- Убедитесь, что webhook создан со следующими параметрами:
- URL: URL вашего контроллера PAC
- Trigger: Push events, Merge request events, Comments
- Secret token: webhook secret, который вы настроили
Проверьте Kubernetes Secret
При использовании tkn pac create repo secret с вашими учетными данными GitLab создается автоматически. Проверьте secret:
Пример вывода:
Посмотрите сведения о secret:
Замените <secret-name> на фактическое имя secret (обычно совпадает с именем repository).
Пример вывода (значения закодированы в base64):
Secret содержит:
provider.token: ваш GitLab personal access tokenwebhook.secret: secret для проверки webhook
Проверьте сгенерированный шаблон
Убедитесь, что шаблон .tekton/pipelinerun.yaml создан в вашем repository:
Пример вывода:
Шаг 6: Проверьте настройку
Проверьте подключение webhook
Вы можете протестировать webhook из GitLab:
- Перейдите в GitLab project → Settings → Webhooks
- Найдите ваш webhook PAC
- Нажмите Test → Push events
- Проверьте ответ webhook
Запустите тестовый pipeline
Создайте простой commit, чтобы запустить pipeline:
Проверьте, был ли создан PipelineRun:
Пример вывода:
Ручная настройка (альтернатива)
Если вы предпочитаете настраивать вручную или вам нужен больший контроль, вы можете создать Repository CR и настроить webhook отдельно.
Создайте Repository CR вручную
Создайте файл repository.yaml:
Примените CR:
Пример вывода:
Создайте Secret GitLab
Создайте secret с вашим GitLab token:
Пример вывода:
Создайте Webhook Secret
Пример вывода:
Настройте GitLab Webhook вручную
- Перейдите в GitLab project → Settings → Webhooks
- Добавьте новый webhook:
- URL:
http://pac.example.com - Secret token: webhook secret из предыдущего шага
- Trigger: выберите "Push events" и "Merge request events"
- URL:
- Нажмите Add webhook
Использование private repositories
PAC поддерживает private repositories GitLab. Чтобы настроить аутентификацию для private repositories, см. руководство Configure Authentication for Private Repositories.
В этом руководстве описаны методы аутентификации, которые работают со всеми Git providers, включая:
- Аутентификация с использованием Personal Access Token (PAT)
- Аутентификация с использованием SSH key
- Шаги проверки и устранение неполадок
Работа с custom certificates
Если ваш GitLab instance использует self-signed certificates или custom CA certificates, необходимо настроить PAC на доверие к этим сертификатам. Подробные инструкции см. в руководстве Configure Custom Certificates.
В этом руководстве рассматриваются:
- Создание ConfigMaps с CA certificates
- Монтирование сертификатов в pod'ы контроллера PAC
- Настройка Git для использования custom certificates
- Шаги проверки и устранение неполадок
Устранение неполадок
Проверка, если Repository CR не создан
Проверьте наличие ошибок:
Пример вывода (сокращенно):
Проверка, если webhook не настроен
Если webhook не был создан автоматически:
- Убедитесь, что GitLab token имеет scope
api - Проверьте, что token действителен:
curl --header "PRIVATE-TOKEN: <token>" "https://gitlab.com/api/v4/user" - Создайте webhook вручную (см. раздел Manual Configuration выше)
Проверка, если webhook-события не получаются
-
Проверьте логи контроллера PAC:
Пример вывода:
- Убедитесь, что URL webhook доступен из GitLab
- Проверьте, что webhook secret совпадает и в GitLab, и в Repository CR
Проверка, если PipelineRun не создаются
-
Проверьте Repository CR:
Пример вывода (сокращенно):
- Проверьте логи контроллера PAC на наличие ошибок
- Убедитесь, что
.tekton/pipelinerun.yamlсуществует в вашем repository - Проверьте permissions namespace
Проверка, если есть проблемы с доступом к private repository
- Проверьте permissions token: убедитесь, что token имеет scope
api - Проверьте наличие secret: убедитесь, что secret для аутентификации существует в namespace
- Проверьте Repository CR: убедитесь, что secret указан корректно
- Проверьте логи PAC: найдите ошибки аутентификации в логах контроллера
Подробнее см. Configure Authentication for Private Repositories.
Проверка, если есть проблемы с сертификатами
- Проверьте монтирование сертификата: убедитесь, что сертификат смонтирован в pod
- Проверьте срок действия сертификата: убедитесь, что сертификат не истек
- Проверьте конфигурацию Git: убедитесь, что Git настроен на использование сертификата
- Просмотрите логи: найдите ошибки SSL/сертификатов в логах контроллера PAC
Подробнее см. Configure Custom Certificates.
Следующие шаги
- Configure Authentication for Private Repositories - Настройка аутентификации для private repositories
- Configure Custom Certificates - Настройка custom CA certificates
- Maintain Pipeline Code - Узнайте, как определять pipeline в вашем repository
- Trigger Pipelines - Узнайте о различных способах запуска
- Common Issues - Руководство по устранению неполадок