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

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

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

примечание

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

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

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

external:
children:
postgres:

Поддерживается PostgreSQL 13.

Требованиям к внешней PostgreSQL

Для работы с внешней СУБД PostgreSQL требуется предварительная настройка: создание баз данных, схем и пользователей, а также назначение необходимых прав доступа. Инсталлятор умеет создавать всё необходимое в случае, если используемый пользователь обладает в БД правами суперпользователя.

В случае, если учётная запись 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. Создайте пользователей, обладающих теми же именами, что и БД, созданные на предыдущем этапе. Пользователи должны обладать полными правами в соответствующей БД.

    CREATE USER {{ username }} WITH PASSWORD '{{ password }}';
    GRANT ALL PRIVILEGES ON DATABASE {{ db_name }} TO {{ username }};
  3. Создайте схему sage в следующих БД, назначив её владельцем соответствующего пользователя:

    • sage_grafana
    • sage_pager
    • sage_sauron
    • sage_sla
    • sage_logs_to_metrics
    • sage_mcc
    • dp_connector
    • otel_agents
    • service_map
    CREATE SCHEMA sage;
    ALTER SCHEMA sage OWNER TO {{ username }};
  4. Создайте схему spirit в следующих БД, назначив её владельцем соответствующего пользователя:

    • spirit_kratos
    • spirit_hydra
    • spirit_tenant_manager
    • spirit_iam_jwk
    CREATE SCHEMA spirit;
    ALTER SCHEMA spirit OWNER TO {{ username }};
  5. Создайте схему scheduler в БД sage_pager:

    CREATE SCHEMA scheduler;
  6. Создайте схему hangfire в БД sage_mcc:

    CREATE SCHEMA hangfire;
  7. Создайте схему sage_dp_connector в БД dp_connector:

    CREATE SCHEMA sage_dp_connector;
  8. Добавьте следующие расширения каждой БД в схемах 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;
  9. Установите search_path для пользователей в значение sage,public или spirit,public, в зависимости от созданной схемы в БД.

    ВАЖНО

    Не выполняйте это действие для пользователя keycloak!

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

    или

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

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

Сервис postgres является членом группы external, а в качестве хоста для него используется external-postgres, где находится требуемая версия PostgreSQL.

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

postgres:
hosts:
external-postgres:

external:
children:
postgres:

Зоны доступности 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