Calypso
Описание
Calypso - это сервис для построения и сравнения трассы вызов. Используется для проверки целостности модуля цифрового рубля.
Функциональные возможности
- Построение проектов.
- Построение трасс вызов на основе проектов.
- Сравнение трасс вызовов.
Используемые топики Kafka
calypso.1.0.testUpdated
- сообщения о статусе тестирования.
БД
- PostgreSQL (схема: calypso).
- test - общая таблица с информацией о тестировании.
Внешние зависимости
- Ingress.
- Redis.
- S3 (MinIO).
- Kafka.
- PostgreSQL.
- Keycloak.
- 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)
Организация сетевого доступа
Для организации сетевого доступа необходимо настроить сетевую инфраструктуру таким образом, чтобы монолиту были доступны следующие ресурсы:
- Keycloak.
- Ingress.
Эти ресурсы должны быть доступны по протоколам и портам, соответствующим тем URL, которые были переданы в переменные окружения CALYPSO_BASE_URL
и STINGRAY_SERVICES_AUTH_URL
.
Настройка Kafka
Шаги по настройке Kafka описаны в соответствующем разделе.
Настройка Redis
Шаги по настройке Redis описаны в соответствующем разделе.
Настройка S3
Шаги по настройке S3 описаны в соответствующем разделе.
Настройка БД PostgreSQL
Для настройки БД PostgreSQL необходимо предоставить доступ к PostgreSQL, развёрнутому в инфраструктуре и включающему следующие параметры:
- FQDN сервера.
- TCP порт для подключения.
- Название базы данных.
- Имя пользователя.
- Пароль.
- Имя пользователя для миграций.
- Пароль пользователя миграций.
Значения параметров 1, 2, 3, 4, 6 необходимо включить в файл values.yaml нашего Helm chart, параметры:
global.postgresql.stgPostgresHost
.global.postgresql.stgPostgresPort
.global.postgresql.stgPostgresDb
.global.postgresql.stgPostgresUser
.global.postgresql.stgPostgresPass
.global.postgresql.stgPostgresMigrateUser
.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