Расширенная конфигурация репозитория
Это руководство предназначено для обычных пользователей, которым необходимы расширенные настройки Repository CR, такие как ограничения параллелизма, настройки исходной ветки и расширение пользовательских параметров.
В этом руководстве объясняются расширенные параметры конфигурации для Custom Resources Repository, включая:
- Глобальный Repository CR для автоматического наследования конфигурации (Tech Preview)
- Ограничения параллелизма
- Настройка исходной ветки
- Расширение пользовательских параметров
Содержание
Предварительные требованияСоздание глобального Repository CRПример: глобальный Repository CRПример: использование глобальных настроекНастройка ограничений параллелизмаКонфигурация ограничения параллелизмаПримеры использованияПроверка ограничения параллелизмаИзменение исходной ветки для определения PipelineКонфигурация источника определения PipelineRunПреимущества безопасностиСравнение конфигурацийРасширение пользовательских параметровОпределение пользовательских параметровИспользование пользовательских параметров в пайплайнахПриоритет параметровПример: конфигурация для разных окруженийКомбинирование расширенных функцийРекомендации по лучшим практикам1. Ограничения параллелизма2. Настройка исходной ветки3. Пользовательские параметрыУстранение неполадокОграничение параллелизма не работаетПараметры не расширяютсяСледующие шагиПредварительные требования
- Компонент PAC развернут и работает
- Создан Repository CR (см. Configure Repository)
- Права администратора кластера или на уровне namespace
Создание глобального Repository CR
Функция глобального Repository CR является технологическим превью и обеспечивает автоматическое наследование конфигурации для всех Repository CR.
В качестве альтернативы вы можете создать глобальный Repository CR в namespace, где установлен PAC (обычно tekton-pipelines или настроенный через targetNamespace в OpenShiftPipelinesAsCode CR). Если вы создадите Repository CR с именем pipelines-as-code в этом namespace, настройки, указанные в нем, будут автоматически применяться ко всем создаваемым вами Repository CR.
Основные моменты:
- Имя: должно быть ровно
pipelines-as-code - Namespace: должен быть namespace установки PAC (например,
tekton-pipelines) - Автоматическое применение: настройки автоматически применяются ко всем Repository CR
- Tech Preview: это функция технологического превью
Пример: глобальный Repository CR
Создайте глобальный Repository CR в namespace PAC:
Примените CR:
Поведение:
- Все создаваемые вами Repository CR будут наследовать эти настройки
git_provider - Отдельные Repository CR могут переопределять эти настройки при необходимости
- В каждом Repository CR по-прежнему нужно указывать
urlи другие специфичные для репозитория настройки
Пример: использование глобальных настроек
С приведённым выше глобальным CR вы можете создавать отдельные Repository CR с минимальной конфигурацией:
Настройка ограничений параллелизма
Ограничения параллелизма помогают предотвратить исчерпание ресурсов при одновременном запуске множества PipelineRun. Вы можете задать максимальное количество одновременных PipelineRun для репозитория.
Конфигурация ограничения параллелизма
Отредактируйте ваш Repository CR, добавив поле concurrency_limit:
Важно:
- Минимальное значение —
1 - Если не указано, ограничение отсутствует (неограниченное количество одновременных PipelineRun)
- При достижении лимита новые события будут ставиться в очередь до завершения PipelineRun
Примеры использования
Репозиторий с высокой нагрузкой: ограничьте количество одновременных запусков, чтобы избежать перегрузки кластера:
Ресурсоёмкие пайплайны: ограничьте количество запусков для обеспечения достаточных ресурсов на каждый запуск:
Без ограничений (по умолчанию): разрешить неограниченное количество одновременных запусков:
Проверка ограничения параллелизма
Проверьте 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-провайдера (например,main,masterилиtrunk).
Преимущества безопасности
Позволяя пользователю указывать источник определения PipelineRun как ветку по умолчанию, добавляется дополнительный уровень безопасности. Это гарантирует, что только пользователь, имеющий право сливать коммиты в ветку по умолчанию, может изменить определение PipelineRun и получить доступ к инфраструктуре.
- Предотвращает злонамеренные изменения пайплайна: определения пайплайна должны быть слиты в ветку по умолчанию перед выполнением.
- Обеспечивает процесс ревью: все изменения пайплайна проходят стандартный процесс слияния и ревью.
- Последовательное поведение пайплайна: все запуски используют одни и те же определения пайплайна из ветки по умолчанию.
Сравнение конфигураций
Примечание: Согласно документации Red Hat OpenShift Pipelines, настройка default_branch рекомендуется как мера безопасности для максимальной проверки изменений пайплайна в процессе ревью слияния.
Расширение пользовательских параметров
Вы можете определить пользовательские параметры в Repository CR, которые будут расширяться во всех PipelineRun, созданных для этого репозитория. Это удобно для задания общих значений для всех пайплайнов.
Определение пользовательских параметров
Добавьте параметры в поле spec.params Repository CR:
Использование пользовательских параметров в пайплайнах
Важно: параметры 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. Они ссылаются на параметры самого PipelineRunspec.params.
Ссылайтесь на параметры Repository CR в определениях PipelineRun, используя синтаксис переменных PAC:
Как это работает:
- До создания PipelineRun: PAC заменяет все конструкции
{{ variable }}на реальные значения из параметров Repository CR и встроенных переменных - Создание PipelineRun: PAC создаёт PipelineRun с уже заменёнными переменными
- Во время выполнения: Tekton разрешает синтаксис
$(params.xxx), читая параметры изspec.paramsPipelineRun
Пример преобразования:
- В вашем Git-репозитории:
value: "{{ environment }}" - PAC заменяет на:
value: "production"(из параметра Repository CR) - PipelineRun создаётся с:
- name: environment/value: "production" - Скрипты задач используют:
$(params.environment)→ Tekton разрешает в"production"
Приоритет параметров
Параметры расширяются в следующем порядке (от высокого к низкому приоритету):
- Параметры PipelineRun: явно определённые в PipelineRun
- Параметры Repository: определённые в Repository CR
- Динамические переменные: динамические переменные PAC (например,
{{ revision }},{{ repo_url }})
Пример: конфигурация для разных окружений
Настройте разные окружения с помощью параметров Repository:
Production Repository:
Staging Repository:
Оба репозитория могут использовать одно и то же определение пайплайна, при этом параметры автоматически подставляются из Repository CR.
Комбинирование расширенных функций
Вы можете объединить все расширенные функции в одном Repository CR:
Рекомендации по лучшим практикам
1. Ограничения параллелизма
- Устанавливайте адекватные лимиты: учитывайте ресурсы кластера и требования пайплайнов
- Мониторьте использование: следите за очередью событий при слишком низких лимитах
- Динамически корректируйте: увеличивайте лимиты в периоды высокой нагрузки, уменьшайте для экономии ресурсов
2. Настройка исходной ветки
- Используйте стабильные ветки: получайте определения пайплайнов из стабильных веток (например,
main) - Тестируйте изменения пайплайнов: проверяйте изменения в feature-ветках перед слиянием в исходную ветку
- Документируйте изменения: чётко указывайте, в какой ветке находятся определения пайплайнов
3. Пользовательские параметры
- Используйте осмысленные имена: выбирайте понятные и описательные имена параметров
- Держите значения простыми: используйте простые строковые значения для параметров
- Документируйте параметры: описывайте назначение и случаи использования каждого параметра
- Избегайте секретов: не храните секреты в параметрах Repository; используйте Kubernetes Secrets
Устранение неполадок
Ограничение параллелизма не работает
-
Проверьте, что лимит установлен:
Пример вывода:
-
Проверьте наличие ожидающих событий: найдите события, ожидающие завершения PipelineRun
-
Проверьте логи контроллера PAC:
Пример вывода:
Параметры не расширяются
-
Проверьте, что параметры определены:
-
Проверьте синтаксис параметров: убедитесь, что вы используете синтаксис
{{ param }}для ссылок на параметры Repository CR, а не$(params.param) -
Проверьте замену переменных: проверьте созданный PipelineRun, чтобы увидеть, заменил ли PAC переменные:
-
Проверьте PipelineRun: убедитесь, что параметры не переопределяются в определении PipelineRun
Следующие шаги
- Configure Repository - Базовая настройка репозитория
- Maintain Pipeline Code - Руководство по определению пайплайна
- Manage PipelineRuns - Управление PipelineRun
- Common Issues - Руководство по устранению неполадок