• Русский
  • Конфигурация политики хранения

    Политика хранения Tekton Results обеспечивает автоматическую очистку как записей базы данных, так и архивных логов в системах хранения, совместимых с S3. Агент хранения периодически удаляет просроченные результаты и связанные с ними лог-файлы в соответствии с настраиваемыми временными политиками.

    Конфигурация

    Политики хранения настраиваются через пользовательский ресурс TektonConfig с помощью поля spec.result.options, где задаются переопределения ConfigMap:

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      result:
        logs_api: true
        logs_type: S3
        secret_name: my-s3-secret
        is_external_db: true
        db_host: your-postgres-host.example.com
        db_port: 5432
        db_name: tekton_results
        db_sslmode: require
        db_secret_name: tekton-results-postgres
        options:
          configMaps:
            tekton-results-config-results-retention-policy:
              data:
                defaultRetention: "30"  # Количество дней хранения результатов (30 дней)
                runAt: "0 2 * * *"      # Расписание cron: ежедневно в 2:00

    Параметры конфигурации

    ПолеОписаниеПример значенияОбязательно
    defaultRetentionКоличество дней хранения результатов до удаления"30"Да
    runAtРасписание cron для запуска агента хранения"0 2 * * *"Да
    • defaultRetention: Указывает количество дней, в течение которых результаты хранятся до автоматического удаления. По истечении этого срока будут очищены как записи в базе данных, так и связанные лог-файлы в хранилище S3.

    • runAt: Cron-выражение, определяющее время запуска агента хранения.

      • "0 2 * * *" — ежедневно в 2:00
      • "0 2 * * 0" — еженедельно по воскресеньям в 2:00
      • "0 2 1 * *" — ежемесячно первого числа в 2:00

    Применение конфигурации

    Примените конфигурацию TektonConfig:

    kubectl apply -f tekton-config-retention-config.yaml

    Пример вывода:

    tektonconfig.operator.tekton.dev/config configured

    Дождитесь перезапуска агента хранения:

    kubectl rollout status -n tekton-pipelines deployment/tekton-results-retention-policy-agent

    Пример вывода:

    deployment "tekton-results-retention-policy-agent" successfully rolled out

    Проверьте, что конфигурация активна:

    kubectl get pods -n tekton-pipelines -l app.kubernetes.io/name=tekton-results-retention-policy-agent

    Пример вывода:

    NAME                                                   READY   STATUS    RESTARTS   AGE
    tekton-results-retention-policy-agent-5c9g2            1/1     Running   0          5m

    Важное замечание

    Важно: Унифицированная функция очистки (удаление как записей базы данных, так и логов в S3 одновременно) является улучшением (патчем) и в настоящее время недоступна в сообществе Tekton Results. В версии сообщества удаляются только записи базы данных, а лог-файлы в хранилище S3 остаются, что может привести к неограниченному росту объема хранения.

    Проверьте конфигурацию хранения TektonConfig:

    kubectl get tektonconfig config -o yaml

    Пример вывода (сокращённый):

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      result:
        logs_api: true
        logs_type: S3
        secret_name: my-s3-secret
        is_external_db: true
        db_host: your-postgres-host.example.com
        options:
          configMaps:
            tekton-results-config-results-retention-policy:
              data:
                defaultRetention: "30"
                runAt: "0 2 * * *"

    Проверьте логи агента хранения:

    kubectl logs -n tekton-pipelines deployment/tekton-results-retention-policy-agent

    Пример вывода:

    {"level":"info","ts":"2023-05-15T10:30:45.123Z","caller":"retention/main.go:89","msg":"Starting Tekton Results retention policy agent"}
    {"level":"info","ts":"2023-05-15T10:30:45.124Z","caller":"retention/agent.go:45","msg":"Retention policy configured: 30 days, schedule: 0 2 * * *"}
    {"level":"info","ts":"2023-05-15T10:30:45.125Z","caller":"retention/scheduler.go:123","msg":"Next execution scheduled for: 2023-05-16T02:00:00Z"}

    Проверка

    Для быстрой проверки работы политики хранения выполните следующие шаги:

    1. Создайте тестовые результаты/логи: Сгенерируйте несколько PipelineRuns или TaskRuns в Tekton, которые создадут результаты и логи в вашей базе Tekton Results.

      # Создать пример PipelineRun для генерации тестовых данных
      kubectl apply -f sample-pipelinerun.yaml
    2. Проверьте исходное состояние: Убедитесь, что результаты и логи присутствуют в базе данных и в хранилище S3 (если применимо).

      # Проверить Tekton Results
      tkn results list
      
      # Или выполнить запрос напрямую к базе, если доступно
      kubectl exec -it -n tekton-pipelines deployment/tekton-results-read-api -- grpcurl -plaintext -d '{}' localhost:8080 api.v1alpha2.Results.ListResults
    3. Измените политику хранения для теста: Временно установите очень короткий срок хранения и конкретное cron-расписание для тестирования (например, выполнить один раз через 10 минут от текущего времени).

      options:
        configMaps:
          tekton-results-config-results-retention-policy:
            data:
              defaultRetention: "0"  # Хранить 0 дней (немедленная очистка)
              # Выполнить один раз в конкретное время (текущее время + 10 минут)
              # Пример: если текущее время 14:30, установить "40 14 * * *" для 14:40
              # Измените значение минут на текущее + 10 (с учётом корректировки дня/часа при необходимости)
              runAt: "40 14 * * *"  # Пример: запуск в 14:40 (примерно текущее время + 10 мин)
    4. Примените изменённую конфигурацию: Примените временную тестовую конфигурацию и дождитесь перезапуска агента хранения.

      kubectl apply -f tekton-config-test-config.yaml
      kubectl rollout restart -n tekton-pipelines deployment/tekton-results-retention-policy-agent
    5. Отслеживайте логи агента хранения: Следите за логами агента, чтобы подтвердить выполнение операций очистки.

      kubectl logs -n tekton-pipelines deployment/tekton-results-retention-policy-agent -f
    6. Проверьте, что очистка произошла: После выполнения расписания убедитесь, что старые результаты и логи были удалены.

      # Проверить, что результаты очищены
      tkn results list
      
      # Также проверьте хранилище S3, чтобы убедиться, что лог-файлы удалены
      # Используйте ваш S3-клиент для просмотра объектов в бакете
      aws s3 ls s3://your-bucket-name/path/to/tekton-logs/ --recursive
    7. Верните настройки в рабочее состояние: После проверки восстановите политику хранения с нужными значениями для продакшена.

    Предупреждение: Будьте осторожны при установке очень коротких сроков хранения, так как это приведёт к немедленному удалению результатов. Для проверки используйте тестовую среду.