Перейти к основному содержимому
Версия: 1.12

Внешние сервисы и интеграции

Внешний кластер PostgreSQL

примечание

Использование внешней БД — не входит в стандартное описание и процесс установки.

Требования к внешней БД

  • PostgreSQL v13, v18
  • Максимальное количество подключений к БД (max_connections): >= 300
  • Максимальное количество воркеров (max_worker_processes): >= 8
  • Потребуется установка расширений PostgreSQL (см. ниже)

Изменение конфигурации

Чтобы использовать уже существующий сервис PostgreSQL при установке Sage, добавьте в инвентарь группу external, в которой будет внешний PostgreSQL.

Файл clans/{{ clan }}/{{ env }}/{{ dc }}/hosts.yml:

postgres:
hosts:
your-external-postgres.example.com # Реальный адрес вашего PostgreSQL
external:
children:
postgres:

Для автоматической инициализации PostgreSQL подключение должно осуществляться под суперпользователем. Для этого укажите данные суперпользователя в своём инвентаре.

Файл clans/{{ clan }}/{{ env }}/{{ dc }}/group_vars/sage/postgres.yml:

postgres_admin_user: # Имя суперпользователя
postgres_admin_password: # Пароль суперпользователя

Ручная подготовка PostgreSQL (если нет суперпользователя)

Если у вас нет возможности использовать суперпользователя, необходимо отключить автоматическую настройку PostgreSQL и вручную создать все требуемые базы данных, пользователей, схемы и расширения.

Переключите флаг postgres_manage_db_and_users в значение false.

Файл clans/{{ clan }}/{{ env }}/{{ dc }}/group_vars/sage/postgres.yml:

postgres_manage_db_and_users: false

Это позволит пропустить этап создания ресурсов во время установки Sage. Создайте ресурсы вручную до начала установки Sage по инструкциями ниже.

1. Создание баз данных

Создайте следующие БД из списка:

  • sage_grafana
  • sage_pager
  • sage_sauron
  • sage_sla
  • sage_logs_to_metrics
  • service_map
  • dp_connector
  • otel_agents
  • spirit_kratos
  • spirit_hydra
  • spirit_tenant_manager
  • spirit_iam_jwk
  • sage_mcc
  • keycloak

Пример запроса для создания БД:

CREATE DATABASE {{ db_name }};

2. Создание пользователей и выдача прав

Создайте пользователей с именами, совпадающими с именами соответствующих БД (например, для БД sage_grafana должен быть пользователь с именем sage_grafana). Каждый пользователь должен обладать полными правами на свою БД.

CREATE USER {{ username }} WITH PASSWORD '{{ password }}';
GRANT ALL PRIVILEGES ON DATABASE {{ db_name }} TO {{ username }};

3. Создание схем и установка расширений

В соответствующих БД создайте необходимые схемы:

  • sage
  • spirit
  • sage_dp_connector (для dp_connector)

Пример запроса для создания схем:

CREATE SCHEMA IF NOT EXISTS sage;
CREATE SCHEMA IF NOT EXISTS spirit;
CREATE SCHEMA IF NOT EXISTS sage_dp_connector;

Добавьте следующие расширения каждой БД в схемах sage, spirit, sage_dp_connector:

  • btree_gin
  • pg_trgm
  • pgcrypto
  • hstore
  • uuid-ossp

Пример запроса для установки расширений:

CREATE EXTENSION IF NOT EXISTS {{ extension }} SCHEMA sage;

или

CREATE EXTENSION IF NOT EXISTS {{ extension }} SCHEMA spirit;

или

CREATE EXTENSION IF NOT EXISTS {{ extension }} SCHEMA sage_dp_connector;

4. Настройка search_path

Установите search_path для пользователей в значение sage,public или spirit,public в зависимости от используемой схемы.

ВАЖНО

Не выполняйте это действие для пользователя keycloak! Приложение Keycloak использует схему public.

Пример запроса для настройки search_path:

ALTER ROLE {{ username }} SET search_path = sage,public;

или

ALTER ROLE {{ username }} SET search_path = spirit,public;

Зоны доступности Opensearch

Для чтения логов из другого ДЦ добавьте в инвентарь группы:

  • opensearch_proxy — содержит имена хостов, на которых будет развернут клиент
  • opensearch_proxy_single_node — если клиент нужно развернуть только на одном хосте

Файл clans/{{ clan }}/{{ env }}/{{ dc }}/hosts.yml:

opensearch_proxy:
hosts:
es-client-[0:1].remote.domain:

Зоны доступности VictoriaMetrics

Для чтения метрик из другого окружения добавьте в инвентарь группу victoriametrics_remote, которая содержит имена хостов из группы victoriametrics_select другого окружения.

Также укажите имя удаленного окружения.

Файл clans/{{ clan }}/{{ env }}/{{ dc }}/hosts.yml:

victoriametrics_remote:
hosts:
external-victoriametrics-select-[0:2].example.com:

Файл clans/{{ clan }}/{{ env }}/{{ dc }}/group_vars/sage/victoriametrics.yml:

victoriametrics_remote_env: remote_env