oruchkin / Async_API_sprint_3

AsyncAPI Спринт 3
0 stars 1 forks source link

Проектная работа 9 спринта

Мы cделали User Generated Content Service

README.md спринта 9 находится здесь:

ссылка на README.md 9 спринта


Проектная работа 8 спринта

В этом спринте наша команда:

Доска на которой мы вели задачи:

Канбан доска

Как запустить проект:

из папки infra запускаем:

docker-compose --profile idp --profile admin up

запустятся postgres, redis, idp, keycloak, jaeger, django-admin

Детальнее про задачи

- подключение внешних провайдеров:

Keycloak external IDP

Мыможем использовать только Direct Naked Impersonation, т.к. external to internal token exchange требуют валидации токена, который VK ID не предоставляет Чтобы настроить Keycloak внимательно следуем инструкции: https://www.keycloak.org/docs/latest/securing_apps/#direct-naked-impersonation

VK ID

Просто делаем все, как тут сказано https://id.vk.com/about/business/go/docs/ru/vkid/latest/vk-id/connection/create-application

Google

Настройка Google с использованием этого руководства:

https://keycloakthemes.com/blog/how-to-setup-sign-in-with-google-using-keycloak

- партицирование:

для того чтобы создать партиции в таблице необходимо:

в скритпе есть две переменных POSTGRES_HOST и POSTGRES_DB которые отличаются от базового .env там прописаны примеры которые перезаписывают значение для локального применения (их можно менять)

скрипт создаст партиции в таблице user_entity

партиции


ВНИМАНИЕ!

Ниже данные с предыдущих спринтов

то что ниже не относится к спринту 8


Спринт 7

ридми спринта 7 находится здесь:

ссылка на README.md 7 спринта


Проектная работа 6 спринта

В этом спринте наша команда:

Доска на которой мы вели:

Канбан доска

Docker compose

Profiles

Чтобы не поднимать всю вселенную разом, можно использовать профили, например:

docker compose --profile admin up

Доступные профили:

External volumes

В docker-compose используются внешние статические зависимости, чтобы сделать управление данными более надежным. Чтобы инициализировать такую зависимость в docker, нужно выполнить команду:

docker volume create <volume name> --opt type=none --opt device=<path to volume> --opt o=bind

screenshot вот так можно удобно создавать админа make admin в терминале

screenshot чтобы перезапустить etl сервис и чтобы он снова прогнал все данные из постгри в эластик, нужно внутри контейнера удалить etl_state.json (на случай если тестами все почистишь)

screenshot Тесты в моменте фэйлятся, но подключаются и к redis + elastic, и чистят эластик полностью (что плохо) пофикшу позже

docker-compose --env-file .env up --build запуск если env слетают

IDP

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

Keycloak

Development

Setup all the environment variables and run

docker compose --profile idp-dev up --attach keycloak

Setup client

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. screenshot

Also we need manage-clients role to add roles for current client. And view-clients to get id of the current client.

Tips

Open Dev tab in browser to see what requests Keycloak UI is sending to the API

PlantUML

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/

diagram