• Русский
  • Настройка политики хранения

    Политика хранения 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"  # Days to retain results (30 days)
                runAt: "0 2 * * *"      # Cron schedule: daily at 2 AM

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

    FieldDescriptionExample ValueRequired
    defaultRetentionNumber of days to retain results before deletion"30"Yes
    runAtCron schedule for running the retention agent"0 2 * * *"Yes
    • defaultRetention: Указывает количество дней, в течение которых результаты сохраняются перед автоматическим удалением. По истечении этого срока будут очищены как записи в базе данных, так и связанные с ними полезные данные логов в S3 storage.

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

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

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

    Примените конфигурацию 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) является улучшением (на основе патча) и в настоящее время недоступна в community-версии Tekton Results. В community-версии удаляются только записи базы данных, а полезные данные логов остаются в S3 storage, что может привести к неограниченному росту объема хранилища.

    Проверьте конфигурацию хранения в 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. Создайте тестовые результаты/логи: Сгенерируйте несколько Tekton PipelineRuns или TaskRuns, которые создадут результаты и логи в базе данных Tekton Results.

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

      # Check Tekton Results
      tkn results list
      
      # Or query directly from the database if accessible
      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"  # Retain for 0 days (immediate cleanup)
              # Execute once at a specific time (current time + 10 minutes)
              # Example: If current time is 14:30, set to "40 14 * * *" for 14:40
              # Modify the minute value to current minute + 10 (with day/hour adjusted if needed)
              runAt: "40 14 * * *"  # Example: run at 14:40 (current time + 10 mins approx)
    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. Проверьте, что очистка выполнена: После выполнения расписания хранения убедитесь, что старые результаты и логи были удалены.

      # Check if results have been cleaned up
      tkn results list
      
      # Also check S3 storage to verify log files have been cleaned up
      # Use your S3 client to list objects in the bucket
      aws s3 ls s3://your-bucket-name/path/to/tekton-logs/ --recursive
    7. Вернитесь к производственным настройкам: После проверки верните политику хранения к нужным значениям для production.

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