Конфигурация Namespace
Настройте разные политики pruning для каждого namespace в зависимости от требований к хранению в конкретной среде.
Содержание
Иерархия конфигурацииГраницы валидацииСпособ 1: Inline Namespace Specs (централизованно)Способ 2: ConfigMap для каждого namespace (self-service)Правила валидации1. Явные global limits2. Системные значения по умолчанию3. Переопределение defaultsНаследование конфигурацииПоддержка selectorsРаспространенные шаблоныРекомендацииДальнейшие шагиИерархия конфигурации
Поток настроек: Global → Namespace → Resource Group
Установите enforcedConfigLevel: namespace в global config, чтобы включить переопределения на уровне namespace.
Границы валидации
КРИТИЧНО - Границы системы: Создавайте ConfigMap на уровне namespace ТОЛЬКО в пользовательских namespaces, где выполняются PipelineRuns/TaskRuns.
ЗАПРЕЩЕННЫЕ namespaces (валидация отклонит):
- System:
kube-* - Tekton controllers:
tekton-pipelines,tekton-*
Обязательные labels для всех конфигураций:
ConfigMap на уровне namespace находятся вне жизненного цикла TektonConfig. Если позже потребуется выполнить backup или restore конфигурации Tekton, сохраните эти ConfigMap отдельно.
Способ 1: Inline Namespace Specs (централизованно)
Определите все конфигурации namespace в TektonConfig:
Способ 2: ConfigMap для каждого namespace (self-service)
Рекомендуется для изоляции namespace и автономности команд.
Шаг 1: Включите конфигурацию на уровне namespace в TektonConfig:
Шаг 2: Создайте ConfigMap, специфичный для namespace (фиксированное имя: tekton-pruner-namespace-spec):
Преимущества:
- Self-service для владельцев namespace
- Независимое управление жизненным циклом
- Имеет приоритет над global config
Правила валидации
Конфигурации namespace проверяются на соответствие ограничениям, чтобы предотвратить исчерпание ресурсов.
1. Явные global limits
Если global config задает limit, конфигурации namespace не могут его превышать.
2. Системные значения по умолчанию
Если global limit не задан, система применяет следующие максимумы:
Пример:
3. Переопределение defaults
Администраторы кластера могут задать более строгие ограничения через global config. Глобальные limits переопределяют системные defaults, но не могут превышать системные максимумы.
Наследование конфигурации
Неуказанные настройки наследуются с более высоких уровней:
Поддержка selectors
ВАЖНО: Resource selectors (matchLabels, matchAnnotations) работают только в ConfigMap на уровне namespace (tekton-pruner-namespace-spec), а НЕ во встроенных namespace specs global ConfigMap.
Это работает (namespace ConfigMap):
Это ИГНОРИРУЕТСЯ (inline namespace в global ConfigMap):
Для resource groups на основе selectors используйте отдельные namespace ConfigMap (Способ 2).
Распространенные шаблоны
На основе среды:
Рекомендации
- Используйте понятные соглашения об именовании namespace
- Начинайте с более разрешительных limits в development
- Применяйте более строгие политики retention в production
- Документируйте решения по конфигурации namespace
- Регулярно пересматривайте и корректируйте настройки
- Проверяйте конфигурации перед развертыванием
- Используйте namespace ConfigMap для групп на основе selectors
Дальнейшие шаги
- Узнайте больше о Resource Groups - конфигурации на основе selectors
- Изучите Time-based Pruning - стратегии TTL
- Ознакомьтесь с History-based Pruning - limits хранения