Распространённые проблемы
Это руководство по устранению неполадок охватывает вопросы как для администраторов (развёртывание компонентов, конфигурация), так и для обычных пользователей (настройка репозитория, выполнение pipeline).
Важно: В этом документе используются два разных пространства имён:
<pac-namespace>: пространство имён, в котором развернуты компоненты PAC (controller, watcher, webhook). По умолчанию —tekton-pipelines, но может быть изменено через параметрtargetNamespaceв CROpenShiftPipelinesAsCode.<namespace>: пространство имён, в котором создаются PipelineRun. Указывается при создании CR Repository и может быть любым пространством имён в вашем кластере.
Замените эти заполнители на фактические имена ваших пространств имён.
В этом документе приведены шаги по устранению распространённых проблем при использовании Pipelines-as-Code (PAC).
Содержание
Перед началом1. Проверьте, что компоненты PAC запущены2. Определите ваши пространства имён3. Получите имена ресурсов4. Распространённые заполнители, используемые в этом документеКомпонент PAC не развёртываетсяСимптомШаги устранения неполадокРаспространённые причиныРешениеPod-ы PAC не запускаютсяСимптомШаги устранения неполадокWebhook не получает событияСимптомШаги устранения неполадокРаспространённые причиныРешениеПроверкаPipeline не запускаетсяСимптомШаги устранения неполадокРаспространённые причиныРешениеПроверкаPipelineRun не создаютсяСимптомШаги устранения неполадокРаспространённые причиныРешениеПроверкаЗадачи не найденыСимптомШаги устранения неполадокРаспространённые причиныРешениеПеременные не разрешаютсяСимптомШаги устранения неполадокРаспространённые причиныРешениеПроверкаСтатус не отправляется в GitLabСимптомШаги устранения неполадокРаспространённые причиныРешениеПроверкаКоманды в комментариях не работаютСимптомШаги устранения неполадокРаспространённые причиныРешениеПолучение помощиСледующие шагиПеред началом
Перед устранением конкретных проблем убедитесь в следующих базовых моментах:
1. Проверьте, что компоненты PAC запущены
Проверьте, что все pod-ы PAC запущены (замените <pac-namespace> на ваше пространство имён PAC, по умолчанию tekton-pipelines):
Пример вывода (все pod-ы должны быть в состоянии Running):
2. Определите ваши пространства имён
Получить пространство имён PAC (где развернуты компоненты PAC):
Если команда не сработает или вернёт пустое значение, используйте значение по умолчанию: tekton-pipelines
Получить пространство имён Pipeline (где создаются PipelineRun):
Эта команда покажет все CR Repository и их пространства имён. Столбец namespace показывает, где будут создаваться PipelineRun.
3. Получите имена ресурсов
Получить имена pod-ов:
Получить имена CR Repository:
Получить имена PipelineRun:
4. Распространённые заполнители, используемые в этом документе
<pac-namespace>: пространство имён для развёртывания PAC (по умолчанию:tekton-pipelines)<namespace>: пространство имён PipelineRun (зависит от репозитория)<repo-name>: имя CR Repository (используйтеkubectl get repository -n <namespace>для списка)<pod-name>: имя pod-а (используйтеkubectl get pods -n <pac-namespace>для списка)<name>: имя PipelineRun (используйтеkubectl get pipelinerun -n <namespace>для списка)<gitlab-secret>: имя секрета с токеном GitLab (проверьте spec Repository CR)
Компонент PAC не развёртывается
Симптом
CR OpenShiftPipelinesAsCode показывает Ready: False или pod-ы не запускаются.
Шаги устранения неполадок
-
Проверьте статус CR:
Пример вывода (сокращённый):
-
Проверьте события CR:
Пример вывода (сокращённый):
-
Проверьте TektonInstallerSet:
Примечание:
TektonInstallerSet— это ресурс с областью действия на уровне кластера. Это проверка только для чтения для устранения неполадок. Не изменяйте и не удаляйте его напрямую. Если проблемы сохраняются, устраняйте их через CROpenShiftPipelinesAsCode.
Пример вывода:
-
Проверьте логи оператора:
Пример вывода (пример записей лога):
Распространённые причины
- Неверное имя CR: должно быть ровно
pipelines-as-code - Оператор не запущен: проверьте статус Tekton Operator
- Проблемы с пространством имён: проверьте, что
targetNamespaceсуществует - Конфликты ресурсов: проверьте наличие существующих ресурсов
Решение
- Убедитесь, что имя CR —
pipelines-as-code - Убедитесь, что Tekton Operator запущен
- Проверьте, что пространство имён существует (замените
<pac-namespace>на ваше фактическое пространство имён PAC):kubectl get namespace <pac-namespace> - При необходимости удалите и создайте CR заново
Pod-ы PAC не запускаются
Симптом
Pod-ы PAC находятся в состоянии Pending или CrashLoopBackOff.
Шаги устранения неполадок
-
Проверьте статус pod-ов (замените
<pac-namespace>на ваше пространство имён PAC):
Пример вывода:
-
Проверьте логи pod-а:
Сначала получите имя pod-а (замените
<pac-namespace>на ваше пространство имён PAC):Затем проверьте логи (замените
<pod-name>на фактическое имя pod-а):
Пример вывода (пример ошибки):
-
Проверьте события pod-а:
Сначала получите имя pod-а, затем опишите его (замените
<pod-name>на фактическое имя pod-а):
Пример вывода (сокращённый):
-
Проверьте лимиты ресурсов:
Пример вывода:
Webhook не получает события
Симптом
События webhook из GitLab не доходят до PAC, pipeline не запускаются.
Шаги устранения неполадок
-
Проверьте конфигурацию webhook в GitLab:
- Перейдите в проект GitLab → Settings → Webhooks
- Убедитесь, что URL webhook указан правильно
- Проверьте, что секрет webhook совпадает с секретом в CR Repository
-
Проверьте логи контроллера PAC (замените
<pac-namespace>на ваше пространство имён PAC):
Пример вывода (пример записей лога):
-
Протестируйте webhook из GitLab:
- Перейдите в проект GitLab → Settings → Webhooks
- Нажмите "Test" → "Push events"
- Проверьте ответ webhook
-
Проверьте доступность URL контроллера:
Пример вывода:
Пример вывода:
-
Проверьте CR Repository:
Сначала получите список всех CR Repository, чтобы найти имя (замените
<namespace>на пространство имён Pipeline):Затем проверьте конкретный CR Repository (замените
<repo-name>на фактическое имя репозитория):
Пример вывода (сокращённый):
Распространённые причины
- URL контроллера недоступен: проблемы с файрволом или сетью
- Несовпадение секрета webhook: секрет в GitLab не совпадает с CR Repository
- Неправильный URL webhook: неверно настроен URL контроллера
- Ingress/Service не настроены: контроллер не доступен извне
Решение
- Убедитесь, что URL контроллера доступен с серверов GitLab
- Проверьте, что секрет webhook совпадает в GitLab и CR Repository
- Проверьте конфигурацию Ingress/Service
- Протестируйте webhook вручную с помощью
curl
Проверка
После применения решений проверьте исправление:
-
Протестируйте webhook из GitLab:
- Перейдите в проект GitLab → Settings → Webhooks
- Нажмите "Test" → "Push events"
- Убедитесь, что webhook возвращает ответ
200 OK
-
Проверьте логи контроллера PAC на события webhook:
Вы должны увидеть записи лога, указывающие на получение событий webhook.
Pipeline не запускается
Симптом
Pipeline не создаётся при возникновении событий Git.
Шаги устранения неполадок
-
Проверьте аннотации Pipeline:
Пример вывода:
-
Проверьте совпадение имён веток:
Пример вывода:
-
Проверьте логи контроллера PAC:
Пример вывода (пример записей лога):
-
Проверьте статус CR Repository:
Сначала получите список CR Repository, чтобы найти имя:
Затем проверьте CR Repository (замените
<repo-name>на фактическое имя репозитория):
Пример вывода (сокращённый):
-
Проверьте наличие файла Pipeline:
Пример вывода:
Распространённые причины
- Ошибка в синтаксисе аннотаций: неправильный формат аннотаций
- Несовпадение имени ветки: шаблон ветки не совпадает с фактической веткой
- Файл Pipeline не найден: файл отсутствует в ожидаемом месте
- Фильтрация по путям: изменённые файлы не соответствуют фильтру путей
- CR Repository не найден: отсутствует соответствующий CR Repository для репозитория
Решение
- Проверьте синтаксис аннотаций: используйте
pipelinesascode.tekton.dev/on-target-branch: "[refs/heads/main]"иpipelinesascode.tekton.dev/on-event: "[push]"вместо устаревшей аннотацииon-push - Проверьте точное совпадение имён веток (с учётом регистра)
- Убедитесь, что
.tekton/pipelinerun.yamlсуществует в репозитории - Проверьте фильтрацию по путям, если она настроена
- Убедитесь, что CR Repository существует и соответствует URL репозитория
Проверка
После применения решений проверьте исправление:
-
Запустите тестовое событие:
- Сделайте push коммита в ветку, указанную в аннотации pipeline
- Или создайте Merge Request, если тестируете триггеры MR
-
Проверьте создание PipelineRun:
Вы должны увидеть новый PipelineRun, созданный после события Git.
-
Проверьте логи контроллера PAC:
Ищите записи лога, указывающие на обработку события.
PipelineRun не создаются
Симптом
События webhook получены, но PipelineRun не создаются.
Шаги устранения неполадок
-
Проверьте логи контроллера PAC:
Пример вывода (пример ошибки):
-
Проверьте CR Repository:
Сначала получите список CR Repository, чтобы найти имя:
Затем проверьте CR Repository (замените
<repo-name>на фактическое имя репозитория):
Пример вывода (сокращённый):
-
Проверьте, что пространство имён существует:
Пример вывода:
Если пространство имён не существует, вы увидите:
-
Проверьте права RBAC:
Пример вывода:
-
Проверьте токен GitLab:
Сначала найдите имя секрета из CR Repository:
Затем проверьте секрет (замените
<gitlab-secret>на фактическое имя секрета):
Пример вывода (сокращённый, токен закодирован в base64):
Распространённые причины
- Пространство имён не существует: целевое пространство имён не создано
- Права RBAC: у ServiceAccount PAC нет необходимых прав
- Токен GitLab недействителен: токен истёк или неверен
- Ошибка определения pipeline: неверный YAML или синтаксис Tekton
- Доступ к репозиторию: нет доступа к Git-репозиторию
Решение
-
Создайте пространство имён, если оно отсутствует:
Пример вывода:
-
Проверьте RBAC: проверьте ServiceAccount и RoleBindings
Узнайте, какой ServiceAccount использует PAC:
Проверьте, есть ли у ServiceAccount необходимые права:
-
Обновите токен GitLab, если он истёк
-
Проверьте синтаксис YAML pipeline
-
Проверьте токен GitLab:
Пример вывода (если токен действителен):
Если токен недействителен:
Проверка
После применения решений проверьте исправление:
-
Запустите событие Git (push или создание MR) и проверьте, создаётся ли PipelineRun:
-
Проверьте статус PipelineRun:
PipelineRun должен быть создан и начать выполнение.
Задачи не найдены
Симптом
PipelineRun завершается с ошибкой "task not found".
Шаги устранения неполадок
-
Проверьте статус PipelineRun:
Сначала получите список PipelineRun, чтобы найти имя:
Затем проверьте PipelineRun (замените
<name>на фактическое имя PipelineRun):
Пример вывода (сокращённый, с ошибкой):
-
Проверьте ссылки на задачи:
Пример вывода:
-
Проверьте, что задача существует:
Пример вывода (если задача существует):
Если задача не найдена:
Пример вывода (если задача существует):
-
Проверьте сетевое подключение:
Пример вывода (если доступно):
Пример вывода (если доступно):
Распространённые причины
- Неправильное имя задачи: опечатка в имени задачи
- Задача не в том пространстве имён: задача определена в другом namespace
- Tekton Hub недоступен: проблемы с сетью при доступе к Tekton Hub
- Удалённый URL недоступен: невозможно получить задачу по удалённому URL
- Ошибка резолвера задач: неверная конфигурация резолвера
Решение
- Проверьте правильность написания имени задачи
- Убедитесь, что задача существует в нужном пространстве имён
- Проверьте доступность Tekton Hub
- Проверьте доступность удалённых URL
- Проверьте конфигурацию резолвера задач
Переменные не разрешаются
Симптом
Переменные pipeline, такие как {{revision}}, не заменяются.
Шаги устранения неполадок
-
Проверьте синтаксис переменных:
Пример вывода:
-
Проверьте синтаксис YAML с помощью dry-run:
Используйте
kubectl apply --dry-run=clientдля проверки синтаксиса PipelineRun YAML и раннего обнаружения ошибок:
Пример вывода (если синтаксис корректен):
Пример вывода (если есть ошибки синтаксиса):
Примечание: Эта проверка dry-run валидирует синтаксис YAML и схему Tekton, но не проверяет разрешение переменных (переменные вроде {{revision}} останутся как есть в dry-run). Для проблем с разрешением переменных смотрите логи контроллера PAC.
-
Проверьте логи контроллера PAC:
Пример вывода (пример записей лога):
-
Проверьте имена переменных:
{{revision}}— правильно{{Revision}}или{{REVISION}}— неправильно (регистр имеет значение)- Используйте двойные фигурные скобки:
{{variable_name}}
-
Проверьте параметры PipelineRun:
Сначала получите имя PipelineRun:
Затем проверьте параметры (замените
<name>на фактическое имя PipelineRun):
Пример вывода:
Распространённые причины
- Ошибка синтаксиса: отсутствуют фигурные скобки или неправильный формат
- Чувствительность к регистру: имена переменных чувствительны к регистру
- Переменная недоступна: переменная недоступна для текущего типа события (например,
{{pull_request_number}}доступна только для событий pull_request) - Версия PAC: старая версия PAC может не поддерживать некоторые переменные
Решение
- Проверьте синтаксис переменных: используйте формат
{{variable_name}}, например{{revision}}или{{repo_url}} - Проверьте правильность имён переменных (с учётом регистра):
{{repo_owner}},{{source_branch}},{{pull_request_number}} - Убедитесь, что переменная доступна для типа события: некоторые переменные, например
{{pull_request_number}}, доступны только для событийpull_request - Обновите PAC до последней версии при необходимости
Полный список доступных переменных смотрите в разделе Parameterizing Commits and URLs.
Проверка
После применения решений проверьте исправление:
-
Проверьте, что переменные разрешились в созданном PipelineRun:
Переменные должны быть заменены на реальные значения (например,
{{revision}}должен быть заменён на SHA коммита). -
Проверьте логи контроллера PAC на разрешение переменных:
Не должно быть предупреждений о неизвестных переменных.
Статус не отправляется в GitLab
Симптом
Pipeline успешно выполняется, но статус не отображается в GitLab.
Шаги устранения неполадок
-
Проверьте логи watcher PAC:
Пример вывода (пример записей лога):
-
Проверьте токен GitLab:
Сначала найдите имя секрета из CR Repository:
Затем проверьте секрет (замените
<gitlab-secret>на фактическое имя секрета):
Пример вывода (сокращённый, токен закодирован в base64):
-
Проверьте доступ к API GitLab:
Пример вывода (если токен действителен):
Если токен недействителен или истёк:
-
Проверьте CR Repository:
Пример вывода (сокращённый):
-
Проверьте статус PipelineRun:
Получите список PipelineRun, чтобы найти имя:
Затем проверьте статус (замените
<name>на фактическое имя PipelineRun):
Пример вывода:
Распространённые причины
- Токен GitLab недействителен: токен истёк или неверен
- Права токена: токен не имеет необходимых scope
- Проблемы с сетью: нет доступа к API GitLab
- Watcher PAC не запущен: pod watcher не работает
- Неправильная конфигурация CR Repository: неверная конфигурация GitLab
Решение
- Убедитесь, что токен GitLab действителен и не истёк
- Проверьте, что токен имеет scope
api - Проверьте доступность API GitLab
- Убедитесь, что pod watcher PAC запущен
- Проверьте конфигурацию GitLab в CR Repository
Проверка
После применения решений проверьте исправление:
-
Проверьте логи watcher PAC на успешные обновления статуса:
Вы должны увидеть записи лога, указывающие на успешные обновления статуса.
-
Проверьте UI GitLab:
- Перейдите в ваш проект GitLab
- Проверьте Merge Request или коммит
- Убедитесь, что статус pipeline отображается (например, "passed", "failed", "running")
-
Проверьте, что PipelineRun завершён:
PipelineRun должен иметь статус
SucceededилиFailed, и этот статус должен отображаться в GitLab.
Команды в комментариях не работают
Симптом
Команды в комментариях, например /retest, не запускают pipeline.
Шаги устранения неполадок
-
Проверьте конфигурацию аннотаций:
Пример вывода:
-
Проверьте формат комментария:
- Команды должны быть на отдельной строке или в начале строки
/retest— правильноPlease /retest— неправильно (команда не в начале строки)
-
Проверьте логи контроллера PAC:
Пример вывода (пример записей лога):
-
Проверьте, что Merge Request существует:
- Команды в комментариях работают только в Merge Requests
- Не работают для обычных коммитов
-
Проверьте конфигурацию webhook:
Распространённые причины
- Отсутствует аннотация: не настроена аннотация
on-comment - Неправильный формат команды: команда не в начале строки
- Не в Merge Request: команды работают только в Merge Requests
- Webhook не настроен: событие комментариев не включено в webhook
- Несовпадение имени команды: команда в комментарии не совпадает с аннотацией
Решение
- Добавьте аннотацию
on-comment:pipelinesascode.tekton.dev/on-comment: "retest" - Убедитесь, что команды находятся в начале строки
- Используйте команды только в Merge Requests
- Включите "Comments" в настройках webhook GitLab
- Точно совпадайте с именами команд (с учётом регистра)
Получение помощи
Если проблемы сохраняются:
- Проверьте логи: изучите логи всех компонентов на наличие ошибок
- Проверьте конфигурацию: перепроверьте все конфигурационные файлы
- Изучите документацию: ознакомьтесь с документацией PAC в этом руководстве
- Просмотрите разделы устранения неполадок: изучите другие разделы устранения неполадок в этом документе
Следующие шаги
- Manage PAC Component - Руководство по развёртыванию и управлению
- Configure Repository - Руководство по настройке репозитория
- Trigger Pipelines - Руководство по настройке триггеров pipeline