Конфигурация хранилища S3
В этом документе описывается, как настроить совместимое с S3 хранилище (например, Ceph) для архивирования логов Tekton Results.
Содержание
ОбзорКлючевые преимуществаПредварительные требованияТребования к системе храненияРазрешенияОбзор конфигурацииСправочник параметров конфигурацииПараметры, специфичные для S3, в секретеДетали параметровБазовая конфигурация1. Подготовьте ваше хранилище S32. Создайте секрет с учетными данными S33. Настройте ресурс TektonConfig4. Примените конфигурациюРасширенная конфигурацияНастройка размера multipartКонфигурация, специфичная для CephПример полной конфигурации для продакшенаПример конфигурации для MinIOКонфигурация максимального размера логаКонфигурация feature gateПример конфигурации max-log-sizeОперацииОбновление конфигурации S3Команды для проверкиЛучшие практикиВопросы безопасностиОптимизация производительностиУправление хранениемПравила именованияРекомендации по эксплуатацииРекомендации для совместимых с S3 хранилищВопросы безопасностиУправление учетными даннымиСетевая безопасностьМониторинг и аудитУстранение неполадокРаспространённые проблемыПроблемы, связанные с безопасностьюДиагностические командыШаги проверкиАнализ логовПроблемы с производительностьюОбзор
Tekton Results поддерживает хранение архивированных логов в объектных хранилищах, совместимых с S3, таких как Ceph, AWS S3, MinIO и др. Это обеспечивает масштабируемое и надежное решение для долгосрочного хранения логов, заменяя менее эффективные механизмы хранения, например, основанные на PVC.
Ключевые преимущества
- Масштабируемость: объектное хранилище масштабируется горизонтально без ограничений блочного хранилища
- Надежность: встроенное резервирование и репликация в системах объектного хранения
- Экономичность: более низкие затраты на хранение по сравнению с постоянными томами
- Долгосрочное хранение: подходит для соответствия требованиям и исторического анализа
Предварительные требования
Требования к системе хранения
- Объектное хранилище, совместимое с S3 (Ceph, AWS S3, MinIO и др.)
- Доступ для создания бакетов и управления учетными данными
- Сетевое соединение от вашего кластера Kubernetes до S3-эндпоинта
Разрешения
- Возможность создавать бакеты
- Права на чтение/запись/удаление для назначенного бакета логов
- Правильно настроенные IAM-политики или механизмы контроля доступа
Обзор конфигурации
Конфигурация хранилища S3 для Tekton Results включает два основных компонента:
- Учетные данные и параметры подключения к S3 хранятся в Kubernetes Secrets
- Конфигурация S3 включается в кастомном ресурсе TektonConfig в разделе
spec.result
Справочник параметров конфигурации
Параметры, специфичные для S3, в секрете
Детали параметров
- S3_BUCKET_NAME: Имя бакета S3, в котором будут храниться логи Tekton. Убедитесь, что бакет существует и имеет соответствующие права доступа.
- S3_ENDPOINT: URL эндпоинта сервиса S3. Для AWS S3 можно не указывать. Для совместимых с S3 сервисов, таких как Ceph, MinIO и др., обязательно.
- S3_REGION: Регион, где размещён сервис S3. Для AWS S3 используйте идентификатор региона AWS. Для совместимых сервисов — регион, настроенный в вашем сервисе.
- S3_ACCESS_KEY_ID и S3_SECRET_ACCESS_KEY: Учетные данные для аутентификации в сервисе S3.
- S3_HOSTNAME_IMMUTABLE: Используется для некоторых совместимых с S3 сервисов, требующих неизменности имени хоста.
- S3_MULTI_PART_SIZE: Определяет порог размера для использования multipart-загрузок. Большие значения могут улучшить производительность при загрузке больших файлов.
Базовая конфигурация
Для базовой настройки хранилища S3 выполните следующие шаги:
1. Подготовьте ваше хранилище S3
Перед настройкой Tekton Results убедитесь, что у вас есть:
- Готовая система хранения, совместимая с S3 (Ceph, AWS S3, MinIO и др.)
- Выделенный бакет для логов Tekton
- Действительные учетные данные с необходимыми правами (чтение, запись, удаление)
- Сетевое соединение от вашего кластера Kubernetes до S3-эндпоинта
2. Создайте секрет с учетными данными S3
Создайте Kubernetes Secret, содержащий ваши учетные данные и конфигурацию S3:
Пошаговый процесс создания:
-
Определите параметры S3:
- Имя бакета для хранения логов
- URL эндпоинта S3 (например,
https://ceph.example.comдля Ceph) - Соответствующий идентификатор региона
- Учетные данные с правами чтения/записи/удаления
-
Создайте секрет с помощью kubectl:
Пример вывода:
-
Проверьте создание секрета:
Пример вывода:
3. Настройте ресурс TektonConfig
Включите хранение S3 в конфигурации TektonConfig:
Вы можете комбинировать конфигурацию хранения S3 с настройкой внешней базы данных для полноценного продакшен-окружения.
4. Примените конфигурацию
-
Примените конфигурацию TektonConfig:
Пример вывода:
-
Дождитесь перезапуска компонентов:
Пример вывода:
Пример вывода:
-
Проверьте, что конфигурация активна:
Пример вывода:
Расширенная конфигурация
Настройка размера multipart
Для оптимизации производительности загрузки можно изменить размер частей multipart:
Конфигурация, специфичная для Ceph
При использовании Ceph как совместимого с S3 хранилища:
- Установите
S3_HOSTNAME_IMMUTABLEв"true", если это требуется вашей конфигурацией Ceph - Используйте корректный URL эндпоинта, предоставленный вашим кластером Ceph
- Убедитесь, что ваш Ceph RGW (RADOS Gateway) правильно настроен для совместимости с S3
Пример полной конфигурации для продакшена
Полная конфигурация, объединяющая хранение S3 и внешнюю базу данных с подробными комментариями:
Пример конфигурации для MinIO
Пример настройки для объектного хранилища MinIO:
Конфигурация максимального размера лога
Для ограничения размера логов, хранящихся для каждого TaskRun, можно настроить параметр max-log-size через поле spec.result.options в TektonConfig. ВАЖНО: Для этого сначала нужно включить feature gate MaxLogSize. Эта функция является улучшением (патчем) и пока недоступна в сообществе Tekton Results.
Конфигурация feature gate
Перед настройкой max-log-size необходимо включить feature gate MaxLogSize, установив соответствующие флаги.
Для включения feature gate можно задать переменную окружения FEATURE_GATES со значением MaxLogSize=true:
Другой способ — настроить переменную окружения FEATURE_GATES непосредственно в деплойменте tekton-results-api через опции TektonConfig:
Примечание: Флаг MaxLogSize обычно реализуется через MaxResultSize в конфигурации feature flags Tekton (как в структуре FeatureFlags), который контролирует максимальный размер сохраняемых результатов.
Пример конфигурации max-log-size
После включения feature gate можно настроить параметр max-log-size:
Детали конфигурации:
- Назначение: ограничивает размер каждого лога TaskRun, чтобы предотвратить неограниченный рост хранилища и обеспечить стабильную производительность запросов
- По умолчанию: используется 5 МБ (5242880 байт)
- Поведение: если лог TaskRun превышает установленный лимит, сохраняется начало лога, а хвост отбрасывается. Установите
max-log-sizeв "0", чтобы отключить ограничение и загружать полный лог. - Примечание: это функция улучшения (патч), пока недоступная в официальном Tekton Results
- Предварительное условие: feature gate MaxLogSize должен быть включен
Важное предупреждение
Это функция на стадии альфа, поведение может измениться в будущих версиях.
Операции
Обновление конфигурации S3
После изменения конфигурации S3 необходимо перезапустить компоненты Tekton Results, чтобы изменения вступили в силу.
Перезапуск API сервера:
Пример вывода:
Перезапуск watcher:
Пример вывода:
Команды для проверки
Пример вывода:
Пример вывода:
Пример вывода:
Пример вывода:
Лучшие практики
Вопросы безопасности
- Используйте выделенные учетные данные: создавайте отдельные учетные данные S3 для Tekton Results с минимально необходимыми правами (чтение, запись, удаление в конкретном бакете)
- Безопасное хранение учетных данных: храните учетные данные в Kubernetes Secrets, а не в открытых конфигурационных файлах
- Регулярная ротация ключей: внедрите процесс периодической смены ключей доступа S3 (например, ежеквартально)
- Сетевая безопасность: обеспечьте защищенное сетевое соединение между кластером и S3-эндпоинтом, предпочтительно через приватные сети или VPN
- Принцип наименьших привилегий: предоставляйте только минимально необходимые права для учетных данных S3
- Шифрование: убедитесь, что ваше совместимое с S3 хранилище поддерживает серверное шифрование для сохраненных логов
Оптимизация производительности
- Правильный размер multipart: настройте
S3_MULTI_PART_SIZEв зависимости от условий сети (по умолчанию 5 МБ, но 10-15 МБ может быть лучше для сетей с высокой задержкой) - Расположение бакета: размещайте бакет S3 в том же регионе, что и ваш кластер, чтобы минимизировать задержки
- Мониторинг: настройте мониторинг использования хранилища S3, производительности загрузок/выгрузок и количества ошибок
- Пул соединений: Tekton Results автоматически управляет пулом соединений с сервисами S3
- Пропускная способность: обеспечьте достаточную пропускную способность сети между кластером и хранилищем S3
Управление хранением
- Политики хранения: внедрите lifecycle-политики бакета S3 для автоматической очистки старых логов
- Классы хранения: рассмотрите использование различных классов хранения S3 для разных периодов хранения логов
- Сжатие: включайте сжатие в совместимом с S3 хранилище, если поддерживается
- Тегирование объектов: используйте тегирование объектов S3 для организации логов по namespace, pipeline и другим критериям
Правила именования
- Используйте описательные имена бакетов, включающие информацию об окружении (например,
tekton-logs-prod,tekton-logs-staging) - Применяйте единообразные имена для секретов (например,
tekton-results-s3-credentials) - Добавляйте префиксы, специфичные для окружения, при запуске нескольких инстансов
- Используйте понятные и последовательные имена для конфигурационных ресурсов
Рекомендации по эксплуатации
- Мониторинг состояния: регулярно контролируйте состояние компонентов Tekton Results и подключение к хранилищу S3
- Стратегии резервного копирования: несмотря на надежность S3, обеспечьте процедуры доступа к логам при сбоях системы
- Планирование емкости: планируйте рост хранилища логов исходя из объема PipelineRun/TaskRun
- Тестирование: регулярно проверяйте функциональность получения логов, чтобы убедиться в работоспособности подключения к S3
- Документация: поддерживайте актуальную документацию с деталями эндпоинтов S3 и процедурами доступа
Рекомендации для совместимых с S3 хранилищ
- Ceph: убедитесь, что ваш Ceph RGW корректно настроен и протестирован на совместимость с S3
- MinIO: проверьте настройки сервера MinIO для оптимальной работы с Tekton Results
- AWS S3: проверьте IAM-политики AWS и обеспечьте правильный кросс-аккаунтный доступ, если применимо
- Тонкая настройка производительности: разные совместимые с S3 системы могут требовать различных настроек multipart или соединений
Вопросы безопасности
Управление учетными данными
- Безопасное хранение: храните учетные данные S3 в Kubernetes Secrets, никогда не в открытых конфигурационных файлах
- Контроль доступа: ограничьте доступ к секретам с учетными данными S3 с помощью RBAC
- Процесс ротации: внедрите регулярную смену ключей доступа S3
- Принцип наименьших привилегий: предоставляйте только минимально необходимые права (чтение, запись, удаление в конкретном бакете)
Сетевая безопасность
- Шифрованные соединения: всегда используйте HTTPS/SSL для подключения к совместимому с S3 хранилищу
- Приватные сети: по возможности используйте приватные сети или VPN для подключения к S3-эндпоинтам
- Правила файрвола: настройте соответствующие правила файрвола для ограничения доступа к S3-эндпоинтам
- Проверка сертификатов: обеспечьте корректную проверку сертификатов для SSL-соединений
Мониторинг и аудит
- Логирование доступа: включите логирование доступа в вашем совместимом с S3 хранилище для отслеживания операций
- Обнаружение аномалий: следите за необычными паттернами доступа или неудачными попытками аутентификации
- Аудит: ведите аудит доступа к учетным данным и изменениям конфигурации
- Оповещения безопасности: настройте оповещения по событиям, связанным с безопасностью
Устранение неполадок
Распространённые проблемы
-
Ошибки подключения к S3:
- Проверьте правильность и доступность URL эндпоинта S3
- Проверьте сетевое соединение от кластера до S3-эндпоинта
- Проверьте SSL-сертификаты при использовании HTTPS
- Убедитесь, что эндпоинт доступен изнутри кластера
-
Ошибки аутентификации:
- Проверьте правильность ключа доступа и секретного ключа
- Убедитесь, что IAM-политики предоставляют необходимые права
- Проверьте, что регион совпадает с регионом сервиса S3
- Убедитесь, что учетные данные не истекли и не были изменены
-
Отказ в доступе:
- Убедитесь, что учетные данные имеют права на чтение/запись/удаление в бакете
- Проверьте политики бакета на разрешение доступа из вашего кластера
- Убедитесь, что бакет существует и доступен с указанными учетными данными
-
Медленная загрузка логов:
- Настройте размер multipart для оптимальной производительности
- Проверьте пропускную способность сети между кластером и S3
- Проверьте производительность сервиса S3
- Следите за сетевыми задержками или ограничениями
-
Отсутствие логов:
- Проверьте, что компонент watcher корректно захватывает логи
- Проверьте, что логи сохраняются в S3 и доступны через API
- Убедитесь, что политики хранения не удаляют логи преждевременно
-
Проблемы конфигурации:
- Убедитесь, что все обязательные параметры S3 указаны корректно
- Проверьте правильность конфигурации ресурса TektonConfig
- Убедитесь, что секреты корректно сформированы и доступны
Проблемы, связанные с безопасностью
-
Утечка учетных данных:
- Проверьте, что секреты не выводятся в логи или сообщения об ошибках
- Убедитесь, что учетные данные не хранятся в открытых конфигурационных файлах
- Проверьте, что RBAC-политики ограничивают доступ к чувствительным ресурсам
-
Несанкционированный доступ:
- Следите за неожиданными паттернами доступа
- Убедитесь, что только авторизованные сервисы имеют доступ к хранилищу S3
- Проверьте корректность аутентификации
Диагностические команды
Пример вывода:
Пример вывода:
Пример вывода:
Пример вывода:
Пример вывода:
Пример вывода:
Пример вывода:
Шаги проверки
-
Проверьте, что компоненты запущены:
Пример вывода:
-
Создайте PipelineRun для загрузки логов:
Пример вывода:
-
Проверьте подключение к S3:
- Убедитесь, что логи появляются в вашем бакете S3
- Проверьте структуру логов на соответствие ожиданиям
- Подтвердите, что политики хранения работают корректно
Анализ логов
Для диагностики конфигурации S3 отслеживайте следующие ключевые логи:
- Логи Tekton Results API для операций загрузки/выгрузки в S3
- Логи Tekton Results Watcher для захвата и передачи логов
- Логи сервиса S3 (если доступны) для подтверждения создания/удаления объектов
- Логи событий Kubernetes для проблем с ресурсами
Обращайте внимание на следующие ошибки:
- Ошибки аутентификации
- Таймауты соединения
- Ошибки прав доступа
- Проблемы сетевого соединения
- Ошибки SSL/TLS рукопожатия
Проблемы с производительностью
Если возникают проблемы с производительностью:
-
Проверьте использование ресурсов:
Пример вывода:
-
Мониторинг сетевой производительности:
- Проверьте пропускную способность между кластером и S3-эндпоинтом
- Следите за потерями пакетов и высокой задержкой
-
Настройка multipart:
- Увеличьте
S3_MULTI_PART_SIZEдля улучшения производительности в сетях с высокой задержкой - Рассмотрите настройку размеров пулов воркеров при обработке большого объема логов
- Увеличьте