2.4.7 SQL-Participantコンテナイメージの作成(SQL-Participant限定)
SQL-Participantコンテナイメージの作成方法について説明します。
(1) Containerfileの作成
「5.3.5 SQL-Participantコンテナイメージ」に記載されている要件を満たすように、SQL-ParticipantコンテナイメージをビルドするためのContainerfileを作成してください。
Containerfileの記述例を次に示します。
■通常版・uCosminexus Application Runtime with Java for Spring Boot導入ありの場合
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.8-860 AS builder …1 RUN microdnf install \ …2 -y \ --setopt=install_weak_deps=0 \ --nodocs \ ncompress \ 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:V.R.S※ …5 RUN mkdir /deployments/eads-lib \ && mkdir /deployments/eads-log \ && chown 1001:0 /deployments/eads-log \ && chmod 770 /deployments/eads-log …6 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 ./sql-participant-V.R.S※.jar /deployments/ …11 COPY --chown=1001:0 --chmod=0440 ./pdjdbc4.jar /deployments/ …12 COPY --chown=1001:0 --chmod=0440 ./HiRDB.ini /deployments/ …13 CMD /opt/hitachi/ucars/bin/starter.sh java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/sql-participant-V.R.S※.jar …14
記述例の番号は、説明の番号と対応しています。
-
マルチステージビルド用のコンテナベースイメージとしてUBI 8の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 8 Minimal 8.8」を使用しています。
-
Hitachi Elastic Application Data Store Client for Javaのインストーラの前提RPMパッケージをインストールします。
-
Hitachi Elastic Application Data Store Client for Javaのインストーラをコンテナ上に展開してインストールを実行します(「-c」オプションに「HC13」(Hitachi Elastic Application Data Store Client for Java)を指定して実行してください)。
-
オレンジ色の背景で示す行は、Hitachi Elastic Application Data Store Client for Javaの修正パッチを適用する場合だけ記述します。
Hitachi Elastic Application Data Store Client for Javaの修正パッチをコンテナ上に展開してUPDATEプログラムを実行します(「-f」オプションを指定して実行してください)。
-
コンテナベースイメージとして「2.4.3 uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージの作成(通常版限定)」で作成した「uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/ucars:V.R.S※」を指定しています。
-
Hitachi Elastic Application Data Store Client for Javaのライブラリをコピーするディレクトリを作成します。ディレクトリ名は任意ですが、この例では/deployments/eads-libとしています。
Hitachi Elastic Application Data Store Client for Javaのログを出力するディレクトリを作成します。ディレクトリ名は/deployments/eads-logとしてください。
-
環境変数「LOADER_PATH」にHitachi Elastic Application Data Store Client for Javaのライブラリのディレクトリを設定します。6.で作成したディレクトリ名を指定します。
-
マルチステージビルド用のコンテナイメージからHitachi Elastic Application Data Store Client for Javaのインストール先ディレクトリ「/opt/hitachi/xeads/javaclient/lib/」をコピーし、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。コピー先は6.で作成したディレクトリ名を指定します。
-
「HMP-PCTOのトランザクションヘルスチェックスクリプト(health_check.sh)」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。
-
「HMP-PCTOの未決着トランザクション待機スクリプト(wait_transactions.sh)」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。
-
「HMP-PCTOのSQL-ParticipantアプリケーションのJARファイル(sql-participant-V.R.S.jar)」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「HMP-PCTOのSQL-ParticipantアプリケーションのJARファイル(sql-participant-V.R.S.jar)」の名前を「sql-participant-V.R.S※.jar」としています。
-
「JDBC DriverのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「JDBC DriverのJARファイル」の名前を「pdjdbc4.jar」としています。ここで「JDBC DriverのJARファイル」を格納したパスが、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.pathパラメタに設定する値となります。
-
オレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「HiRDB」の場合だけ記述します。HiRDBへの接続に必要なHiRDBのクライアント環境定義ファイル(HiRDB.ini)を配置し、パーミッションにコンテナを実行するユーザおよびグループそれぞれの読み取り権限を付与します。
-
コマンドを「uCosminexus Application Runtime with Java for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「HMP-PCTOのSQL-ParticipantアプリケーションのJARファイル(sql-participant-V.R.S※.jar)」を指定します。
- 注※
-
V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。
■トライアル版の場合
FROM myregistry.example.com/myproject/jdk:V.R.S※ …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 ./sql-participant-V.R.S※.jar /deployments/ …4 COPY --chown=1001:0 --chmod=0440 ./postgresql-42.2.22.jar /deployments/ …5 COPY --chown=1001:0 --chmod=0440 ./HiRDB.ini /deployments/ …6 CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/sql-participant-V.R.S※.jar …7
記述例の番号は、説明の番号と対応しています。
<説明>
-
コンテナベースイメージとして「2.4.4 JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:V.R.S※」を指定しています。
-
「HMP-PCTOのトランザクションヘルスチェックスクリプト(health_check.sh)」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。
-
「HMP-PCTOの未決着トランザクション待機スクリプト(wait_transactions.sh)」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。
-
「HMP-PCTOのSQL-ParticipantアプリケーションのJARファイル(sql-participant-V.R.S※.jar)」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「HMP-PCTOのSQL-ParticipantアプリケーションのJARファイル(sql-participant-V.R.S※.jar)」の名前を「sql-participant-V.R.S※.jar」としています。
-
「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パラメタに設定する値となります。
-
SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「HiRDB」の場合、HiRDBへの接続に必要なHiRDBのクライアント環境定義ファイル(HiRDB.ini)を配置し、パーミッションにコンテナ実行ユーザおよびグループそれぞれの読み取り権限を付与します。
-
コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「HMP-PCTOのSQL-ParticipantアプリケーションのJARファイル(sql-participant-V.R.S※.jar)」を指定します。
- 注※
-
V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。
- ヒント
-
Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定
Red Hat OpenShift Container Platformには、SCC(Security Context Constraints)と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、PodのKubernetesマニフェストでrunAsUserフィールドによるコンテナ起動ユーザが未設定の場合、コンテナイメージビルド時に設定したユーザ・グループを使用しないで、一定範囲内のランダムなUID(非root)とGID「0」(root)でコンテナを実行します。
このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」(root)を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。
(2) Containerfileと資材の配置
次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。
ファイル/ディレクトリ構成 |
作成・提供元 |
備考 |
|
---|---|---|---|
<コンテナイメージビルド作業ディレクトリ>/ |
ユーザ |
− |
|
Containerfile |
ユーザ |
− |
|
sql-participant-V.R.S.jar (HMP-PCTOのSQL-Participantアプリケーションの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を使用して、コンテナイメージをビルドします。
SQL-Participantコンテナイメージのビルドのコマンドを次に示します。
cd <コンテナイメージビルド作業ディレクトリ>/ docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]<SQL-Participantコンテナイメージのユーザ任意のイメージ名>:<ユーザ任意のタグ名>△.
(凡例)△:半角スペース1文字
<実行例>
cd build/ docker build -f ./Containerfile -t myregistry.example.com/myproject/sql-participant:V.R.S※ .
この例では、SQL-Participantコンテナイメージのイメージ名・タグ名を「sql-participant:V.R.S※」としています。
- 注※
-
V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。
(4) コンテナイメージの登録
ビルドしたSQL-Participantコンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。
インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。