Расширенная конфигурация репозитория
Это руководство предназначено для обычных пользователей, которым необходимы расширенные настройки Repository CR, такие как ограничения параллелизма, настройка исходной ветки и расширение пользовательских параметров.
В этом руководстве объясняются расширенные параметры конфигурации для Custom Resources Repository, включая:
- Глобальный Repository CR для автоматического наследования конфигурации (Tech Preview)
- Ограничения параллелизма
- Настройка исходной ветки
- Расширение пользовательских параметров
Содержание
Предварительные требованияСоздание глобального Repository CRПример: глобальный Repository CRПример: использование глобальных настроекНастройка ограничений параллелизмаНастройка ограничения параллелизмаПримеры использованияПроверка ограничения параллелизмаИзменение исходной ветки для определения PipelineНастройка источника определения PipelineRunПреимущества безопасностиСравнение конфигурацийРасширение пользовательских параметровОпределение пользовательских параметровИспользование пользовательских параметров в pipelineПриоритет параметровПример: конфигурация для разных окруженийКомбинирование расширенных функцийЛучшие практики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 с минимальной конфигурацией:
Настройка ограничений параллелизма
Ограничения параллелизма помогают предотвратить исчерпание ресурсов при одновременном запуске множества pipeline. Вы можете задать максимальное количество одновременных PipelineRuns, которые могут выполняться для репозитория.
Настройка ограничения параллелизма
Отредактируйте ваш Repository CR, добавив поле concurrency_limit:
Важно:
- Минимальное значение —
1 - Если не указано, ограничение отсутствует (неограниченное количество одновременных PipelineRuns)
- При достижении лимита новые события будут ставиться в очередь до завершения PipelineRun
Примеры использования
Репозиторий с высокой нагрузкой: ограничьте параллельные запуски, чтобы избежать перегрузки кластера:
Ресурсоёмкие pipeline: ограничьте количество, чтобы обеспечить достаточные ресурсы на запуск:
Без ограничений (по умолчанию): разрешить неограниченное количество параллельных запусков:
Проверка ограничения параллелизма
Проверьте Repository CR:
Пример вывода (сокращённо):
Отслеживайте запущенные PipelineRuns:
Пример вывода:
Изменение исходной ветки для определения 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 и получить доступ к инфраструктуре.
- Предотвращает злонамеренные изменения pipeline: определения pipeline должны быть слиты в ветку по умолчанию перед выполнением.
- Обеспечивает процесс ревью: все изменения pipeline проходят стандартный процесс слияния/ревью.
- Стабильное поведение pipeline: все запуски используют одинаковые определения pipeline из ветки по умолчанию.
Сравнение конфигураций
Примечание: Согласно документации Red Hat OpenShift Pipelines, настройка default_branch рекомендуется как мера безопасности для максимальной проверки изменений pipeline в процессе ревью слияния.
Расширение пользовательских параметров
Вы можете определить пользовательские параметры в Repository CR, которые будут расширяться во всех PipelineRuns, созданных для этого репозитория. Это удобно для задания общих значений для всех 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. Они ссылаются на параметры самого 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:
Оба репозитория могут использовать одно и то же определение pipeline, с параметрами, автоматически подставляемыми из Repository CR.
Комбинирование расширенных функций
Вы можете объединить все расширенные функции в одном Repository CR:
Лучшие практики
1. Ограничения параллелизма
- Устанавливайте адекватные лимиты: учитывайте ресурсы кластера и требования pipeline
- Мониторьте использование: следите за очередями событий при слишком низких лимитах
- Динамически регулируйте: увеличивайте лимиты в периоды высокой нагрузки, уменьшайте для экономии ресурсов
2. Настройка исходной ветки
- Используйте стабильные ветки: получайте определения pipeline из стабильных веток (например,
main) - Тестируйте изменения pipeline: проверяйте изменения в feature-ветках перед слиянием в исходную ветку
- Документируйте изменения: чётко фиксируйте, в какой ветке находятся определения pipeline
3. Пользовательские параметры
- Используйте осмысленные имена: выбирайте понятные и описательные имена параметров
- Держите значения простыми: используйте простые строковые значения
- Документируйте параметры: описывайте назначение и случаи использования каждого параметра
- Избегайте секретов: не храните секреты в параметрах Repository; используйте Kubernetes Secrets
Устранение неполадок
Ограничение параллелизма не работает
-
Проверьте, что лимит установлен:
Пример вывода:
-
Проверьте наличие очереди событий: ищите события, ожидающие завершения PipelineRuns
-
Проверьте логи контроллера PAC:
Пример вывода:
Параметры не расширяются
-
Проверьте, что параметры определены:
-
Проверьте синтаксис параметров: убедитесь, что используете синтаксис
{{ param }}для параметров Repository CR, а не$(params.param) -
Проверьте замену переменных: проверьте созданный PipelineRun, чтобы увидеть, заменил ли PAC переменные:
-
Проверьте PipelineRun: убедитесь, что параметры не переопределяются в определении PipelineRun
Следующие шаги
- Configure Repository - Базовая настройка репозитория
- Maintain Pipeline Code - Руководство по определению pipeline
- Manage PipelineRuns - Управление PipelineRun
- Common Issues - Руководство по устранению неполадок