Конфигурация базы данных
Этот документ описывает, как настроить базу данных, требуемую для Tekton Results.
В настоящее время мы поддерживаем только подключение к внешним базам данных. Это связано с тем, что:
- Встроенная база данных не обладает важнейшими возможностями для production-среды, такими как резервное копирование, мониторинг, высокая доступность и расширенные функции управления. Она предоставляет только базовые возможности хранения и запросов, что делает её непригодной для production-окружений.
- Внешние базы данных предоставляют полный набор корпоративных функций, включая автоматическое резервное копирование, мониторинг производительности, возможности масштабирования и профессиональную поддержку, что необходимо для production-развертываний.
- Наш продукт Data Services уже предоставляет расширенные возможности управления PostgreSQL.
Содержание
Предварительные требованияТребования к кластеруТребования к базе данныхОбзор конфигурацииСправочник параметров конфигурацииБазовая конфигурация1. Создайте учетные данные базы данных2. Настройте ресурс TektonConfig3. Проверьте конфигурациюРасширенная конфигурацияКонфигурация SSLНастройка пользовательских CA-сертификатовШаг 1: создайте ConfigMap с CA-сертификатомШаг 2: настройте TektonConfig с mount'ами томовОперацииОбновление конфигурации базы данныхУстранение неполадокРаспространенные проблемыКоманды для проверкиИспользование PostgreSQL из Data ServicesПредварительные требования
Требования к кластеру
- Tekton Operator должен быть установлен в кластере.
Требования к базе данных
Версия:
- PostgreSQL 12 или выше
- Рекомендуется использовать более новые версии для более длительного срока поддержки
Настройка базы данных:
- База данных должна уже существовать
- База данных должна быть пустой (Tekton Results автоматически создаст необходимые структуры таблиц)
- Убедитесь, что у пользователя базы данных есть разрешения на создание таблиц
Команда для создания базы данных:
Обзор конфигурации
Tekton Results поддерживает использование внешних PostgreSQL-баз данных. Конфигурация разделена на две части:
- Учетные данные базы данных (имя пользователя и пароль) хранятся в Kubernetes Secret
- Параметры подключения к базе данных (host, port, имя базы данных, настройки SSL) настраиваются в пользовательском ресурсе TektonConfig в
spec.result
Справочник параметров конфигурации
Допустимые значения
db_sslmodeописаны здесь https://www.postgresql.org/docs/current/libpq-ssl.html#LIBPQ-SSL-PROTECTION.
Базовая конфигурация
Для базовой настройки внешней базы данных без SSL выполните следующие шаги:
1. Создайте учетные данные базы данных
Обязательные поля в Secret:
Команда для создания Secret:
Пример YAML для Secret:
2. Настройте ресурс TektonConfig
В этом документе перечислены только поля конфигурации, связанные с базой данных. Полный список полей см. в разделе Quick Start.
3. Проверьте конфигурацию
В этом Quick Start описана только базовая конфигурация. Для production-среды с SSL, расширенной безопасностью или пользовательскими CA-сертификатами см. раздел Расширенная конфигурация ниже.
Расширенная конфигурация
Конфигурация SSL
Когда требуются защищенные подключения к базе данных, можно настроить параметры, связанные с SSL:
Руководство по выбору SSL Mode:
Описание режимов SSL
Разница между verify-ca и verify-full зависит от политики корневого CA. Если используется публичный CA, verify-ca позволяет подключаться к серверу, который кто-то другой мог зарегистрировать у этого CA. В этом случае всегда следует использовать verify-full. Если используется локальный CA или даже самоподписанный сертификат, verify-ca часто обеспечивает достаточную защиту.
Важно: При использовании режимов SSL require, verify-ca или verify-full необходимо предоставить CA-сертификат, который подписал сертификат сервера базы данных. Без корректной настройки CA-сертификата компоненты Tekton Results не смогут запуститься. Подробные шаги настройки см. в разделе Настройка пользовательских CA-сертификатов ниже.
Настройка пользовательских CA-сертификатов
При использовании режимов SSL, требующих проверки сертификата (require, verify-ca, verify-full), необходимо предоставить CA-сертификат, который подписал сертификат сервера базы данных. Наиболее распространенный подход — хранить CA-сертификат в ConfigMap и монтировать его в pods Tekton Results.
Шаг 1: создайте ConfigMap с CA-сертификатом
Если у вас есть файл CA-сертификата root.crt, создайте ConfigMap:
Шаг 2: настройте TektonConfig с mount'ами томов
Чтобы сделать CA-сертификат доступным в контейнерах, необходимо настроить ресурс TektonConfig с дополнительными options в spec.result, чтобы смонтировать ConfigMap:
При такой конфигурации:
- CA-сертификат будет доступен в контейнерах по пути
/etc/tls/db/ca.crt - Установите
db_sslrootcertв/etc/tls/db/ca.crt, чтобы он соответствовал пути монтирования - И сервер API, и агент retention policy будут иметь доступ к CA-сертификату
Операции
Обновление конфигурации базы данных
После изменения конфигурации базы данных необходимо перезапустить компоненты Tekton Results, чтобы изменения вступили в силу.
Вариант 1: перезапуск отдельных deployment
Вариант 2: пересоздать ресурс TektonConfig
Проверьте изменения:
Если вы обновляете поле db_sslmode, может потребоваться пересоздать ресурс TektonConfig, чтобы изменения вступили в силу.
Устранение неполадок
Распространенные проблемы
-
Connection refused:
- Проверьте host и port базы данных
- Проверьте сетевую связность
- Убедитесь, что база данных запущена
-
Authentication failed:
- Проверьте имя пользователя и пароль в Secret
- Проверьте разрешения пользователя базы данных
-
Ошибки SSL-сертификата:
- Убедитесь, что CA-сертификат корректно смонтирован
- Проверьте настройку SSL mode
- Убедитесь, что путь к сертификату совпадает с путем монтирования
Команды для проверки
Использование PostgreSQL из Data Services
Data Services поддерживает развертывание экземпляров PostgreSQL, которые можно использовать для Tekton Results. При создании экземпляра PostgreSQL обратите внимание на следующие важные требования:
- Выберите версию PostgreSQL, которая соответствует версии Tekton Results; например, можно выбрать PostgreSQL 12.x или выше.
- Квота хранилища должна быть не меньше 5Gi
При создании экземпляра PostgreSQL автоматически создается Secret, содержащий сведения о подключении. Этот ресурс Secret можно отфильтровать с помощью метки middleware.instance/type: PostgreSQL.
Этот Secret содержит сведения host, port, username, password. Вам нужно дополнить сведения database на основе этого Secret и создать новый secret в namespace, где расположен экземпляр Tekton Results.
Если требуется задать sslmode, укажите db_sslmode в разделе spec.result ресурса TektonConfig как allow, prefer и т. д.
Дополнительные параметры и требования к развертыванию PostgreSQL см. в Документация по развертыванию PostgreSQL.