Hitachi

Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator ユーザーズガイド


2.3.11 Alternate-Service(SQL)コンテナイメージの作成(SQL-Participant限定)

このコンテナイメージは、Alternate-ServiceでJDBC Proxy Driver を使用する場合に作成します。

Alternate-Service(SQL)コンテナイメージの作成方法について説明します。

〈この項の構成〉

(1) Containerfileの作成

6.4.7 Alternate-Service(SQL)コンテナイメージ(SQL-Participant限定)」に記載されている要件を満たすように、Alternate-Service(SQL)コンテナイメージをビルドするためのContainerfileを作成してください。

Containerfileの記述例を次に示します。

■通常版(uCosminexus Application Runtime for Spring Boot導入あり)の場合

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212  AS builder     …1
RUN microdnf install \     …2
        -y \
        --setopt=install_weak_deps=0 \
        --nodocs \
        ncurses \
        tar \
        cpio \
        gzip
WORKDIR /tmp
RUN mkdir ./X64LIN     …3
COPY X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HC13 ./
RUN mkdir patch     …4
WORKDIR patch
COPY PACK_TAR.Z .
RUN tar xzvf PACK_TAR.Z && ./UPDATE -f; export RET=$?; if [ ${RET} -ne 0 -a ${RET} -ne 1 ]; then exit ${RET}; fi
 
FROM myregistry.example.com/myproject/ucars:01-12-01     …5
RUN mkdir /deployments/eads-lib \     …6
    && mkdir /deployments/eads-log \
    && chown 1001:0 /deployments/eads-log \
    && chmod 770 /deployments/eads-log
ENV LOADER_PATH=/deployments/eads-lib     …7
COPY --from=builder --chown=1001:0 --chmod=0440 /opt/hitachi/xeads/javaclient/lib/ /deployments/eads-lib     …8
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …9
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …10
COPY --chown=1001:0 --chmod=0440 ./alternate-service-sql.jar /deployments/     …11
COPY --chown=1001:0 --chmod=0440 ./pdjdbc4.jar /deployments/     …12
COPY --chown=1001:0 --chmod=0440 ./xdb-23.6.0.24.10.jar /deployments/     …13
COPY --chown=1001:0 --chmod=0440 ./xmlparserv2_sans_jaxp_services-23.6.0.24.10.jar /deployments/     …14
COPY --chown=1001:0 --chmod=0440 ./HiRDB.ini /deployments/     …15
CMD /opt/hitachi/ucars/bin/starter.sh java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/alternate-service-sql.jar     …16

記述例の番号は、説明の番号と対応しています。

<説明>

  1. マルチステージビルド用のコンテナベースイメージとしてUBI 8または9の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」を使用しています。

  2. 「RUN microdnf install \」の行から「gzip」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラの前提RPMパッケージをインストールします。コンテナベースイメージがUBI 8の場合は、ncompressもインストールしてください。

  3. 「RUN mkdir ./X64LIN」の行から「RUN ./X64LIN/setup -f -c HC13 ./」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラをコンテナ上に展開してインストールを実行します(「-c」オプションに「HC13」(Hitachi Elastic Application Data Store Client for Java)を指定して実行してください)。

  4. このオレンジ色の背景で示す行は、Hitachi Elastic Application Data Store Client for Javaの修正パッチを適用する場合だけ記述します。

    Hitachi Elastic Application Data Store Client for Javaの修正パッチをコンテナ上に展開してUPDATEプログラムを実行します(「-f」オプションを指定して実行してください)。

  5. コンテナベースイメージとして「2.3.3 uCosminexus Application Runtime for Spring Bootコンテナベースイメージの作成(通常版限定)」で作成した「uCosminexus Application Runtime for Spring Bootコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/ucars:01-12-01」を指定しています。

  6. 「RUN mkdir /deployments/eads-lib \」の行から「&& chmod 770 /deployments/eads-log」の行で、Hitachi Elastic Application Data Store Client for Javaのライブラリをコピーするディレクトリを作成します。ディレクトリ名は任意ですが、この例では/deployments/eads-libとしています。

    また、Hitachi Elastic Application Data Store Client for Javaのログを出力するディレクトリを作成します。ディレクトリ名は/deployments/eads-logとしてください。

  7. 環境変数「LOADER_PATH」に、Hitachi Elastic Application Data Store Client for Javaのライブラリのディレクトリを設定します。6.で作成したディレクトリ名を指定します。

  8. マルチステージビルド用のコンテナイメージからHitachi Elastic Application Data Store Client for Javaのインストール先ディレクトリ「/opt/hitachi/xeads/javaclient/lib/」をコピーし、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。コピー先は6.で作成したディレクトリ名を指定します。

  9. 「HMP-PCTOのトランザクションヘルスチェックスクリプト(health_check.sh)」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

  10. 「HMP-PCTOの未決着トランザクション待機スクリプト(wait_transactions.sh)」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

  11. 「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」の名前を「alternate-service-sql.jar」としています。

  12. 「JDBC DriverのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「JDBC DriverのJARファイル」の名前を「pdjdbc4.jar」としています。ここで「JDBC DriverのJARファイル」を格納したパスが、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.pathパラメタに設定する値となります。

  13. このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「OracleDatabase」、かつXMLType型を利用する場合だけ記述します。必要な追加ライブラリを配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。ライブラリの詳細については、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタを参照してください。

    ここで格納したライブラリをSQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタに設定してください。

  14. 13と同じです。

  15. このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「HiRDB」の場合だけ記述します。HiRDBへの接続に必要なHiRDBのクライアント環境定義ファイル(HiRDB.ini)を配置し、パーミッションにコンテナを実行するユーザおよびグループそれぞれの読み取り権限を付与します。

  16. コマンドを「uCosminexus Application Runtime for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」を指定します。

■通常版(uCosminexus Application Runtime for Spring Boot導入なし)の場合

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212  AS builder     …1
RUN microdnf install \     …2
        -y \
        --setopt=install_weak_deps=0 \
        --nodocs \
        ncurses \
        tar \
        cpio \
        gzip
WORKDIR /tmp
RUN mkdir ./X64LIN     …3
COPY X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HC13 ./
RUN mkdir patch     …4
WORKDIR patch
COPY PACK_TAR.Z .
RUN tar xzvf PACK_TAR.Z && ./UPDATE -f; export RET=$?; if [ ${RET} -ne 0 -a ${RET} -ne 1 ]; then exit ${RET}; fi
 
FROM myregistry.example.com/myproject/jdk:latest     …5
RUN mkdir /deployments/eads-lib \     …6
    && mkdir /deployments/eads-log \
    && chown 1001:0 /deployments/eads-log \
    && chmod 770 /deployments/eads-log
ENV LOADER_PATH=/deployments/eads-lib     …7
COPY --from=builder --chown=1001:0 --chmod=0440 /opt/hitachi/xeads/javaclient/lib/ /deployments/eads-lib     …8
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …9
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …10
COPY --chown=1001:0 --chmod=0440 ./alternate-service-sql.jar /deployments/     …11
COPY --chown=1001:0 --chmod=0440 ./pdjdbc4.jar /deployments/     …12
COPY --chown=1001:0 --chmod=0440 ./xdb-23.6.0.24.10.jar /deployments/     …13
COPY --chown=1001:0 --chmod=0440 ./xmlparserv2_sans_jaxp_services-23.6.0.24.10.jar /deployments/     …14
COPY --chown=1001:0 --chmod=0440 ./HiRDB.ini /deployments/     …15
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/alternate-service-sql.jar     …16

記述例の番号は、説明の番号と対応しています。

<説明>

  1. マルチステージビルド用のコンテナベースイメージとしてUBI 8または9の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」を使用しています。

  2. 「RUN microdnf install \」の行から「gzip」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラの前提RPMパッケージをインストールします。コンテナベースイメージがUBI 8の場合は、ncompressもインストールしてください。

  3. 「RUN mkdir ./X64LIN」の行から「RUN ./X64LIN/setup -f -c HC13 ./」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラをコンテナ上に展開してインストールを実行します(「-c」オプションに「HC13」(Hitachi Elastic Application Data Store Client for Java)を指定して実行してください)。

  4. このオレンジ色の背景で示す行は、Hitachi Elastic Application Data Store Client for Javaの修正パッチを適用する場合だけ記述します。

    Hitachi Elastic Application Data Store Client for Javaの修正パッチをコンテナ上に展開してUPDATEプログラムを実行します(「-f」オプションを指定して実行してください)。

  5. コンテナベースイメージとして「2.3.4 JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:latest」を指定しています。

  6. 「RUN mkdir /deployments/eads-lib \」の行から「&& chmod 770 /deployments/eads-log」の行で、Hitachi Elastic Application Data Store Client for Javaのライブラリをコピーするディレクトリを作成します。ディレクトリ名は任意ですが、この例では/deployments/eads-libとしています。

    また、Hitachi Elastic Application Data Store Client for Javaのログを出力するディレクトリを作成します。ディレクトリ名は/deployments/eads-logとしてください。

  7. 環境変数「LOADER_PATH」に、Hitachi Elastic Application Data Store Client for Javaのライブラリのディレクトリを設定します。6.で作成したディレクトリ名を指定します。

  8. マルチステージビルド用のコンテナイメージからHitachi Elastic Application Data Store Client for Javaのインストール先ディレクトリ「/opt/hitachi/xeads/javaclient/lib/」をコピーし、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。コピー先は6.で作成したディレクトリ名を指定します。

  9. 「HMP-PCTOのトランザクションヘルスチェックスクリプト(health_check.sh)」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

  10. 「HMP-PCTOの未決着トランザクション待機スクリプト(wait_transactions.sh)」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

  11. 「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」の名前を「alternate-service-sql.jar」としています。

  12. 「JDBC DriverのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「JDBC DriverのJARファイル」の名前を「pdjdbc4.jar」としています。ここで「JDBC DriverのJARファイル」を格納したパスが、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.pathパラメタに設定する値となります。

  13. このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「OracleDatabase」、かつXMLType型を利用する場合だけ記述します。必要な追加ライブラリを配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。ライブラリの詳細については、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタを参照してください。

    ここで格納したライブラリをSQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタに設定してください。

  14. 13と同じです。

  15. このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「HiRDB」の場合だけ記述します。HiRDBへの接続に必要なHiRDBのクライアント環境定義ファイル(HiRDB.ini)を配置し、パーミッションにコンテナを実行するユーザおよびグループそれぞれの読み取り権限を付与します。

  16. コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」を指定します。

■トライアル版の場合

FROM myregistry.example.com/myproject/jdk:latest     …1
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …2
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …3
COPY --chown=1001:0 --chmod=0440 ./alternate-service-sql.jar /deployments/     …4
COPY --chown=1001:0 --chmod=0440 ./postgresql-42.2.22.jar /deployments/     …5
COPY --chown=1001:0 --chmod=0440 ./xdb-23.6.0.24.10.jar /deployments/     …6
COPY --chown=1001:0 --chmod=0440 ./xmlparserv2_sans_jaxp_services-23.6.0.24.10.jar /deployments/     …7
COPY --chown=1001:0 --chmod=0440 ./HiRDB.ini /deployments/     …8
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/alternate-service-sql.jar     …9

記述例の番号は、説明の番号と対応しています。

<説明>

  1. コンテナベースイメージとして「2.3.4 JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:latest」を指定しています。

  2. 「HMP-PCTOのトランザクションヘルスチェックスクリプト(health_check.sh)」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

  3. 「HMP-PCTOの未決着トランザクション待機スクリプト(wait_transactions.sh)」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

  4. 「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」の名前を「alternate-service-sql.jar」としています。

  5. 「JDBC DriverのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「JDBC DriverのJARファイル」の名前を「postgresql-42.2.22.jar」としています。ここで「JDBC DriverのJARファイル」を格納したパスが、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.pathパラメタに設定する値となります。

  6. このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「OracleDatabase」、かつXMLType型を利用する場合だけ記述します。必要な追加ライブラリを配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。ライブラリの詳細については、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタを参照してください。

    ここで格納したライブラリをSQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタに設定してください。

  7. 6と同じです。

  8. SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「HiRDB」の場合、HiRDBへの接続に必要なHiRDBのクライアント環境定義ファイル(HiRDB.ini)を配置し、パーミッションにコンテナ実行ユーザおよびグループそれぞれの読み取り権限を付与します。

  9. コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」を指定します。

ヒント

Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定

Red Hat OpenShift Container Platformには、SCC(Security Context Constraints)と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、事前に割り当てられた一定範囲内のUID(非root)とGID「0」(root)でコンテナを実行します。

このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」(root)を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。

(2) Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表2‒17 Containerfileと資材の配置構成

ファイル/ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

Containerfile

ユーザ

ユーザのAlternate-Service(SQL)アプリケーションのJARファイル

ユーザ

<JDBC DriverのJARファイル>

ユーザ

health_check.sh

(HMP-PCTOのトランザクションヘルスチェックスクリプト)

日立

wait_transactions.sh

(HMP-PCTOの未決着トランザクション待機スクリプト)

日立

X64LIN

(Hitachi Elastic Application Data Store Client for Javaのインストーラ)

日立

通常版の場合だけ、この製品に同梱しているHitachi Elastic Application Data Store Client for JavaのインストーラのX64LINディレクトリをコピーしてください。

PACK_TAR.Z

(Hitachi Elastic Application Data Store Client for Javaの修正パッチ)

日立

通常版の場合で、この製品にHitachi Elastic Application Data Store Client for Javaの修正パッチが同梱されている場合だけ格納してください。同梱されていない場合は格納不要です。

(凡例)−:該当しません。

(3) コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

Alternate-Service(SQL)コンテナイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]<Alternate-Service(SQL)コンテナイメージのユーザ任意のイメージ名>:<ユーザ任意のタグ名>△.

(凡例)△:半角スペース1文字

<実行例>

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/alternate-service-sql:latest .

この例では、Alternate-Service(SQL)コンテナイメージのイメージ名・タグ名を「alternate-service-sql:latest」としています。

(4) コンテナイメージの登録

ビルドしたAlternate-Service(SQL)コンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。