Входящие Webhook
Входящие webhook позволяют запускать пайплайны напрямую через HTTP POST-запросы, без необходимости использования событий Git.
Содержание
ОбзорНастройка входящего WebhookЗапуск пайплайна через входящий WebhookПолезная нагрузка входящего WebhookПользовательские параметрыВопросы безопасностиУстранение неполадок с входящими WebhookЛучшие практики1. Управление PipelineRun2. Мониторинг3. Входящие WebhookУстранение неполадокPipelineRun не создаетсяPipelineRun не запускаетсяСтатус не передаетсяСледующие шагиОбзор
Входящие webhook предоставляют возможность:
- Запускать пайплайны из внешних систем
- Интегрироваться с CI/CD инструментами, которые не используют Git
- Запускать пайплайны вручную или через API вызовы
- Поддерживать пользовательские полезные нагрузки и параметры
- HTTP POST-запрос: Отправьте POST-запрос на эндпоинт
/incomingконтроллера PAC - Аутентификация: PAC проверяет запрос с помощью секрета (из заголовка или параметра запроса)
- Поиск репозитория: PAC находит CR Repository по имени репозитория и namespace
- Запуск пайплайна: PAC обрабатывает полезную нагрузку и запускает соответствующие пайплайны, аналогично событиям Git webhook
- Создание PipelineRun: PAC создает PipelineRuns на основе полезной нагрузки и определений пайплайна
Основные отличия от Git webhook:
- Нет участия Git-провайдера — прямые HTTP-запросы
- Пользовательский формат полезной нагрузки — вы контролируете структуру
- Можно запускать пайплайны без реальных коммитов в Git
- Полезно для внешних интеграций и ручных запусков
Настройка входящего Webhook
-
Включите в CR Repository: Добавьте конфигурацию входящего webhook в ваш CR Repository:
-
Создайте секрет для входящего webhook:
-
Получите URL входящего webhook:
Эндпоинт входящего webhook:
Параметры URL (необязательно, можно передавать также через заголовки):
repository: имя CR Repositorynamespace: namespace, где расположен CR Repositorysecret: значение секрета входящего webhook
Пример с параметрами запроса:
Пример с заголовками (рекомендуется для безопасности):
С заголовками: X-Repository, X-Namespace, X-Secret
Используйте заголовки (X-Repository, X-Namespace, X-Secret) вместо параметров запроса, чтобы избежать раскрытия секретов в URL и логах.
Запуск пайплайна через входящий Webhook
Отправьте POST-запрос на эндпоинт входящего webhook:
Полезная нагрузка входящего Webhook
Входящий webhook принимает JSON-полезную нагрузку со следующей структурой:
Пользовательские параметры
Вы можете передавать пользовательские параметры в полезной нагрузке webhook:
Эти параметры доступны в вашем пайплайне как $(params.environment) и $(params.deploy).
Вопросы безопасности
- Используйте секреты: Всегда используйте секреты webhook для проверки запросов
- HTTPS: Используйте HTTPS для эндпоинтов webhook в продакшене
- Сетевые политики: Ограничьте доступ к эндпоинтам входящего webhook
- Ограничение частоты: Реализуйте ограничение частоты запросов для предотвращения злоупотреблений
- Проверка полезной нагрузки: Валидируйте входящие полезные нагрузки перед обработкой
Устранение неполадок с входящими Webhook
-
Проверьте URL webhook: Убедитесь, что URL правильный и доступен
-
Проверьте секрет: Убедитесь, что секрет совпадает в запросе и CR Repository
-
Проверьте логи PAC:
-
Проверьте CR Repository: Убедитесь, что входящий webhook настроен корректно
-
Тестируйте с помощью curl: Используйте curl для проверки эндпоинта webhook
Лучшие практики
1. Управление PipelineRun
- Устанавливайте лимиты очистки: Используйте
max-keep-runs, чтобы избежать накопления - Мониторьте ресурсы: Следите за использованием ресурсов PipelineRuns
- Архивируйте важные запуски: Экспортируйте важные PipelineRuns перед очисткой
2. Мониторинг
- Используйте метки: Метки для PipelineRuns упрощают фильтрацию
- Настраивайте оповещения: Конфигурируйте оповещения для неудачных PipelineRuns
- Проводите регулярные проверки: Периодически проверяйте статус и логи PipelineRun
3. Входящие Webhook
- Защищайте эндпоинты: Всегда используйте HTTPS и секреты
- Проверяйте полезные нагрузки: Валидируйте входящие webhook payload
- Документируйте использование: Описывайте эндпоинты webhook и форматы payload
- Тщательно тестируйте: Проверяйте триггеры webhook перед использованием в продакшене
Устранение неполадок
PipelineRun не создается
- Проверьте webhook: Убедитесь, что webhook настроен и получает события
- Проверьте CR Repository: Убедитесь в корректной настройке CR Repository
- Проверьте логи PAC: Просмотрите логи контроллера PAC на наличие ошибок
- Проверьте файл пайплайна: Убедитесь, что файл определения пайплайна существует в репозитории
PipelineRun не запускается
- Проверьте статус: Просмотрите статус и условия PipelineRun
- Проверьте логи: Проверьте логи PipelineRun и TaskRun
- Проверьте ресурсы: Убедитесь в наличии достаточных ресурсов кластера
- Проверьте разрешения: Убедитесь, что ServiceAccount имеет необходимые права
Статус не передается
- Проверьте токен Git-провайдера: Убедитесь, что токен имеет необходимые права
- Проверьте PAC Watcher: Убедитесь, что PAC Watcher запущен
- Проверьте логи: Просмотрите логи PAC Watcher на наличие ошибок
- Проверьте подключение: Убедитесь, что PAC может обращаться к API Git-провайдера
Следующие шаги
- Trigger Pipelines - Узнайте о различных методах запуска
- Maintain Pipeline Code - Руководство по определению пайплайнов
- Configure Repository - Настройка репозитория
- Common Issues - Руководство по устранению неполадок