📘
Quarkus ベースの Keycloak を開発モードで起動してみる
きっかけ
- Keycloak 17.0.0 から Quarkus ベースがサポートされるようになりました。
- これまでの WildFlyベースのものは standalone.sh を実行することですぐに Keycloak を試すことができました。
- これからは Quarkus ベースとなるため、これまでとは起動方法が異なっています。
- Keycloak の機能を理解していくためにも Quarkusベースの起動方法について、簡単に調べてみることにしました。
Keycloak のダウンロードサイト について
- Keycloakのダウンロードサイトには現在、2種類のzip/tarのファイルがあります。
- これまでの WildFly ベースの Keycloak は keycloak-legacy-17.0.0.zip/tar.gz として配布されています。
- これまで利用していた WildFly ベースの Keycloak は2022年6月までサポートされます。(そのため deprecated となっています。)
- 今回は
Distribution powered by Quarkus
の方を利用します。
Keycloakのフォルダ構成 について
- Quarkus ベースのKeycloakのフォルダ構成は以下のようになっています。
- これまでの WildFly ベースでは特に指定をしていなければ、h2 がDBとして利用されていました。
- 今回も Quarkus ベースの Keycloak を開発者モードで利用すると
data
フォルダに h2 DBのデータが格納されています。
開発モード(Development mode)でのKeycloakの起動について
- Quarkus ベースの Keycloak には
Development mode
とProduction mode
があります。 - Production mode は HTTPS でのリッスンがデフォルトでONになっていたり、hostnameの指定も必須となっているようです。
- 今回はKeycloakを手軽に触ってみたいので
Development mode
を利用します。 -
kc.sh
kc.bat
を利用して、Keycloakを起動します。その際にstart-dev
を指定して起動します。
./bin/kc.sh start-dev
Updating the configuration and installing your custom providers, if any. Please wait.
2022-02-12 13:44:27,457 INFO [io.quarkus.deployment.QuarkusAugmentor] (main) Quarkus augmentation completed in 5296ms
2022-02-12 13:44:31,395 INFO [org.keycloak.quarkus.runtime.hostname.DefaultHostnameProvider] (main) Hostname settings: FrontEnd: <request>, Strict HTTPS: false, Path: <request>, Strict BackChannel: false, Admin: <request>
2022-02-12 13:44:32,205 WARN [org.infinispan.CONFIG] (keycloak-cache-init) ISPN000569: Unable to persist Infinispan internal caches as no global state enabled
2022-02-12 13:44:32,248 WARN [org.infinispan.PERSISTENCE] (keycloak-cache-init) ISPN000554: jboss-marshalling is deprecated and planned for removal
2022-02-12 13:44:32,285 INFO [org.infinispan.CONTAINER] (keycloak-cache-init) ISPN000556: Starting user marshaller 'org.infinispan.jboss.marshalling.core.JBossUserMarshaller'
2022-02-12 13:44:32,623 INFO [org.infinispan.CONTAINER] (keycloak-cache-init) ISPN000128: Infinispan version: Infinispan 'Triskaidekaphobia' 13.0.5.Final
2022-02-12 13:44:33,266 INFO [org.keycloak.connections.infinispan.DefaultInfinispanConnectionProviderFactory] (main) Node name: node_170013, Site name: null
2022-02-12 13:44:34,445 INFO [org.keycloak.quarkus.runtime.storage.database.liquibase.QuarkusJpaUpdaterProvider] (main) Initializing database schema. Using changelog META-INF/jpa-changelog-master.xml
2022-02-12 13:44:36,731 INFO [org.keycloak.services] (main) KC-SERVICES0050: Initializing master realm
2022-02-12 13:44:38,543 INFO [io.quarkus] (main) Keycloak 17.0.0 on JVM (powered by Quarkus 2.7.0.Final) started in 10.821s. Listening on: http://0.0.0.0:8080
2022-02-12 13:44:38,544 INFO [io.quarkus] (main) Profile dev activated.
2022-02-12 13:44:38,544 INFO [io.quarkus] (main) Installed features: [agroal, cdi, hibernate-orm, infinispan-client, jdbc-h2, jdbc-mariadb, jdbc-mssql, jdbc-mysql, jdbc-oracle, jdbc-postgresql, keycloak, narayana-jta, reactive-routes, resteasy, resteasy-jackson, smallrye-context-propagation, smallrye-health, smallrye-metrics, vault, vertx]
2022-02-12 13:44:38,545 WARN [org.keycloak.quarkus.runtime.KeycloakMain] (main) Running the server in development mode. DO NOT use this configuration in production.
- ログにも
Development mode
で起動していることが出力されています。 - これまで通りの Keycloak の管理コンソールを見ることができました。
WildFlyベースとQuarkusベースで気づいた違い について
- WildFly ベースのKeycloakはデフォルトパスに
/auth
となっていましたが、Quarkusベースはデフォルトが/
となっています。 - 変更する場合は
--http-relative-path=/auth
を指定すると、WildFlyベースのデフォルトと同じようにすることができます。
./bin/kc.sh start-dev --http-relative-path=/auth
Discussion