Данный пост является продолжением серии статей о внедрении Keycloak в большой enterprise проект.
Основной практической темой данного поста является настройка стенда для локальной разработки, который в дальнейшем можно будет использовать и в CI для выполнения тестов.
Ниже я приведу compose файл, который у меня получился и дам ряд комментариев.
version: "3.9" services: keycloak-postgres: image: library/postgres:${KC_POSTGRES_IMAGE_TAG:-14} container_name: ${POSTGRES_CONTAINER_NAME:-postgres} restart: on-failure environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres healthcheck: test: pg_isready -d postgres interval: 10s timeout: 5s retries: 3 start_period: 5s ports: - ${KC_POSTGRES_PORT_MAPPING:-5435}:5432 deploy: resources: limits: memory: 256M keycloak: image: quay.io/keycloak/keycloak:20.0.2 container_name: keycloak command: - start --auto-build --db postgres --hostname-strict-https false --hostname-strict false --proxy edge --http-enabled true --import-realm --spi-user-profile-legacy-user-profile-read-only-attributes *_RES_ACCESS_MODE environment: KC_DB_URL: jdbc:postgresql://keycloak-postgres:5432/postgres KC_DB_USERNAME: postgres KC_DB_PASSWORD: postgres KC_DB_SCHEMA: public KC_FEATURES: preview KEYCLOAK_ADMIN: admin KEYCLOAK_ADMIN_PASSWORD: admin ports: - 8282:8080 depends_on: keycloak-postgres: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://0.0.0.0:8080/realms/master"] start_period: 10s interval: 30s retries: 3 timeout: 5s
Данный compose-файл позволяет запустить keycloak в продуктивном режиме с реляционной базой данных.
Так как SSO это как правило отдельный микросервис, то под него имеет смысл выделять собственную БД.
Данный файл содержит ряд place-holder’ов для более гибкой конфигурации через .env файлы (в дальнейшем нам это пригодится для CI).
Пройдемся подробнее по конфигурации сервиса keycloak:
Все начинается с команды запуска:
start --auto-build --db postgres --hostname-strict-https false --hostname-strict false --proxy edge --http-enabled true --import-realm
Если мы посмотрим DockerFile [https://www.keycloak.org/server/containers ] из которого собирается наш образ Keycloak, то увидим, что entrypoint там стоит ENTRYPOINT [«/opt/keycloak/bin/kc.sh»] (скрипт запуска Keycloak в standalone режиме). Команда start запускает приложение в production режиме.
Теперь пройдемся по опциям:
-
auto-build – собирает наш экземпляр со всеми зависимостями и кастомизациями
-
db – указывает, какую БД мы будем использовать, чтобы выбрать соответствующий драйвер
-
hostname-strict-https разрешаем/запрещаем фронту и бэку keycloak общаться по HTTP
-
proxy устанавливает режим reverse-proxy
-
hostname-strict вкл/выкл динамического имени хоста из заголовков запросов
-
http-enabled разрешаем взаимодействие по http
-
import-realm включаем импортирование realms из файлов конфигураций
После запуска данной конфигурации командой docker-compose up -d у вас будет готовый стенд Keycloak, который можно использовать для разработки и прогона тестов, Главная страница будет доступна по адресу http://localhost:8282.
Войдя по admin:admin мы окажемся на странице master realm:

ссылка на оригинал статьи https://habr.com/ru/post/716234/
Добавить комментарий