3.5. カスタム JDBC ドライバーの使用
データベースに接続するには、そのデータベースの JDBC ドライバーが存在し、Red Hat Single Sign-On が適切に設定されている必要があります。現在、イメージで利用可能な JDBC ドライバーは PostgreSQL JDBC ドライバーのみです。他のデータベースの場合は、カスタム JDBC ドライバーと CLI スクリプトを使用して Red Hat Single Sign-On イメージを拡張し、接続プロパティーを設定する必要があります。以下の手順は、MariaDB ドライバーを例として取る方法を示しています。それに応じて、その他のデータベースドライバーの例を更新します。
手順
- 空のディレクトリーを作成します。
- JDBC ドライバーバイナリーをこのディレクトリーにダウンロードします。
以下の内容で、このディレクトリーに新規の
Dockerfileファイルを作成します。他のデータベースの場合は、mariadb-java-client-2.5.4.jarを適切なドライバーのファイル名に置き換えます。FROM rh-sso-7/sso76-openshift-rhel8:latest COPY sso-extensions.cli /opt/eap/extensions/ COPY mariadb-java-client-2.5.4.jar /opt/eap/extensions/jdbc-driver.jar以下の内容で、このディレクトリーに新しい
sso-extensions.cliファイルを作成します。デプロイメントのニーズに応じて、イタリック体の変数の値を更新します。batch set DB_DRIVER_NAME=mariadb set DB_USERNAME=username set DB_PASSWORD=password set DB_DRIVER=org.mariadb.jdbc.Driver set DB_XA_DRIVER=org.mariadb.jdbc.MariaDbDataSource set DB_JDBC_URL=jdbc:mariadb://jdbc-host/keycloak set DB_EAP_MODULE=org.mariadb set FILE=/opt/eap/extensions/jdbc-driver.jar module add --name=$DB_EAP_MODULE --resources=$FILE --dependencies=javax.api,javax.resource.api /subsystem=datasources/jdbc-driver=$DB_DRIVER_NAME:add( \ driver-name=$DB_DRIVER_NAME, \ driver-module-name=$DB_EAP_MODULE, \ driver-class-name=$DB_DRIVER, \ driver-xa-datasource-class-name=$DB_XA_DRIVER \ ) /subsystem=datasources/data-source=KeycloakDS:remove() /subsystem=datasources/data-source=KeycloakDS:add( \ jndi-name=java:jboss/datasources/KeycloakDS, \ enabled=true, \ use-java-context=true, \ connection-url=$DB_JDBC_URL, \ driver-name=$DB_DRIVER_NAME, \ user-name=$DB_USERNAME, \ password=$DB_PASSWORD \ ) run-batchこのディレクトリーで以下のコマンドを入力し、
project/name:tagを任意の名前に置き換えてイメージをビルドします。dockerは、podmanの代わりに使用できます。$ podman build -t docker-registry-default/project/name:tag .- ビルドが完了したら、イメージをデプロイするために OpenShift で使用されるレジストリーにイメージをプッシュします。詳細は、OpenShift ガイド を参照してください。
Red Hat Single Sign-On OpenShift テンプレートで以前に作成された既存の Red Hat Single Sign-On OpenShift DeploymentConfig を使用して、前のステップで構築したカスタム JDBC ドライバーでこのイメージを使用する場合は、DeploymentConfig 定義を修正する必要があります。以下のコマンドを入力します。
$ oc patch dc/sso --type=json -p '[{"op": "replace", "path": "/spec/triggers/0/imageChangeParams/from/name", "value": "sso76-openshift-rhel8-image-with-custom-jdbc-driver:latest"}]' "sso" patchedこのコマンドは、カスタム JDBC ドライバーとの Red Hat Single Sign-On イメージのイメージストリーム名とタグの組み合わせが sso76-openshift-rhel8-image-with-custom-jdbc-driver:latest であると想定します。