Развертывание локального стенда Keycloak

от автора

Данный пост является продолжением серии статей о внедрении 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/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *