• Русский
  • Регулярная очистка ресурсов TaskRun и PipelineRun

    Обзор

    Автоматическая очистка ресурсов TaskRun и PipelineRun в Tekton с использованием функции Pruner. Pruner работает в фоновом режиме, выполняя команду tkn для очистки ресурсов.

    Сценарии использования

    • Регулярная очистка ресурсов TaskRun
    • Регулярная очистка ресурсов PipelineRun
    • Настройка различных стратегий очистки в зависимости от пространств имен

    Предварительные требования

    • Компонент Tekton Operator должен быть установлен
    • Ресурс TektonConfig должен быть автоматически создан в среде

    Шаги

    Шаг 1

    Отредактируйте ресурс TektonConfig

    $ kubectl edit tektonconfigs.operator.tekton.dev config

    Шаг 2

    Измените конфигурацию spec.pruner, как показано ниже:

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      pruner:
        # Отключить функциональность pruner, по умолчанию false
        disabled: false
        # Cron-выражение для запланированной очистки
        schedule: "0 8 * * *"
        # Необязательно: срок начала задачи (в секундах)
        startingDeadlineSeconds: 100
        # Типы ресурсов для очистки
        resources:
          - taskrun
          - pipelinerun
        # Количество ресурсов для хранения
        keep: 3
        # Применить стратегии очистки отдельно для каждого типа ресурса
        prune-per-resource: true
        # Сохранять ресурсы в течение определенного времени (в минутах)
        # keep-since: 1440
        # Примечание: можно использовать только одно из keep и keep-since

    Краткие описания ключевых конфигураций:

    • disabled: Устанавливая в true, отключает функциональность pruner (значение по умолчанию: false)
    • schedule: График выполнения задачи очистки, использующий формат cron-выражения
    • startingDeadlineSeconds: Необязательная конфигурация для крайнего срока начала задачи (в секундах). Если задача пропускает запланированное время и превышает эту продолжительность, она считается неудачной
    • resources: Поддерживаемые типы ресурсов для очистки, включая taskrun и pipelinerun
    • keep: Максимальное количество ресурсов, которые можно задержать во время очистки
    • keep-since: Удерживать ресурсы в течение определенного времени (в минутах)
    • prune-per-resource: Устанавливая в true (значение по умолчанию - false), применяет конфигурацию keep отдельно для каждого ресурса
      • Например: Если в пространстве имен ns-1 есть два Pipeline с именами pipeline-1 и pipeline-2, будут выполнены следующие команды:
        tkn pipelinerun delete --pipeline=my-pipeline-1 --keep=3 --namespace=ns-1
        tkn pipelinerun delete --pipeline=my-pipeline-2 --keep=3 --namespace=ns-1
      • Примечание: При использовании keep-since включение prune-per-resource=true не имеет практического смысла, так как keep-since основывается на временных ограничениях для ресурсов, не связанных с их количеством.
    Note

    Если disabled: false и schedule пустое, глобальная задача очистки будет отключена. Однако, если в пространстве имен присутствует аннотация operator.tekton.dev/prune.schedule с заданным значением, будет создана задача очистки для этого пространства имен.

    Шаг 3

    Настройте стратегии очистки через аннотации пространства имен (опционально)

    По умолчанию задача pruner будет использовать глобальную конфигурацию (spec.pruner), однако пользователи могут настроить конфигурацию pruner для конкретных пространств имен с помощью следующих аннотаций. Если некоторые аннотации отсутствуют или имеют недопустимые значения, будут использованы значения глобальной конфигурации, или пространство имен будет пропущено.

    Поддерживаемые аннотации:

    • operator.tekton.dev/prune.skip: Установив в true, пропустит задачу очистки для этого пространства имен
    • operator.tekton.dev/prune.schedule: Устанавливает график очистки для этого пространства имен
    • operator.tekton.dev/prune.keep: Устанавливает максимальное количество ресурсов для хранения
    • operator.tekton.dev/prune.keep-since: Устанавливает период хранения ресурсов в течение установленного времени (в минутах)
    • operator.tekton.dev/prune.prune-per-resource: Устанавливает, нужно ли применять стратегию очистки отдельно для каждого ресурса
    • operator.tekton.dev/prune.resources: Устанавливает типы ресурсов для очистки, которые могут быть taskrun и/или pipelinerun, с несколькими значениями, разделенными запятыми
    • operator.tekton.dev/prune.strategy: Устанавливает стратегию очистки с необязательными значениями keep или keep-since

    Пример:

    $ kubectl annotate namespace default \
        operator.tekton.dev/prune.schedule="0 1 * * *" \
        operator.tekton.dev/prune.keep="5" \
        operator.tekton.dev/prune.resources="taskrun,pipelinerun"

    ::: note Если глобальная конфигурация не установлена, будут использованы следующие значения по умолчанию:

    • resources: pipelinerun
    • keep: 100 :::

    Результаты

    После завершения конфигурации система автоматически будет очищать устаревшие ресурсы TaskRun и PipelineRun в соответствии с установленным графиком.

    Ссылки