Конфигурация хранилища S3
В этом документе описывается, как настроить S3-совместимое хранилище (например, Ceph) для архивации журналов Tekton Results.
Содержание
ОбзорОсновные преимуществаПредварительные требованияТребования к системе храненияРазрешенияОбзор конфигурацииСправка по параметрам конфигурацииПараметры, специфичные для S3, в SecretПодробности по параметрамБазовая конфигурация1. Подготовьте S3-хранилище2. Создайте Secret с учетными данными S33. Настройте ресурс TektonConfig4. Примените конфигурациюРасширенная конфигурацияНастройка custom multipart sizeКонфигурация для CephПолный пример production-конфигурацииПример конфигурации для MinIOКонфигурация максимального размера журналаНастройка Feature GateПример настройки максимального размера журналаЭксплуатацияОбновление конфигурации S3Команды для проверкиРекомендации по лучшим практикамСоображения безопасностиОптимизация производительностиУправление хранилищемПравила именованияОперационные рекомендацииРекомендации для S3-совместимых хранилищСоображения безопасностиУправление учетными даннымиСетевая безопасностьМониторинг и аудитУстранение неполадокРаспространенные проблемыПроблемы, связанные с безопасностьюДиагностические командыШаги проверкиАнализ журналовПроблемы производительностиОбзор
Tekton Results поддерживает хранение архивированных журналов в S3-совместимых системах объектного хранения, таких как Ceph, AWS S3, MinIO и т. д. Это обеспечивает масштабируемое и надежное решение для долгосрочного хранения журналов, заменяя менее эффективные механизмы хранения, такие как хранилище на основе PVC.
Основные преимущества
- Масштабируемость: объектное хранилище горизонтально масштабируется без ограничений блочного хранилища
- Надежность: встроенное резервирование и репликация в системах объектного хранения
- Экономичность: более низкая стоимость хранения по сравнению с постоянными томами
- Долгосрочное хранение: подходит для соблюдения требований и исторической диагностики
Предварительные требования
Требования к системе хранения
- S3-совместимая служба объектного хранения (Ceph, AWS S3, MinIO и т. д.)
- Доступ для создания buckets и управления учетными данными
- Сетевое подключение от вашего кластера Kubernetes к S3 endpoint
Разрешения
- Возможность создавать buckets
- Разрешения на чтение, запись и удаление для выделенного bucket журналов
- Настроенные корректные политики IAM или механизмы контроля доступа
Обзор конфигурации
Конфигурация S3-хранилища для Tekton Results включает два основных компонента:
- Учетные данные S3 и параметры подключения хранятся в Kubernetes Secrets
- Конфигурация S3 включается в кастомном ресурсе TektonConfig в
spec.result
Справка по параметрам конфигурации
Параметры, специфичные для S3, в Secret
Подробности по параметрам
- S3_BUCKET_NAME: Имя bucket S3, в котором будут храниться журналы Tekton. Убедитесь, что этот bucket существует и имеет соответствующие разрешения.
- S3_ENDPOINT: URL endpoint службы S3. Для AWS S3 этот параметр можно не указывать. Для S3-совместимых служб, таких как Ceph, MinIO и т. д., он обязателен.
- S3_REGION: Регион, в котором размещена служба S3. Для AWS S3 используйте соответствующий идентификатор региона AWS. Для S3-совместимых служб используйте идентификатор региона, настроенный в вашей службе.
- S3_ACCESS_KEY_ID и S3_SECRET_ACCESS_KEY: Учетные данные для аутентификации в службе S3.
- S3_HOSTNAME_IMMUTABLE: Используется для некоторых S3-совместимых служб, которым требуется неизменяемость hostname.
- S3_MULTI_PART_SIZE: Определяет порог размера, при котором используются multipart uploads. Большие значения могут улучшить производительность для больших файлов.
Базовая конфигурация
Для базовой настройки S3-хранилища выполните следующие шаги:
1. Подготовьте S3-хранилище
Перед настройкой Tekton Results убедитесь, что у вас есть:
- Готовая S3-совместимая система хранения (Ceph, AWS S3, MinIO и т. д.)
- Выделенный bucket для журналов Tekton
- Действительные учетные данные с соответствующими разрешениями (чтение, запись, удаление)
- Сетевое подключение от вашего кластера Kubernetes к S3 endpoint
2. Создайте Secret с учетными данными S3
Создайте Kubernetes Secret, содержащий учетные данные и конфигурацию S3:
Пошаговый процесс создания:
-
Определите параметры S3:
- Имя bucket, в котором будут храниться журналы
- URL endpoint S3 (например,
https://ceph.example.comдля Ceph) - Соответствующий идентификатор региона
- Учетные данные доступа с разрешениями на чтение/запись/удаление
-
Создайте Secret с помощью kubectl:
Пример вывода:
-
Проверьте, что Secret создан:
Пример вывода:
3. Настройте ресурс TektonConfig
Включите S3 storage в конфигурации TektonConfig:
Вы можете объединить конфигурацию S3 storage с конфигурацией внешней базы данных для полноценной production-настройки.
4. Примените конфигурацию
-
Примените конфигурацию TektonConfig:
Пример вывода:
-
Дождитесь перезапуска компонентов:
Пример вывода:
Пример вывода:
-
Проверьте, что конфигурация активна:
Пример вывода:
Расширенная конфигурация
Настройка custom multipart size
Для оптимизации производительности загрузки можно изменить размер multipart:
Конфигурация для Ceph
При использовании Ceph в качестве S3-совместимого хранилища:
- Установите
S3_HOSTNAME_IMMUTABLEв"true", если это требуется конфигурацией Ceph - Используйте корректный URL endpoint, предоставленный вашим кластером Ceph
- Убедитесь, что Ceph RGW (RADOS Gateway) правильно настроен для совместимости с S3
Полный пример production-конфигурации
Полная конфигурация, объединяющая S3 storage и внешнюю базу данных, с подробными пояснениями:
Пример конфигурации для MinIO
Пример конфигурации для объектного хранилища MinIO:
Конфигурация максимального размера журнала
Чтобы ограничить размер журналов, сохраняемых для каждого TaskRun, можно настроить параметр max-log-size с помощью поля spec.result.options в TektonConfig. ВАЖНО: Перед этим необходимо сначала включить feature gate MaxLogSize. Это enhancement-функция (на основе патча) и в настоящее время недоступна в community Tekton Results.
Настройка Feature Gate
Перед настройкой max-log-size необходимо включить feature gate MaxLogSize, задав соответствующие feature flags.
Чтобы включить feature gate, можно установить переменную окружения FEATURE_GATES со значением MaxLogSize=true:
Другой способ — настроить переменную окружения FEATURE_GATES непосредственно в deployment tekton-results-api через параметры TektonConfig:
Примечание: Флаг функции MaxLogSize обычно реализуется через конфигурацию MaxResultSize в feature flags Tekton (как видно в структуре FeatureFlags), которая управляет максимальным размером результатов, доступных для хранения.
Пример настройки максимального размера журнала
После включения feature gate можно настроить параметр max-log-size:
Сведения о конфигурации:
- Назначение: Ограничивает размер каждого журнала TaskRun, чтобы предотвратить неограниченный рост хранилища и обеспечить стабильную производительность запросов
- Значение по умолчанию: по умолчанию используется 5 MiB (5242880 байт)
- Поведение: Когда журнал TaskRun превышает настроенный лимит, система сохраняет Head журнала и отбрасывает хвост. Установите
max-log-sizeв"0", чтобы отключить это ограничение и загружать журнал полностью. - Примечание: Это enhancement-функция (на основе патча) и в настоящее время недоступна в upstream Tekton Results
- Предварительное условие: Для работы этой функциональности должен быть включен feature gate MaxLogSize.
Важное предупреждение
Это функция альфа-стадии, и ее поведение может быть изменено в более поздних версиях.
Эксплуатация
Обновление конфигурации S3
После изменения конфигурации S3 необходимо перезапустить компоненты Tekton Results, чтобы изменения вступили в силу.
Перезапустите API server:
Пример вывода:
Перезапустите watcher:
Пример вывода:
Команды для проверки
Пример вывода:
Пример вывода:
Пример вывода:
Пример вывода:
Рекомендации по лучшим практикам
Соображения безопасности
- Используйте выделенные учетные данные: создайте отдельные учетные данные S3 для Tekton Results с минимально необходимыми разрешениями (чтение, запись, удаление в конкретном bucket)
- Безопасное хранение учетных данных: храните учетные данные в Kubernetes Secrets, а не в конфигурационных файлах в открытом виде
- Регулярная ротация учетных данных: внедрите процесс периодической ротации S3 access keys (например, ежеквартально)
- Безопасность сети: обеспечьте защищенное сетевое соединение между кластером и S3 endpoint, предпочтительно через private networks или VPN
- Принцип минимальных привилегий: предоставляйте только минимально необходимые разрешения учетным данным S3
- Шифрование: убедитесь, что ваше S3-совместимое хранилище поддерживает server-side encryption для сохраненных журналов
Оптимизация производительности
- Правильный размер multipart: настройте
S3_MULTI_PART_SIZEс учетом сетевых условий (по умолчанию 5MB, но для сетей с высокой задержкой может быть лучше 10–15MB) - Размещение bucket: по возможности размещайте bucket S3 в том же регионе, что и ваш кластер, чтобы минимизировать задержку
- Мониторинг: настройте мониторинг использования S3 storage, производительности загрузки/скачивания и частоты ошибок
- Пул соединений: Tekton Results автоматически управляет пулом соединений к службам S3
- Пропускная способность: убедитесь в наличии достаточной сетевой пропускной способности между кластером и S3 storage
Управление хранилищем
- Политики хранения: внедрите lifecycle policies bucket S3 для автоматической очистки старых журналов
- Классы хранения: рассмотрите использование разных storage class S3 для разных периодов хранения журналов
- Сжатие: включите сжатие в вашем S3-совместимом хранилище, если это поддерживается
- Тегирование объектов: используйте тегирование объектов S3 для организации журналов по namespace, pipeline и другим критериям
Правила именования
- Используйте понятные имена bucket, включающие информацию об окружении (например,
tekton-logs-prod,tekton-logs-staging) - Применяйте единообразные имена для Secret (например,
tekton-results-s3-credentials) - Добавляйте префиксы, специфичные для окружения, при запуске нескольких экземпляров
- Используйте ясные и последовательные имена для ресурсов конфигурации
Операционные рекомендации
- Мониторинг состояния: регулярно отслеживайте состояние как компонентов Tekton Results, так и подключения к S3 storage
- Стратегии резервного копирования: хотя S3 обеспечивает надежность, убедитесь, что у вас есть процедуры доступа к журналам в случае сбоев системы
- Планирование емкости: планируйте рост хранилища журналов на основе типичного объема PipelineRun/TaskRun
- Тестирование: регулярно проверяйте возможность получения журналов, чтобы убедиться, что подключение к S3 остается рабочим
- Документация: поддерживайте актуальную документацию по деталям S3 endpoint и процедурам доступа
Рекомендации для S3-совместимых хранилищ
- Ceph: убедитесь, что Ceph RGW корректно настроен и протестирован на совместимость с S3
- MinIO: проверьте настройки сервера MinIO для оптимальной производительности с Tekton Results
- AWS S3: проверьте политики AWS IAM и при необходимости убедитесь в корректном cross-account доступе
- Тонкая настройка производительности: разные S3-совместимые системы хранения могут требовать разных размеров multipart или параметров подключения
Соображения безопасности
Управление учетными данными
- Безопасное хранение: храните учетные данные S3 в Kubernetes Secrets, никогда не храните их в конфигурационных файлах в открытом виде
- Контроль доступа: ограничьте доступ к Secret, содержащим учетные данные S3, с помощью RBAC
- Процесс ротации: внедрите регулярный график ротации учетных данных доступа S3
- Принцип минимальных привилегий: предоставляйте только минимально необходимые разрешения (чтение, запись, удаление в конкретном bucket)
Сетевая безопасность
- Шифрование соединений: всегда используйте HTTPS/SSL для подключения к S3-совместимому хранилищу
- Private networks: по возможности используйте private networks или VPN для подключения к S3 endpoint
- Правила firewall: настройте соответствующие правила firewall, чтобы ограничить доступ к S3 endpoint
- Проверка сертификатов: убедитесь, что для SSL-соединений настроена корректная проверка сертификатов
Мониторинг и аудит
- Журналирование доступа: включите access logging в вашем S3-совместимом хранилище для отслеживания операций
- Обнаружение аномалий: отслеживайте необычные шаблоны доступа или неудачные попытки аутентификации
- Аудиторские следы: ведите audit trail для доступа к учетным данным и изменений конфигурации
- Оповещения безопасности: настройте оповещения о событиях, связанных с безопасностью
Устранение неполадок
Распространенные проблемы
-
Ошибки подключения к S3:
- Проверьте, что URL endpoint S3 указан правильно и доступен
- Проверьте сетевое подключение от кластера к S3 endpoint
- Валидируйте SSL-сертификаты при использовании HTTPS
- Убедитесь, что endpoint доступен изнутри кластера
-
Сбои аутентификации:
- Убедитесь, что access key и secret key указаны верно
- Проверьте, что политики IAM предоставляют необходимые разрешения
- Убедитесь, что конфигурация региона соответствует региону службы S3
- Проверьте, что срок действия учетных данных не истек и они не были ротированы
-
Отказ в разрешении:
- Убедитесь, что учетные данные имеют разрешения на чтение, запись и удаление в bucket
- Проверьте, что политики bucket разрешают доступ из вашего кластера
- Убедитесь, что bucket существует и доступен с предоставленными учетными данными
-
Медленная загрузка журналов:
- Отрегулируйте размер multipart для оптимальной производительности
- Проверьте пропускную способность сети между кластером и S3 endpoint
- Убедитесь в производительности службы S3
- Отслеживайте сетевые перегрузки или throttling
-
Отсутствующие журналы:
- Убедитесь, что компонент watcher корректно захватывает журналы
- Проверьте, сохраняются ли журналы в S3, но не доступны через API
- Убедитесь, что политики хранения не удаляют журналы преждевременно
-
Проблемы конфигурации:
- Убедитесь, что все обязательные параметры S3 указаны корректно
- Проверьте, что ресурс TektonConfig настроен правильно
- Убедитесь, что Secret имеет корректный формат и доступен
Проблемы, связанные с безопасностью
-
Утечка учетных данных:
- Проверьте, что Secret не попадают в логи или сообщения об ошибках
- Убедитесь, что учетные данные не хранятся в конфигурационных файлах
- Проверьте, что политики RBAC корректно ограничивают доступ к конфиденциальным ресурсам
-
Несанкционированный доступ:
- Отслеживайте неожиданные шаблоны доступа
- Убедитесь, что к S3 storage могут обращаться только авторизованные службы
- Проверьте, что аутентификация применяется корректно
Диагностические команды
Пример вывода:
Пример вывода:
Пример вывода:
Пример вывода:
Пример вывода:
Пример вывода:
Пример вывода:
Шаги проверки
-
Проверьте, что компоненты запущены:
Пример вывода:
-
Создайте PipelineRun для загрузки журналов:
Пример вывода:
-
Проверьте подключение к S3:
- Убедитесь, что журналы появляются в вашем bucket S3
- Проверьте, что структура журналов соответствует ожиданиям
- Убедитесь, что политики хранения работают ожидаемым образом
Анализ журналов
Отслеживайте следующие ключевые журналы для диагностики конфигурации S3:
- Журналы Tekton Results API для операций загрузки и скачивания S3
- Журналы Tekton Results Watcher для первоначального захвата и передачи журналов
- Журналы службы S3 (если доступны) для подтверждения создания и удаления объектов
- Журналы событий Kubernetes для любых проблем, связанных с ресурсами
Ищите конкретные шаблоны ошибок:
- Сбои аутентификации
- Тайм-ауты подключения
- Ошибки разрешений
- Проблемы сетевого подключения
- Сбои SSL/TLS handshake
Проблемы производительности
Если возникают проблемы с производительностью:
-
Проверьте использование ресурсов:
Пример вывода:
-
Контролируйте сетевую производительность:
- Проверьте пропускную способность между кластером и S3 endpoint
- Отслеживайте потерю пакетов или высокую задержку
-
Настройте параметры multipart:
- Увеличьте
S3_MULTI_PART_SIZEдля лучшей производительности в сетях с высокой задержкой - Рассмотрите настройку размеров worker pool при обработке большого объема журналов
- Увеличьте