Мы cделали User Generated Content Service
README.md
спринта 9 находится здесь:
В этом спринте наша команда:
Auth-сервиса
idp
с административной панелью (вход из админки django
)Jaeger
idp
механизм ограничения количества запросов к серверу rate-limit
VK
и Google
users
из папки infra
запускаем:
docker-compose --profile idp --profile admin up
запустятся postgres
, redis
, idp
, keycloak
, jaeger
, django-admin
Мыможем использовать только Direct Naked Impersonation, т.к. external to internal token exchange требуют валидации токена, который VK ID не предоставляет Чтобы настроить Keycloak внимательно следуем инструкции: https://www.keycloak.org/docs/latest/securing_apps/#direct-naked-impersonation
Просто делаем все, как тут сказано https://id.vk.com/about/business/go/docs/ru/vkid/latest/vk-id/connection/create-application
Настройка Google с использованием этого руководства:
https://keycloakthemes.com/blog/how-to-setup-sign-in-with-google-using-keycloak
http://localhost:8000/*
- в качестве Valid redirect URIs
.Google IDP
выберите Post login flow
как None
.для того чтобы создать партиции в таблице необходимо:
./run_partitioning.sh
(скрипт находится в папке idp/db_partitioning
)в скритпе есть две переменных POSTGRES_HOST
и POSTGRES_DB
которые отличаются от базового .env
там прописаны примеры которые перезаписывают значение для локального применения (их можно менять)
скрипт создаст партиции в таблице user_entity
ридми спринта 7 находится здесь:
В этом спринте наша команда:
minio
, File_Service
для взаимодействия с S3
харнилищем,Django
проект, чтобы он мог работать с S3
ETL
проект, чтобы он мог обновлять данные с S3
Api Movies
Чтобы не поднимать всю вселенную разом, можно использовать профили, например:
docker compose --profile admin up
Доступные профили:
В docker-compose используются внешние статические зависимости, чтобы сделать управление данными более надежным. Чтобы инициализировать такую зависимость в docker, нужно выполнить команду:
docker volume create <volume name> --opt type=none --opt device=<path to volume> --opt o=bind
вот так можно удобно создавать админа make admin в терминале
чтобы перезапустить etl сервис и чтобы он снова прогнал все данные из постгри в эластик, нужно внутри контейнера удалить etl_state.json (на случай если тестами все почистишь)
Тесты в моменте фэйлятся, но подключаются и к redis + elastic, и чистят эластик полностью (что плохо) пофикшу позже
docker-compose --env-file .env up --build
запуск если env слетают
Check later: https://www.reddit.com/r/Python/comments/16pin4l/a_maintained_library_for_oidc_in_python/
JWT libraries: https://jwt.io/libraries?language=Python
Setup all the environment variables and run
docker compose --profile idp-dev up --attach keycloak
From https://medium.com/@imsanthiyag/introduction-to-keycloak-admin-api-44beb9011f7d
Go to Clients, on the Clients list tab select admin-cli and in Capability config set Client authentication
to On. Also check Service accounts roles
.
After hitting Save you must see new Credentials tab on the top. Switch to that tab and copy Client secret value.
Important step. To perform specific operations like create users client must have roles assigned. Click on the admin-cli
client, then open Service accounts roles
tab
and assign manage-users
role from the master-realm
.
Also we need manage-clients
role to add roles for current client.
And view-clients
to get id of the current client.
Open Dev tab in browser to see what requests Keycloak UI is sending to the API
Run with
docker run -d -p 8080:8080 plantuml/plantuml-server:jetty
update vscode settings (https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml#use-plantuml-server-as-render)
"plantuml.server": "http://host.docker.internal:8080",
"plantuml.render": "PlantUMLServer",
"plantuml.exportOutDir": "docs/diagrams/out",
Alt+D to preview
Online editor https://www.plantuml.com/plantuml or https://www.planttext.com/