(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Ver22/Ver24】開発モードで利用しているKeycloakをアップデートする

スポンサーリンク

はじめに

Keycloak(RedHat Build of Keycloak)は開発モードで起動を行うと、特に設定をせずともH2という同梱されているデータベース上に情報が格納されます。本記事ではそれらのデータを新しいバージョンに持っていくためにデータをコピーし、起動させた際の知見を残しておきます。

環境情報
  • Red Hat Enterprise Linux VERSION="9.3
  • rhbk-22.0.8
  • rhbk-24.0.5

事前準備

新バージョンのZipを配置し、解凍します。

# ls rhbk-24.0.5
bin  conf  lib  LICENSE.txt  providers  README.md  themes  version.txt

続いて現行バージョンのKeycloakを停止させた状態にした上で

# systemctl status rhbk
○ rhbk.service - Keycloak Application Server
     Loaded: loaded (/etc/systemd/system/rhbk.service; enabled; preset: disabled)
     Active: inactive (dead) since ...

H2のデータファイルをそのまま移行します。

# ls rhbk-22.0.8/data/
h2  tmp  transaction-logs
# cp -r rhbk-22.0.8/data/ rhbk-24.0.5

データファイルの他に設定やテーマで移行が必要なものがあれば、同じく手動でコピーします。

新バージョンでの起動

以下にて起動を行うと正常に立ち上がり

# ./kc.sh start-dev
Updating the configuration and installing your custom providers, if any. Please wait.
... 
UPDATE SUMMARY
Run:                          9
Previously run:             115
Filtered out:                 0
-------------------------------
Total change sets:          124

... INFO  [org.keycloak.broker.provider.AbstractIdentityProviderMapper] (main) Registering class org.keycloak.broker.provider.mappersync.ConfigSyncEventListener
...  INFO  [io.quarkus] (main) Keycloak 24.0.5.redhat-00001 on JVM (powered by Quarkus 3.8.4.redhat-00002) started in 12.412s. Listening on: http://0.0.0.0:8080
... INFO  [io.quarkus] (main) Profile dev activated. 
...  INFO  [io.quarkus] (main) Installed features: [agroal, cdi, hibernate-orm, jdbc-h2, keycloak, narayana-jta, reactive-routes, resteasy-reactive, resteasy-reactive-jackson, smallrye-context-propagation, vertx]
... WARN  [org.keycloak.quarkus.runtime.KeycloakMain] (main) Running the server in development mode. DO NOT use this configuration in production.

前のバージョンのユーザ情報でコンソールにもログインができました。設定したクライアント情報も移行済み。

Ver24.0.5の管理コンソール

尚、バージョン24での変更内容として以下がありましたが

管理コンソールが有効になっている場合、管理ユーザーがすでに存在すると、ウェルカムページが自動的に管理コンソールにリダイレクトされます。

実際にそのような挙動に変更されていました。

終わりに

現行のH2データには触れない形でアップデートを行ったため、切り戻し時のリスクなくアップデートを試すことができました。
以下のようにH2データベースにも接続して確認を行いましたが、テーブル名一覧は変わっていなかったので、大きなバージョン変更の差異が無かったのかもしれません。

sql> SELECT table_name FROM INFORMATION_SCHEMA.TABLES;

以上、ご参考になれば幸いです。