2.3.5 Orchestrator-Serviceコンテナイメージの作成
Orchestrator-Serviceコンテナイメージの作成方法について説明します。
(1) Containerfileの作成
「6.4.1 Orchestrator-Serviceコンテナイメージ」に記載されている要件を満たすように、Orchestrator-ServiceコンテナイメージをビルドするためのContainerfileを作成してください。
Containerfileの記述例を次に示します。
■通常版(uCosminexus Application Runtime for Spring Boot導入あり)の場合
FROM myregistry.example.com/myproject/ucars:01-12-01 …1
COPY --chown=1001:0 --chmod=0440 ./orchestrator-V.R.S※.jar /deployments/ …2
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/ …3
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/ …4
CMD /opt/hitachi/ucars/bin/starter.sh java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/orchestrator-V.R.S※.jar …5
記述例の番号は、説明の番号と対応しています。
<説明>
-
コンテナベースイメージとして「2.3.3 uCosminexus Application Runtime for Spring Bootコンテナベースイメージの作成(通常版限定)」で作成した「uCosminexus Application Runtime for Spring Bootコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/ucars:01-12-01」を指定しています。
-
「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」の名前を「orchestrator-V.R.S※.jar」としています。
-
「HMP-PCTOのトランザクションヘルスチェックスクリプト(health_check.sh)」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。
-
「HMP-PCTOの未決着トランザクション待機スクリプト(wait_transactions.sh)」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。
-
コマンドを「uCosminexus Application Runtime for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」を指定します。
- 注※
-
V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。
■通常版(uCosminexus Application Runtime for Spring Boot導入なし)の場合
FROM myregistry.example.com/myproject/jdk:latest …1
COPY --chown=1001:0 --chmod=0440 ./orchestrator-V.R.S※.jar /deployments/ …2
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/ …3
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/ …4
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/orchestrator-V.R.S※.jar …5
記述例の番号は、説明の番号と対応しています。
<説明>
-
コンテナベースイメージとして「2.3.4 JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:latest」を指定しています。
-
「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」の名前を「orchestrator-V.R.S※.jar」としています。
-
「HMP-PCTOのトランザクションヘルスチェックスクリプト(health_check.sh)」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。
-
「HMP-PCTOの未決着トランザクション待機スクリプト(wait_transactions.sh)」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。
-
コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」を指定します。
- 注※
-
V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。
■トライアル版の場合
FROM myregistry.example.com/myproject/jdk:latest …1
COPY --chown=1001:0 --chmod=0440 ./orchestrator-V.R.S※.jar /deployments/ …2
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/ …3
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/ …4
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/orchestrator-V.R.S※.jar …5
記述例の番号は、説明の番号と対応しています。
<説明>
-
コンテナベースイメージとして「2.3.4 JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:latest」を指定しています。
-
「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」の名前を「orchestrator-V.R.S※.jar」としています。
-
「HMP-PCTOのトランザクションヘルスチェックスクリプト(health_check.sh)」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。
-
「HMP-PCTOの未決着トランザクション待機スクリプト(wait_transactions.sh)」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。
-
コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」を指定します。
- 注※
-
V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。
- ヒント
-
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と資材をコンテナイメージビルド環境に配置してください。
|
ファイル/ディレクトリ構成 |
作成・提供元 |
備考 |
|
|---|---|---|---|
|
<コンテナイメージビルド作業ディレクトリ>/ |
ユーザ |
− |
|
|
Containerfile |
ユーザ |
− |
|
|
<ユーザのOrchestrator-ServiceアプリケーションのJARファイル> |
ユーザ |
− |
|
|
health_check.sh (HMP-PCTOのトランザクションヘルスチェックスクリプト) |
日立 |
− |
|
|
wait_transactions.sh (HMP-PCTOの未決着トランザクション待機スクリプト) |
日立 |
− |
|
(凡例)−:該当しません。
(3) コンテナイメージのビルド
Containerfileを使用して、コンテナイメージをビルドします。
Orchestrator-Serviceコンテナイメージのビルドのコマンドを次に示します。
cd <コンテナイメージビルド作業ディレクトリ>/ docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]<Orchestrator-Serviceコンテナイメージのユーザ任意のイメージ名>:<ユーザ任意のタグ名>△.
(凡例)△:半角スペース1文字
<実行例>
cd build/ docker build -f ./Containerfile -t myregistry.example.com/myproject/orchestrator:latest .
この例では、Orchestrator-Serviceコンテナイメージのイメージ名・タグ名を「orchestrator:latest」としています。
(4) コンテナイメージの登録
ビルドしたOrchestrator-Serviceコンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。
インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。