Конфигурирование секретов DataLens On-premises

Секреты можно задать двумя способами:

  1. Через параметры в файле values.yaml (рекомендуется для первичного развертывания).
  2. Через внешний секрет Kubernetes, указав ссылку в secrets.ref.

При использовании скрипта ./init.sh секреты генерируются автоматически при первом развертывании и сохраняются в секретах кластера Kubernetes.

Пример YAML-конфигурации

secrets:
  ref: null                              # Ссылка на внешний секрет Kubernetes
  #
  # === RSA-ключи аутентификации (обязательные) ===
  AUTH_TOKEN_PRIVATE_KEY: null           # Генерируется автоматически при первом развертывании
  AUTH_TOKEN_PUBLIC_KEY: null            # Генерируется автоматически при первом развертывании
  AUTH_PROVIDERS_CONFIG: null            # JSON-массив провайдеров (опционально)
  AUTH_ADMIN_PASSWORD: null              # Пароль admin (генерируется автоматически)
  AUTH_CALLBACK_COOKIE_SECRET: null      # Генерируется автоматически
  #
  # === Безопасность ===
  CSRF_SECRET: null                      # Генерируется автоматически
  #
  # === Мастер-токены ===
  AUTH_MASTER_TOKEN: null                # Генерируется автоматически
  US_MASTER_TOKEN: null                  # Генерируется автоматически
  FILE_UPLOADER_MASTER_TOKEN: null       # Генерируется автоматически
  EXPORT_DATA_VERIFICATION_KEY: null     # Генерируется автоматически
  #
  # === Ключи шифрования ===
  CONTROL_API_CRYPTO_KEY: null           # Генерируется автоматически
  #
  # === Docker Registry ===
  DOCKER_CONFIG_JSON: null               # Обязателен при registry.private: true
  #
  # === PostgreSQL ===
  POSTGRES_PASSWORD_ROOT: null           # Генерируется автоматически
  POSTGRES_PASSWORD_US: null             # Генерируется автоматически
  POSTGRES_PASSWORD_COMPENG: null        # Генерируется автоматически
  POSTGRES_PASSWORD_AUTH: null           # Генерируется автоматически
  POSTGRES_PASSWORD_TEMPORAL: null       # Генерируется автоматически
  POSTGRES_PASSWORD_META_MANAGER: null   # Генерируется автоматически
  POSTGRES_PASSWORD_DEMO: null           # Генерируется автоматически
  #
  # === RSA-ключи Temporal (для импорта/экспорта) ===
  TEMPORAL_AUTH_PRIVATE_KEY: null        # Генерируется при включении features.export
  TEMPORAL_AUTH_PUBLIC_KEY: null         # Генерируется при включении features.export
  #
  # === Инфраструктурные компоненты ===
  CLICKHOUSE_PASSWORD: null              # Генерируется автоматически
  REDIS_PASSWORD: null                   # Генерируется автоматически
  S3_ACCESS_KEY_ID: null                 # Генерируется автоматически
  S3_SECRET_ACCESS_KEY: null             # Генерируется автоматически

Генерация RSA-ключей вручную

Если требуется сгенерировать RSA-ключи вручную, используйте следующие команды:

# Генерация приватного ключа (4096 bit)
openssl genpkey -algorithm RSA -pkeyopt "rsa_keygen_bits:4096" -out private.pem

# Извлечение публичного ключа
openssl rsa -in private.pem -pubout -out public.pem

# Просмотр содержимого для вставки в values.yaml
cat private.pem
cat public.pem

При указании в values.yaml используйте многострочный формат YAML:

secrets:
  AUTH_TOKEN_PRIVATE_KEY: |
    -----BEGIN PRIVATE KEY-----
    MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQC...
    ...
    -----END PRIVATE KEY-----
  AUTH_TOKEN_PUBLIC_KEY: |
    -----BEGIN PUBLIC KEY-----
    MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA...
    ...
    -----END PUBLIC KEY-----

Формат DOCKER_CONFIG_JSON

Пример конфигурации для приватного реестра:

{
  "auths": {
    "registry.example.com": {
      "username": "user",
      "password": "password",
      "auth": "base64(user:password)"
    }
  }
}

Также обратите внимание на пример в файле ./help/docker-config.example.json.

Использование внешнего секрета Kubernetes

Если секреты уже существуют в кластере Kubernetes, укажите ссылку на секрет:

secrets:
  ref: my-existing-secret

В этом случае все остальные значения в секции secrets будут игнорироваться, и система будет использовать значения из указанного секрета Kubernetes.

Внешний секрет должен содержать все необходимые ключи с соответствующими именами.

Полезные команды

# Получить пароль администратора
./init.sh --get-admin-password

# Сгенерировать новые RSA-ключи для аутентификации
./init.sh --auth-rsa-gen

# Сгенерировать новые RSA-ключи для Temporal
./init.sh --temporal-rsa-gen

# Указать файл с конфигурацией провайдеров аутентификации
./init.sh --auth-providers-config ./my-auth-config.json

# Создать резервную копию PostgreSQL перед ротацией
./init.sh --dump-postgres

# Проверить статус подов после ротации
./init.sh --kubectl get pods

# Посмотреть логи для диагностики проблем
./init.sh --stern .

ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc.