📘

Quarkus ベースの Keycloak を開発モードで起動してみる

2022/02/12に公開

きっかけ

  • 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の起動について

./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ベースで気づいた違い について

./bin/kc.sh start-dev --http-relative-path=/auth

Discussion