Стадия жизненного цикла модуля: Общедоступная версия
У модуля есть требования для установки
На этой странице описаны минимальная конфигурация для запуска Deckhouse Development Portal (DDP) и способы подключения PostgreSQL, Redis и ClickHouse. Перед началом проверьте, что кластер соответствует системным требованиям модуля.
Для демо рекомендуется установка с managed-экземплярами, для production — с внешними экземплярами. Внутренние экземпляры доступны как отдельный вариант установки.
Параметры postgres.mode, redis.mode и clickhouse.mode обязательны и не имеют значения по умолчанию. Без них установка и обновление модуля завершаются ошибкой проверки настроек.
Установка с managed-экземплярами
В режиме managed модуль создаёт экземпляры PostgreSQL, Valkey (совместим с Redis) и ClickHouse. До установки DDP в кластере должны быть включены соответствующие модули Deckhouse для каждого сервиса, у которого выбран mode: managed:
| Параметр DDP | Модуль, который должен быть включён |
|---|---|
postgres.mode: managed |
managed-postgres |
redis.mode: managed |
managed-valkey |
clickhouse.mode: managed |
managed-clickhouse |
Для демо-конфигурации ниже включите все три модуля с помощью ModuleConfig:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: managed-postgres
spec:
enabled: true
---
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: managed-valkey
spec:
enabled: true
---
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: managed-clickhouse
spec:
enabled: trueЕсли необходимый модуль не включён, установка DDP завершится ошибкой с названием модуля, который нужно включить.
Включение модуля
Чтобы установить DDP, включите модуль development-platform в ModuleConfig.
В минимальной конфигурации задаются суперадминистратор, ключ шифрования и режим развёртывания PostgreSQL, Redis и ClickHouse:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: development-platform
spec:
enabled: true
version: 2
settings:
rbac:
superAdminEmail: admin@deckhouse.io # Email пользователя с полным доступом к конфигурации платформы. Можно изменить в любой момент.
security:
secretKey: "16charssecretkey" # Ключ шифрования сохранённых учётных данных: 16, 24 или 32 печатных ASCII-символа. Замените значение из примера своим ключом.
postgres:
mode: managed # Режим развёртывания: managed, external или internal. Обязателен для postgres, redis и clickhouse.
redis:
mode: managed
clickhouse:
mode: managedАдрес веб-интерфейса формируется из параметра кластера publicDomainTemplate и параметра модуля domain.prefix, по умолчанию ddp.
Например, при publicDomainTemplate: "%s.example.com" веб-интерфейс открывается по адресу https://ddp.example.com.
Чтобы использовать другой домен, задайте параметры domain.useCustomDomain и domain.customDomain.
Все параметры перечислены в разделе настроек модуля.
Настройка ресурсов экземпляров
В режиме managed адрес и порт подключения определяются автоматически. Параметры host, port и image для этого режима не используются.
Ресурсы экземпляра задаются в instance.cpu, instance.memory и instance.persistentVolumeClaim. Класс выбирается параметром instance.className, по умолчанию default; он определяет допустимые размеры и размещение экземпляра. Размеры памяти и диска задавайте в формате Kubernetes Quantity, например 512Mi или 20Gi.
Пример настройки ресурсов PostgreSQL:
postgres:
mode: managed
instance:
className: default
cpu:
cores: 2
coreFraction: 50 # Для redis и clickhouse — строка, например "50%"
memory:
size: 2Gi
persistentVolumeClaim:
size: 20Gi
storageClassName: replicated # Необязательно, по умолчанию — StorageClass кластераРазмер диска можно только увеличить, и только если StorageClass поддерживает расширение томов.
Установка с внешними экземплярами
Секции postgres, redis и clickhouse переключают компонент на внешний экземпляр при mode: external.
Секции независимы: можно подключить только часть компонентов, а для остальных указать mode: internal или mode: managed.
Подключение внешнего PostgreSQL
Чтобы использовать внешний экземпляр PostgreSQL, укажите параметры подключения в секции postgres:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: development-platform
spec:
enabled: true
version: 2
settings:
rbac:
superAdminEmail: admin@deckhouse.io
security:
secretKey: "16charssecretkey"
postgres:
mode: external
host: postgres.example.com # Имя хоста или IP-адрес сервера PostgreSQL.
port: 5432 # Порт PostgreSQL.
database: ddp # Название базы данных.
username: ddp_user # Имя пользователя для подключения.
password: secure_password # Пароль для подключения.
redis:
mode: internal
clickhouse:
mode: internalРасширение pg_trgm
DDP требуется расширение PostgreSQL pg_trgm.
Для PostgreSQL, развёрнутого в кластере, модуль создаёт расширение автоматически.
Для внешнего PostgreSQL создайте его до запуска DDP: подключитесь к базе данных от имени пользователя с правом на создание расширений и выполните команду:
CREATE EXTENSION IF NOT EXISTS pg_trgm;Подключение внешнего Redis
Чтобы использовать внешний экземпляр Redis, укажите параметры подключения в секции redis:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: development-platform
spec:
enabled: true
version: 2
settings:
rbac:
superAdminEmail: admin@deckhouse.io
security:
secretKey: "16charssecretkey"
postgres:
mode: internal
redis:
mode: external
host: redis.example.com # Имя хоста или IP-адрес сервера Redis.
port: 6379 # Порт Redis.
database: "0" # Индекс базы данных Redis.
password: redis_password # Пароль для подключения. Оставьте пустым, если у Redis нет пароля.
clickhouse:
mode: internalПодключение внешнего ClickHouse
В ClickHouse хранятся исторические данные платформы, например история изменений свойств сущностей.
Чтобы работать без функциональности, которой нужен ClickHouse, укажите mode: external и оставьте host пустым.
Остальная часть платформы работает без изменений.
Чтобы использовать внешний экземпляр ClickHouse, укажите параметры подключения в секции clickhouse:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: development-platform
spec:
enabled: true
version: 2
settings:
rbac:
superAdminEmail: admin@deckhouse.io
security:
secretKey: "16charssecretkey"
postgres:
mode: internal
redis:
mode: internal
clickhouse:
mode: external
host: clickhouse.example.com # Имя хоста или IP-адрес сервера ClickHouse.
port: 9000 # Порт нативного протокола ClickHouse.
database: ddp # Название базы данных.
username: ddp_user # Имя пользователя для подключения.
password: secure_password # Пароль для подключения.Создание базы данных ClickHouse
DDP применяет миграции схемы к базе данных из параметра database, но саму базу данных не создаёт.
При mode: managed модуль создаёт базу данных автоматически.
При mode: external создайте базу данных до запуска DDP:
CREATE DATABASE IF NOT EXISTS ddp;При mode: internal модуль создаёт базу данных при первом запуске на пустом томе ClickHouse.
Если на томе уже есть данные, например после восстановления из резервной копии, или если вы изменили параметр database,
создайте базу данных вручную. Замените ddp значением параметра database:
d8 k -n d8-development-platform exec clickhouse-0 -c clickhouse -- \
sh -c 'clickhouse-client --user "$CLICKHOUSE_USER" --password "$CLICKHOUSE_PASSWORD" --query "CREATE DATABASE IF NOT EXISTS ddp"'Полный пример с внешними экземплярами
Пример конфигурации с подключением к внешним экземплярам PostgreSQL, Redis и ClickHouse:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: development-platform
spec:
enabled: true
version: 2
settings:
rbac:
superAdminEmail: admin@deckhouse.io
security:
secretKey: "16charssecretkey"
postgres:
mode: external
host: postgres.production.example.com
port: 5432
database: ddp
username: ddp_user
password: secure_postgres_password
redis:
mode: external
host: redis.production.example.com
port: 6379
database: "0"
password: secure_redis_password
clickhouse:
mode: external
host: clickhouse.production.example.com
port: 9000
database: ddp
username: ddp_user
password: secure_clickhouse_passwordУстановка с внутренними экземплярами
В режиме internal модуль разворачивает PostgreSQL, Redis и ClickHouse в кластере. Явно укажите этот режим для каждого сервиса:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: development-platform
spec:
enabled: true
version: 2
settings:
rbac:
superAdminEmail: admin@deckhouse.io # Email пользователя с полным доступом к конфигурации платформы. Можно изменить в любой момент.
security:
secretKey: "16charssecretkey" # Ключ шифрования сохранённых учётных данных: 16, 24 или 32 печатных ASCII-символа. Замените значение из примера своим ключом.
postgres:
mode: internal # Режим развёртывания: internal, external или managed. Обязателен для postgres, redis и clickhouse.
redis:
mode: internal
clickhouse:
mode: internalУстановка PostgreSQL, Redis и ClickHouse из приватного хранилища образов
При mode: internal модуль разворачивает PostgreSQL, Redis и ClickHouse в кластере из публичных образов.
Чтобы загружать образы из приватного хранилища образов контейнеров:
-
Создайте в неймспейсе
d8-development-platformсекрет типаkubernetes.io/dockerconfigjsonс учётными данными хранилища. -
Укажите образы в параметрах
image, а имя секрета — в параметреadditionalImagePullSecrets:apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: development-platform spec: enabled: true version: 2 settings: rbac: superAdminEmail: admin@deckhouse.io security: secretKey: "16charssecretkey" postgres: mode: internal image: registry.example.com/postgres:16.3 redis: mode: internal image: registry.example.com/redis:7.4.0 clickhouse: mode: internal image: registry.example.com/clickhouse/clickhouse-server:24.3 additionalImagePullSecrets: - custom-registry-secret
Смена ключа шифрования
DDP шифрует сохранённые учётные данные ключом из параметра security.secretKey.
Если заменить ключ в ModuleConfig без перешифрования, DDP не сможет расшифровать сохранённые учётные данные.
Чтобы сменить ключ:
- В веб-интерфейсе DDP откройте «Администрирование» → «Учетные данные» и нажмите «Ротация ключа шифрования». Кнопка доступна пользователям с правом на ротацию ключа шифрования.
- Введите текущий ключ в поле «Старый ключ шифрования», новый — в поле «Новый ключ шифрования» и нажмите «Перешифровать».
- Проверьте, что в таблице результатов нет записей в столбце «Неуспешно».
- Укажите новый ключ в параметре
security.secretKeyв ModuleConfigdevelopment-platform. Поды DDP перезапустятся автоматически.
Между перешифрованием и перезапуском подов с новым ключом сохранённые учётные данные недоступны. Смена ключа делает текущие пользовательские сеансы недействительными.