4.4. カスタム JDBC ドライバーの使用

データベースに接続するには、そのデータベースの JDBC ドライバーが存在し、Red Hat Single Sign-On が適切に設定されている必要があります。現在、イメージで利用可能な JDBC ドライバーは PostgreSQL JDBC ドライバーのみです。他のデータベースの場合は、カスタム JDBC ドライバーと CLI スクリプトを使用して Red Hat Single Sign-On イメージを拡張し、接続プロパティーを設定する必要があります。以下の手順は、MariaDB ドライバーを例として取る方法を示しています。それに応じて、その他のデータベースドライバーの例を更新します。

  1. 空のディレクトリーを作成します。
  2. JDBC ドライバーバイナリーをこのディレクトリーにダウンロードします。
  3. 以下の内容で、このディレクトリーに新規の Dockerfile ファイルを作成します。他のデータベースの場合は、mariadb-java-client-2.5.4.jar を適切なドライバーのファイル名に置き換えます。

    FROM rh-sso-7/sso74-openshift-rhel8:latest
    
    COPY sso-extensions.cli /opt/eap/extensions/
    COPY mariadb-java-client-2.5.4.jar /opt/eap/extensions/jdbc-driver.jar
  4. 以下の内容で、このディレクトリーに新しい 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
  5. このディレクトリーで以下のコマンドを入力し、project/name:tag を任意の名前に置き換えてイメージをビルドします。docker は、podman の代わりに使用できます。

    podman build -t docker-registry-default/project/name:tag .
  6. ビルドが完了したら、イメージをデプロイするために OpenShift で使用されるレジストリーにイメージをプッシュします。詳細は、OpenShift ガイド を参照してください。