Hitachi

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


2.3.3 uCosminexus Application Runtime for Spring Bootコンテナベースイメージの作成(通常版限定)

このコンテナベースイメージは、通常版のユーザ責務のコンテナイメージでuCosminexus Application Runtime for Spring Bootを導入する場合だけ作成します。

uCosminexus Application Runtime for Spring Bootコンテナベースイメージは、uCosminexus Application Runtime for Spring Bootを導入するユーザ責務のコンテナイメージのベースイメージとして使用します。uCosminexus Application Runtime for Spring Bootのインストール部分を共通のベースイメージとして作成することで、各種コンテナイメージのContainerfileの記述量の軽減、およびビルドした各種コンテナイメージのサイズを低減できるメリットがあります。

uCosminexus Application Runtime for Spring Bootコンテナベースイメージの作成方法について説明します。

〈この項の構成〉

(1) Containerfileの作成

6.3.1 uCosminexus Application Runtime for Spring Bootコンテナベースイメージ(通常版限定)」に記載されている要件を満たすように、uCosminexus Application Runtime for Spring BootコンテナベースイメージをビルドするためのContainerfileを作成してください。

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

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 HL0R ./
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 registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212     …5
COPY --from=builder /opt /opt     …6
RUN microdnf install \     …7
        -y \
        --setopt=install_weak_deps=0 \
        --nodocs \
        dnf \
    && dnf install \
        -y \
        --setopt=install_weak_deps=0 \
        --nodocs \
        --allowerasing \
        java-21-openjdk-headless \     …8
        curl-minimal \
        jq \
        <uCosminexus Application Runtime for Spring Bootの前提RPMパッケージ>     …9
        :
    && dnf clean all \
    && rm -rf /var/cache/dnf/*
ENV PATH=/usr/lib/jvm/java-21-openjdk-21.0.7.0.6-1.el9.x86_64/bin:$PATH     …8
 
RUN chgrp -R 1001 /opt/hitachi/ucars     …10
 
USER 1001:0     …11
WORKDIR /deployments     …12

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

<説明>

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

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

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

  4. このオレンジ色の背景で示す行は、uCosminexus Application Runtime for Spring Bootの修正パッチを適用する場合だけ記述します。

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

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

  6. マルチステージビルド用のコンテナイメージからuCosminexus Application Runtime for Spring Bootのインストール先ディレクトリ「/opt」をコピーします。これによって、このコンテナイメージにuCosminexus Application Runtime for Spring Bootをインストールした状態となります。

  7. 「RUN microdnf install \」の行から「jq \」の行で、HMP-PCTOの前提RPMパッケージをインストールします。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」の場合を記載しています。コンテナベースイメージがUBI 8の場合は、curl-minimalをcurlに変更してください。

  8. 他社製のJava VMを指定します。この例では、Java SE 21準拠のJDKとして「OpenJDK 21」を使用しています。環境変数PATHの先頭に、他社製のJava VMのコマンド群がインストールされているディレクトリを追加します。

  9. uCosminexus Application Runtime for Spring Bootの前提RPMパッケージをインストールします。uCosminexus Application Runtime for Spring Bootのリリースノートを参照し、uCosminexus Application Runtime for Spring Bootに必要な前提RPMパッケージを記述してください。

  10. このオレンジ色の背景で示す行は、Red Hat OpenShift Container Platformを使用し、SCC(Security Context Constraints)の設定でコンテナ実行時にrootユーザでの実行を許容しない場合に記述してください。uCARSのインストールディレクトリ配下の所有グループを実行ユーザが属するグループに変更してください。

  11. 任意のコンテナ実行ユーザ・グループを指定します。

  12. アプリケーション配置用ディレクトリを作成します。

ヒント

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‒9 Containerfileと資材の配置構成

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

作成・提供元

備考

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

ユーザ

Containerfile

ユーザ

X64LIN

(uCosminexus Application Runtime for Spring Bootのインストーラ)

日立

uCosminexus Application Runtime for Spring BootのインストールCD-ROMに格納されているX64LINディレクトリをコピーしてください。

PACK_TAR.Z

(uCosminexus Application Runtime for Spring Bootの修正パッチ)

日立

uCosminexus Application Runtime for Spring Bootの修正パッチを適用する場合だけ格納してください。

DigiCertGlobalRootG2.crt

(DigiCertGlobalRootG2 CA証明書)

ユーザ

分散トレース収集サービスにAzure Monitor Application Insightsを使用する場合だけ格納してください。

GTS Root R1.pem

GTS Root R2.pem

GTS Root R3.pem

GTS Root R4.pem

(GTS Root R1、GTS Root R2、GTS Root R3、GTS Root R4証明書)

ユーザ

分散トレース収集サービスにGoogle Cloud PlatformのCloud Traceを使用する場合だけ格納してください。

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

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

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

uCosminexus Application Runtime for Spring Bootコンテナベースイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]ucars:<uCosminexus Application Runtime for Spring Bootバージョン>△.

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

<実行例>

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/ucars:01-12-01 .

この例では、uCosminexus Application Runtime for Spring Bootのバージョンを「01-12-01」としています。

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

ビルドしたuCosminexus Application Runtime for Spring Bootコンテナベースイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

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