Настройка политики хранения
Политика хранения 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
Параметры конфигурации
-
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"}
Проверка
Чтобы быстро проверить, что политика хранения работает ожидаемым образом, выполните следующие шаги:
-
Создайте тестовые результаты/логи: Сгенерируйте несколько Tekton PipelineRuns или TaskRuns, которые создадут результаты и логи в базе данных Tekton Results.
# Create a sample PipelineRun to generate test data
kubectl apply -f sample-pipelinerun.yaml
-
Проверьте исходное состояние: Убедитесь, что результаты и логи присутствуют в базе данных и в 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
-
Измените политику хранения для тестирования: Временно задайте очень короткий срок хранения и конкретное расписание 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)
-
Примените измененную конфигурацию: Примените временную тестовую конфигурацию и дождитесь перезапуска агента политики хранения.
kubectl apply -f tekton-config-test-config.yaml
kubectl rollout restart -n tekton-pipelines deployment/tekton-results-retention-policy-agent
-
Отслеживайте логи агента политики хранения: Просматривайте логи агента, чтобы убедиться, что операции очистки выполняются.
kubectl logs -n tekton-pipelines deployment/tekton-results-retention-policy-agent -f
-
Проверьте, что очистка выполнена: После выполнения расписания хранения убедитесь, что старые результаты и логи были удалены.
# 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
-
Вернитесь к производственным настройкам: После проверки верните политику хранения к нужным значениям для production.
Предупреждение: Будьте осторожны при задании очень коротких сроков хранения, так как это приведет к немедленному удалению результатов. Для проверки используйте тестовую среду.