Расширенная конфигурация Repository
Это руководство предназначено для обычных пользователей, которым требуется расширенная конфигурация Repository CR, например ограничения параллелизма, настройки исходной ветки и пользовательское расширение параметров.
В этом руководстве описаны расширенные параметры конфигурации для Repository Custom Resources, включая:
- Глобальный Repository CR для автоматического наследования конфигурации (Tech Preview)
- Ограничения параллелизма
- Конфигурация исходной ветки
- Пользовательское расширение параметров
Содержание
Предварительные требованияСоздание глобального Repository CRПример: глобальный Repository CRПример: использование глобальных настроекНастройка ограничений параллелизмаНастройка ограничения параллелизмаПримеры использованияПроверка ограничения параллелизмаИзменение исходной ветки для определения PipelineНастройка источника определения PipelineRunПреимущества в области безопасностиСравнение конфигурацийПользовательское расширение параметровОпределение пользовательских параметровИспользование пользовательских параметров в pipelineПриоритет параметровПример: конфигурация для конкретной средыСочетание расширенных функцийРекомендации1. Ограничения параллелизма2. Конфигурация исходной ветки3. Пользовательские параметрыУстранение неполадокОграничение параллелизма не работаетПараметры не подставляютсяСледующие шагиПредварительные требования
- Компонент PAC развернут и запущен
- Создан Repository CR (см. Руководства)
- Права cluster administrator или права на уровне namespace
Создание глобального Repository CR
Функция глобального Repository CR — это функция Technology Preview, которая обеспечивает автоматическое наследование конфигурации для всех Repository CR.
В качестве альтернативы вы можете создать глобальный Repository CR в namespace, где установлен PAC (обычно tekton-pipelines или namespace, указанный через targetNamespace в CR OpenShiftPipelinesAsCode). Если вы создадите Repository CR с именем pipelines-as-code в этом namespace, указанные в нем параметры будут автоматически применяться ко всем создаваемым вами Repository CR.
Ключевые моменты:
- Имя: Должно точно совпадать с
pipelines-as-code - Namespace: Должен находиться в namespace установки PAC (например,
tekton-pipelines) - Автоматическое применение: Параметры автоматически применяются ко всем Repository CR
- Tech Preview: Это функция Technology Preview
Пример: глобальный Repository CR
Создайте глобальный Repository CR в namespace PAC:
Примените CR:
Поведение:
- Все создаваемые вами Repository CR будут наследовать эти настройки
git_provider - Отдельные Repository CR при необходимости могут переопределять эти настройки
- Вам по-прежнему нужно указывать
urlи другие настройки, специфичные для конкретного репозитория, в каждом Repository CR
Пример: использование глобальных настроек
С помощью глобального CR, приведенного выше, вы можете создавать отдельные Repository CR с минимальной конфигурацией:
Настройка ограничений параллелизма
Ограничения параллелизма помогают предотвратить исчерпание ресурсов, когда множество событий одновременно запускает pipelines. Вы можете задать максимальное количество одновременно выполняющихся PipelineRun для репозитория.
Настройка ограничения параллелизма
Измените ваш Repository CR, добавив поле concurrency_limit:
Важно:
- Минимальное значение —
1 - Если значение не указано, ограничение на число одновременно выполняющихся PipelineRun отсутствует
- Когда предел достигнут, новые события будут поставлены в очередь до завершения PipelineRun
Примеры использования
Репозиторий с высоким трафиком: ограничьте число одновременных запусков, чтобы предотвратить перегрузку кластера:
Pipeline с высокими требованиями к ресурсам: ограничьте число запусков, чтобы на каждый запуск приходилось достаточно ресурсов:
Без ограничения (по умолчанию): разрешите неограниченное число одновременных запусков:
Проверка ограничения параллелизма
Проверьте Repository CR:
Пример вывода (сокращенно):
Отслеживайте выполняющиеся PipelineRun:
Пример вывода:
Изменение исходной ветки для определения Pipeline
По умолчанию Pipelines-as-Code получает определение PipelineRun из ветки, в которой было сгенерировано событие (например, из ветки push или pull request).
Вы можете изменить это поведение, используя поле spec.settings.pipelinerun_provenance в custom resource Repository. Этот параметр управляет тем, из какой ветки извлекается определение PipelineRun.
Настройка источника определения PipelineRun
Поддерживаемые значения для pipelinerun_provenance:
source: Поведение по умолчанию. Определение PipelineRun извлекается из ветки, в которой было сгенерировано событие.default_branch: Определение PipelineRun извлекается из ветки по умолчанию репозитория, как она настроена у Git provider (например,main,masterилиtrunk).
Преимущества в области безопасности
Разрешить пользователю задавать происхождение определения PipelineRun из ветки по умолчанию — это еще один уровень безопасности. Это гарантирует, что только пользователь, имеющий право сливать коммиты в ветку по умолчанию, может изменить определение PipelineRun и получить доступ к инфраструктуре.
- Предотвращает вредоносные изменения pipeline: Определения pipeline должны быть слиты в ветку по умолчанию, прежде чем их можно будет выполнить.
- Обеспечивает процесс review: Все изменения pipeline проходят стандартный процесс merge/review.
- Стабильное поведение pipeline: Все запуски используют одни и те же определения pipeline из ветки по умолчанию.
Сравнение конфигураций
Примечание: Используйте default_branch, когда определения pipeline должны пройти процесс merge review в репозитории, прежде чем они смогут повлиять на будущие запуски.
Пользовательское расширение параметров
Вы можете определить пользовательские параметры в Repository CR, которые будут подставляться во все PipelineRun, создаваемые для этого репозитория. Это полезно для задания общих значений для всех pipeline.
Определение пользовательских параметров
Добавьте параметры в поле spec.params Repository CR:
Использование пользовательских параметров в pipeline
Важно: Параметры Repository CR используют синтаксис переменных PAC {{ param }}, а не синтаксис Tekton $(params.param).
-
Переменные PAC (
{{ variable }}): PAC подставляет их до создания PipelineRun. Сюда входят:- Параметры Repository CR из
spec.params(например,{{ environment }},{{ cluster-name }}) - Встроенные переменные PAC (например,
{{ revision }},{{ repo_url }},{{ source_branch }})
- Параметры Repository CR из
-
Параметры Tekton (
$(params.param)): Tekton разрешает их во время выполнения PipelineRun. Они ссылаются на собственныеspec.paramsPipelineRun.
Ссылайтесь на параметры Repository CR в определениях PipelineRun, используя синтаксис переменных PAC:
Как это работает:
- До создания PipelineRun: PAC заменяет весь синтаксис
{{ variable }}фактическими значениями из параметров Repository CR и встроенных переменных - Создание PipelineRun: PAC создает PipelineRun, в котором все переменные уже подставлены
- Во время выполнения: Tekton разрешает синтаксис
$(params.xxx), считывая значения изspec.paramsPipelineRun
Пример преобразования:
- В вашем Git repo:
value: "{{ environment }}" - PAC заменяет это на:
value: "production"(из параметра Repository CR) - PipelineRun создается с:
- name: environment/value: "production" - Скрипты Task используют:
$(params.environment)→ Tekton разрешает это в"production"
Приоритет параметров
Параметры подставляются в следующем порядке (от наивысшего к наименьшему приоритету):
- Параметры PipelineRun: Параметры, явно определенные в PipelineRun
- Параметры Repository: Параметры, определенные в Repository CR
- Динамические переменные: Динамические переменные PAC (например,
{{ revision }},{{ repo_url }})
Пример: конфигурация для конкретной среды
Настройте разные среды с помощью параметров Repository:
Production Repository:
Staging Repository:
Оба репозитория могут использовать одно и то же определение pipeline, при этом параметры будут автоматически подставляться из Repository CR.
Сочетание расширенных функций
Вы можете объединить все расширенные функции в одном Repository CR:
Рекомендации
1. Ограничения параллелизма
- Задавайте подходящие ограничения: Учитывайте ресурсы кластера и требования pipeline к ресурсам
- Контролируйте использование: Отслеживайте события, поставленные в очередь, если ограничения слишком низкие
- Динамически корректируйте: Увеличивайте ограничения в периоды высокой нагрузки и уменьшайте для экономии ресурсов
2. Конфигурация исходной ветки
- Используйте стабильные ветки: Получайте определения pipeline из стабильных веток (например,
main) - Тестируйте изменения pipeline: Проверяйте изменения pipeline в feature-ветках перед слиянием в исходную ветку
- Документируйте изменения: Четко указывайте, в какой ветке находятся определения pipeline
3. Пользовательские параметры
- Используйте понятные имена: Выбирайте ясные и описательные имена параметров
- Делайте значения простыми: Используйте простые строковые значения для параметров
- Документируйте параметры: Описывайте, что делает каждый параметр и когда он используется
- Избегайте секретов: Не храните secrets в параметрах Repository; вместо этого используйте Kubernetes Secrets
Устранение неполадок
Ограничение параллелизма не работает
-
Проверьте, что ограничение задано:
Пример вывода:
-
Проверьте наличие очереди событий: Найдите события, которые ожидают завершения PipelineRun
-
Проверьте логи контроллера PAC:
Пример вывода:
Параметры не подставляются
-
Проверьте, что параметры определены:
-
Проверьте синтаксис параметров: Убедитесь, что для ссылки на параметры Repository CR используется синтаксис
{{ param }}, а не$(params.param) -
Проверьте замену переменных: Посмотрите созданный PipelineRun, чтобы убедиться, что PAC заменил переменные:
-
Проверьте PipelineRun: Убедитесь, не переопределяются ли параметры в определении PipelineRun
Следующие шаги
- Руководства — Пошаговые инструкции по базовой настройке repository
- Определение PipelineRun в Git — Файлы PipelineRun и trigger annotations
- Управление PipelineRun — Управление PipelineRun
- Распространенные проблемы — Руководство по устранению неполадок