Перейти к содержанию

Calypso

Описание

Calypso - это сервис для построения и сравнения трассы вызов. Используется для проверки целостности модуля цифрового рубля.

Функциональные возможности

  • Построение проектов.
  • Построение трасс вызов на основе проектов.
  • Сравнение трасс вызовов.

Используемые топики Kafka

calypso.1.0.testUpdated - сообщения о статусе тестирования.

БД

  • PostgreSQL (схема: calypso).
  • test - общая таблица с информацией о тестировании.

Внешние зависимости

  1. Ingress.
  2. Redis.
  3. S3 (MinIO).
  4. Kafka.
  5. PostgreSQL.
  6. Keycloak.
  7. OAuth2.

Переменные сервиса

REST API container

С таблицами переменных доступа и настроек логирования можно ознакомиться в разделах «Доступ к S3», «Доступ к PostgreSQL», «Доступ к Kafka», «Настройки логирования».

Async API container

С таблицами переменных доступа и настроек логирования можно ознакомиться в разделах «Доступ к S3», «Доступ к Redis», «Доступ к PostgreSQL», «Доступ к Kafka», «Настройки логирования».

Настройки сервиса:

Имя переменной Описание Примечание Варианты значений Обязательно Пример значения Значение в values
STG_S3_TOPIC Содержит имя Kafka-топика, на который нужно подписаться этому сервису для получения событий создания/удаления файлов в бакетах с приложениями - - Да minio .Values.kafka.stgS3Topic
STG_APPLICATION_CREATED_TOPIC Содержит имя Kafka-топика, в который будут отправляться сообщения о создании нового экземпляра модели Application - - Да apricot/1/0/applications/event/applicationCreated .Values.kafka.stgNotifyTopic
STG_S3_APPLICATION_FOLDER Содержит имя папки внутри бакета, куда будут располагаться данные работы сервиса - - Нет applications .Values.s3.pathBucket

Migrate Job container

С таблицами переменных доступа и настроек логирования можно ознакомиться в разделах «Доступ к PostgreSQL», «Настройки логирования».

Настройки сервиса:

Имя переменной Описание Примечание Варианты значений Обязательно Пример значения Значение в values
ALEMBIC_CONFIG Файл для настройки миграций - путь до файла true /app/alembic.ini .Values.alembicConfig

Схема интеграции сервиса Calypso

Шаг 1. Получение авторизационного токена. Бэкенд монолита, используя переданные ему client_id и client_secret, авторизуется в Keycloak и получает access_token.

Шаг 2. Отправка запроса в сервис Calypso. Запрос снабжается Authorization-заголовком, содержащим полученный access_token.

Шаг 3. Проверка входящего запроса на наличие валидного Authorization-заголовка.

Шаг 4.1. Запрос далее перенаправляется в целевой сервис (Calypso).

Шаг 4.2. В случае невалидного Authorization-заголовка (или не его отсутствия), монолиту возвращается HTTP 401.

В монолите в файл settings/prod.env необходимо добавить следующие переменные:

  • STINGRAY_SERVICES_AUTH_URL (https://keycloak.cluster.local/realms/stingray/protocol/openid- connect/token)
  • STINGRAY_SERVICES_CLIENT_ID (prod)
  • STINGRAY_SERVICES_CLIENT_SECRET (****)
  • CALYPSO_BASE_URL (https://calypso.cluster.local)

Организация сетевого доступа

Для организации сетевого доступа необходимо настроить сетевую инфраструктуру таким образом, чтобы монолиту были доступны следующие ресурсы:

  1. Keycloak.
  2. Ingress.

Эти ресурсы должны быть доступны по протоколам и портам, соответствующим тем URL, которые были переданы в переменные окружения CALYPSO_BASE_URL и STINGRAY_SERVICES_AUTH_URL.

Настройка Kafka

Шаги по настройке Kafka описаны в соответствующем разделе.

Настройка Redis

Шаги по настройке Redis описаны в соответствующем разделе.

Настройка S3

Шаги по настройке S3 описаны в соответствующем разделе.

Настройка БД PostgreSQL

Для настройки БД PostgreSQL необходимо предоставить доступ к PostgreSQL, развёрнутому в инфраструктуре и включающему следующие параметры:

  1. FQDN сервера.
  2. TCP порт для подключения.
  3. Название базы данных.
  4. Имя пользователя.
  5. Пароль.
  6. Имя пользователя для миграций.
  7. Пароль пользователя миграций.

Значения параметров 1, 2, 3, 4, 6 необходимо включить в файл values.yaml нашего Helm chart, параметры:

  1. global.postgresql.stgPostgresHost.
  2. global.postgresql.stgPostgresPort.
  3. global.postgresql.stgPostgresDb.
  4. global.postgresql.stgPostgresUser.
  5. global.postgresql.stgPostgresPass.
  6. global.postgresql.stgPostgresMigrateUser.
  7. global.postgresql.stgPostgresMigratePassword.

Примечание

Значение параметров 5 и 7 необходимо включить в состав секретов.

При первом подключении происходит миграция базы данных из заданного пользователя, создается соответствующая схема и таблицы:

  • PostgreSQL (схема: calypso).
  • test - общая таблица с информацией о тестировании.

Настройка OAuth2-proxy

Шаги по настройке OAuth2-proxy описаны в соответствующем разделе.

Примечание

Настройка OAuth2-proxy не входит непосредственно в установку сервиса Calypso. При этом правильная настройка OAuth2-proxy является необходимым условием для интеграции сервиса Calypso.

Настройка авторизации

Шаги по настройке авторизации описаны в соответствующем разделе.

Настройка Ingress

Для настройки Ingress на проксирование трафика к OAuth2-proxy и Calypso сервису необходимо внести следующие изменения в values.yaml:

calypso:
    ingress:
        enabled: true
        className: nginx-internal #класс ингресса
        annotations:
            nginx.ingress.kubernetes.io/preserve-trailing-slash: "true" nginx.ingress.kubernetes.io/auth-url: https://oauth2-proxy.cluster.local/oauth2/auth
            nginx.ingress.kubernetes.io/auth-response-headers: x-auth-request- access-token
            nginx.ingress.kubernetes.io/proxy-buffer-size: 16k nginx.ingress.kubernetes.io/proxy-body-size: 500m
            nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
            nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
        hosts:
            - host: calypso.cluster.local
              paths:
                - path: /
                  pathType: ImplementationSpecific
        tls:
            - secretName: XXX
              hosts:
                - calypso.cluster.local
-------------------------------------------------------------------------------------
oauth2-proxy:
    ingress:
        enabled: true
        className: nginx-internal annotations:
            nginx.ingress.kubernetes.io/proxy-buffer-size: 16k
        hosts:
            - host: oauth2-proxy.cluster.local
              paths:
                - path: /
                  pathType: ImplementationSpecific
        tls:
            - secretName: k8s-secret
              hosts:
                - oauth2-proxy.cluster.local
К началу