Расширенная конфигурация Repository
Это руководство предназначено для обычных пользователей, которым требуются расширенные конфигурации Repository CR, такие как ограничения параллелизма, настройки исходной ветки и пользовательское расширение параметров.
В этом руководстве описаны расширенные параметры конфигурации для Repository Custom Resources, включая:
- Глобальный Repository CR для автоматического наследования конфигурации (Tech Preview)
- Ограничения параллелизма
- Конфигурация исходной ветки
- Пользовательское расширение параметров
Содержание
Предварительные требованияСоздание глобального Repository CRПример: глобальный Repository CRПример: использование глобальных настроекНастройка ограничений параллелизмаНастройка ограничения параллелизмаПримеры использованияПроверка ограничения параллелизмаИзменение исходной ветки для определения PipelineНастройка источника определения PipelineRunПреимущества для безопасностиСравнение конфигурацийПользовательское расширение параметровОпределение пользовательских параметровИспользование пользовательских параметров в pipelinesПриоритет параметровПример: конфигурация для разных средКомбинирование расширенных функцийРекомендации1. Ограничения параллелизма2. Настройка исходной ветки3. Пользовательские параметрыУстранение неполадокОграничение параллелизма не работаетПараметры не расширяютсяСледующие шагиПредварительные требования
- Компонент PAC развернут и запущен
- Создан Repository CR (см. Configure Repository)
- Права cluster administrator или namespace-level permissions
Создание глобального Repository CR
Функция глобального Repository CR — это функция Technology Preview, которая обеспечивает автоматическое наследование конфигурации для всех Repository CR.
Кроме того, вы можете создать глобальный Repository CR в namespace, где установлен PAC (обычно tekton-pipelines или namespace, заданный через targetNamespace в OpenShiftPipelinesAsCode CR). Если вы создадите в этом namespace Repository CR с именем pipelines-as-code, указанные в нем параметры будут автоматически применяться ко всем создаваемым вами 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. Вы можете задать максимальное количество PipelineRuns, которые могут выполняться для репозитория одновременно.
Настройка ограничения параллелизма
Отредактируйте Repository CR, добавив поле concurrency_limit:
Важно:
- Минимальное значение —
1 - Если значение не указано, ограничение на количество одновременно выполняющихся PipelineRuns отсутствует
- Когда предел достигнут, новые события будут помещаться в очередь, пока не завершится один из PipelineRun
Примеры использования
Репозиторий с высокой нагрузкой: ограничьте количество одновременных запусков, чтобы предотвратить перегрузку cluster:
Pipeline с интенсивным использованием ресурсов: ограничьте количество запусков, чтобы обеспечить достаточные ресурсы для каждого:
Без ограничения (по умолчанию): разрешите неограниченное количество одновременных запусков:
Проверка ограничения параллелизма
Проверьте Repository CR:
Пример вывода (сокращенно):
Отслеживайте выполняющиеся PipelineRuns:
Пример вывода:
Изменение исходной ветки для определения Pipeline
По умолчанию Pipelines-as-Code получает определение PipelineRun из ветки, в которой было сгенерировано событие (например, из ветки push или pull request).
Вы можете изменить это поведение, используя поле spec.settings.pipelinerun_provenance в пользовательском ресурсе Repository. Этот параметр определяет, из какой ветки будет получено определение PipelineRun.
Настройка источника определения PipelineRun
Поддерживаемые значения для pipelinerun_provenance:
source: Поведение по умолчанию. Определение PipelineRun получаем из ветки, в которой было сгенерировано событие.default_branch: Определение PipelineRun получаем из ветки по умолчанию в репозитории, настроенной в Git provider (например,main,masterилиtrunk).
Преимущества для безопасности
Разрешение пользователю указывать происхождение определения PipelineRun из ветки по умолчанию — это еще один уровень безопасности. Это гарантирует, что изменить определение PipelineRun и получить доступ к инфраструктуре сможет только тот пользователь, который имеет право вносить commits в ветку по умолчанию.
- Предотвращает вредоносные изменения pipeline: определения pipeline должны быть объединены с веткой по умолчанию, прежде чем их можно будет выполнить
- Обеспечивает процесс review: все изменения pipeline проходят стандартный процесс merge/review
- Согласованное поведение pipeline: все запуски используют одни и те же определения pipeline из ветки по умолчанию
Сравнение конфигураций
Примечание: Согласно документации Red Hat OpenShift Pipelines, параметр default_branch рекомендуется как мера безопасности, чтобы обеспечить максимальную проверку изменений pipeline в процессе merge review.
Пользовательское расширение параметров
Вы можете определить пользовательские параметры в Repository CR, которые будут расширены во всех PipelineRuns, создаваемых для этого репозитория. Это полезно для задания общих значений для всех pipelines.
Определение пользовательских параметров
Добавьте параметры в поле spec.params Repository CR:
Использование пользовательских параметров в pipelines
Важно: Параметры 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 params:
Production Repository:
Staging Repository:
Оба репозитория могут использовать одно и то же определение pipeline, при этом параметры будут автоматически заполняться из Repository CR.
Комбинирование расширенных функций
Вы можете объединить все расширенные функции в одном Repository CR:
Рекомендации
1. Ограничения параллелизма
- Задавайте подходящие пределы: учитывайте ресурсы cluster и требования pipeline к ресурсам
- Отслеживайте использование: следите за событиями в очереди, если пределы слишком низкие
- Динамически корректируйте: увеличивайте пределы в периоды высокой нагрузки, уменьшайте для экономии ресурсов
2. Настройка исходной ветки
- Используйте стабильные ветки: получайте определения pipeline из стабильных веток (например,
main) - Тестируйте изменения pipeline: проверяйте изменения pipeline в feature-ветках перед слиянием с исходной веткой
- Документируйте изменения: четко указывайте, в какой ветке хранятся определения pipeline
3. Пользовательские параметры
- Используйте понятные имена: выбирайте ясные и описательные имена параметров
- Оставляйте значения простыми: используйте простые строковые значения для параметров
- Документируйте параметры: описывайте, что делает каждый параметр и когда он используется
- Избегайте secrets: не храните secrets в параметрах Repository; вместо этого используйте Kubernetes Secrets
Устранение неполадок
Ограничение параллелизма не работает
-
Проверьте, что предел задан:
Пример вывода:
-
Проверьте наличие событий в очереди: найдите события, которые ожидают завершения PipelineRuns
-
Проверьте логи PAC controller:
Пример вывода:
Параметры не расширяются
-
Проверьте, что параметры определены:
-
Проверьте синтаксис параметров: убедитесь, что вы используете синтаксис
{{ param }}для ссылки на параметры Repository CR, а не$(params.param) -
Проверьте замену переменных: проверьте созданный PipelineRun, чтобы убедиться, что PAC заменил переменные:
-
Проверьте PipelineRun: посмотрите, не переопределяются ли параметры в определении PipelineRun
Следующие шаги
- Configure Repository - Базовая настройка репозитория
- Maintain Pipeline Code - Руководство по определению pipeline
- Manage PipelineRuns - Управление PipelineRun
- Common Issues - Руководство по устранению неполадок