3.6. KIE Server および Smart Router 用のカスタムイメージの作成
カスタムイメージを作成して、ファイルを KIE Server および Smart Router デプロイメントに追加できます。次に、イメージを独自のコンテナーレジストリーにプッシュする必要があります。Red Hat Process Automation Manager をデプロイする場合は、カスタムイメージを使用するように Operator を設定できます。
カスタムイメージを使用する場合は、自動のバージョンアップグレードを無効にする必要があります。新規バージョンをインストールする場合は、以前と同じ名前と、新規バージョンタグを指定してイメージをビルドし、レジストリーにそのイメージをプッシュします。その後にバージョンを変更すると、Operator が自動的に新規イメージをプルします。Operator での製品バージョンの変更に関する説明は、「Operator を使用してデプロイした環境の変更」 を参照してください。
特に、次のタイプのカスタムイメージを作成できます。
- 追加の RPM パッケージを含めた KIE Server のカスタムイメージ
- 追加の JAR クラスライブラリーを含めた KIE Server のカスタムイメージ
- カスタムルーティングを実装する追加の JAR クラスライブラリーが含まれる Smart Router のカスタムイメージ
3.6.1. 追加の RPM パッケージを含めたカスタムの KIE Server イメージの作成
追加の RPM パッケージのインストール先のカスタム KIE Server イメージを作成できます。このイメージをカスタムレジストリーにプッシュして、KIE Server のデプロイに使用できます。
Red Hat Enterprise Linux 8 リポジトリーから任意のパッケージをインストールできます。以下の例では、ps
ユーティリティーが含まれる procps-ng
パッケージをインストールしていますが、変更して他のパッケージをインストールすることができます。
手順
-
podman login
コマンドを使用してregistry.redhat.io
レジストリーの認証を行います。レジストリーの認証に関する詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。 サポートされている KIE Server のベースイメージをダウンロードするには、次のコマンドを入力します。
podman pull registry.redhat.io/rhpam-7/rhpam-kieserver-rhel8:7.12.0
ベースイメージをもとにカスタムイメージを定義する
Dockerfile
を作成します。このファイルで、現在のユーザーをroot
に変更して、yum
コマンドで RPM パッケージをインストールしてからUSER 185
(Red Hat JBoss EAP ユーザー) に戻します。以下の例では、Dockerfile
ファイルの内容を示します。FROM registry.redhat.io/rhpam-7/rhpam-kieserver-rhel8:7.12.0 USER root RUN yum -y install procps-ng USER 185
必要に応じて RPM ファイルの名前を置き換えます。
yum
コマンドは自動的に Red Hat Enterprise Linux 8 リポジトリーからの全依存関係を自動的にインストールします。複数の RMP ファイルをインストールする必要がある場合があります。今回は、RUN
コマンドを複数回使用します。Dockerfile
を使用してカスタムイメージをビルドします。レジストリー名など、イメージの完全修飾名を指定します。ベースイメージと同じバージョンタグを使用する必要があります。イメージをビルドするには、以下のコマンドを入力します。podman build . --tag registry_address/image_name:7.12.0
以下に例を示します。
podman build . --tag registry.example.com/custom/rhpam-kieserver-rhel8:7.12.0
ビルドが完了したら、イメージを実行してログインし、カスタマイズが成功したことを確認します。以下のコマンドを入力します。
podman run -it --rm registry_address/image_name:7.12.0 /bin/bash
以下に例を示します。
podman run -it --rm registry.example.com/custom/rhpam-kieserver-rhel8:7.12.0 /bin/bash
イメージのシェルプロンプトで、コマンドを入力して RPM がインストールされていることをテストし、
exit
と入力します。たとえば、procps-ng
の場合はps
コマンドを実行します。[jboss@c2fab36b778e ~]$ ps PID TTY TIME CMD 1 pts/0 00:00:00 bash 13 pts/0 00:00:00 ps [jboss@c2fab36b778e ~]$ exit
カスタムイメージをレジストリーにプッシュするには、次のコマンドを入力します。
podman push registry_address/image_name:7.12.0 docker://registry_address/image_name:7.12.0
以下に例を示します。
podman push registry.example.com/custom/rhpam-kieserver-rhel8:7.12.0 docker://registry.example.com/custom/rhpam-kieserver-rhel8:7.12.0
次のステップ
KIE Server をデプロイする場合は、イメージ名と namespace を設定してレジストリーにカスタムイメージを指定します。Set KIE Server image をクリックして、Kind の値を DockerImage に変更してから、バージョンタグがないレジストリー名など、イメージ名を指定します。以下に例を示します。
registry.example.com/custom/rhpam-kieserver-rhel8
Operator を使用した KIE Server のデプロイに関する詳細は、「環境のカスタム KIE Server 設定の設定」 を参照してください。
3.6.2. 追加の JAR ファイルを使用したカスタム KIE Server イメージの作成
追加の JAR ファイル (単数、複数問わず) のインストール先のカスタムの KIE Server イメージを作成してサーバーの機能を拡張できます。このイメージをカスタムレジストリーにプッシュして、KIE Server のデプロイに使用できます。
たとえば、カスタムクラス JAR を作成して、カスタムの Prometheus メトリクスを KIE Server に提供できます。カスタムクラスの作成手順は、KIE Server の管理とモニターリングの カスタムのメトリクスを使用した KIE Server の Prometheus メトリクスモニターリングの拡張 を参照してください。
手順
KIE Server で動作するカスタムライブラリーを開発します。以下のドキュメントと例を使用して、ライブラリーを開発できます。
-
JAR ファイルが
target
ディレクトリーに配置されるように Maven を使用してライブラリーをビルドします。この例では、custom-kieserver-ext-1.0.0.Final.jar
のファイル名を使用します。 -
podman login
コマンドを使用してregistry.redhat.io
レジストリーの認証を行います。レジストリーの認証に関する詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。 サポートされている KIE Server のベースイメージをダウンロードするには、次のコマンドを入力します。
podman pull registry.redhat.io/rhpam-7/rhpam-kieserver-rhel8:7.12.0
ベースイメージをもとにカスタムイメージを定義する
Dockerfile
を作成します。このファイルは JAR ファイル (単数、複数を問わず) を/opt/eap/standalone/deployments/ROOT.war/WEB-INF/lib/
ディレクトリーにコピーする必要があります。以下の例では、Dockerfile
ファイルの内容を示します。FROM registry.redhat.io/rhpam-7/rhpam-kieserver-rhel8:7.12.0 COPY target/custom-kieserver-ext-1.0.0.Final.jar /opt/eap/standalone/deployments/ROOT.war/WEB-INF/lib/
Dockerfile
を使用してカスタムイメージをビルドします。レジストリー名など、イメージの完全修飾名を指定します。ベースイメージと同じバージョンタグを使用する必要があります。イメージをビルドするには、以下のコマンドを入力します。podman build . --tag registry_address/image_name:7.12.0
以下に例を示します。
podman build . --tag registry.example.com/custom/rhpam-kieserver-rhel8:7.12.0
カスタムイメージをレジストリーにプッシュするには、次のコマンドを入力します。
podman push registry_address/image_name:7.12.0 docker://registry_address/image_name:7.12.0
以下に例を示します。
podman push registry.example.com/custom/rhpam-kieserver-rhel8:7.12.0 docker://registry.example.com/custom/rhpam-kieserver-rhel8:7.12.0
次のステップ
KIE Server をデプロイする場合は、イメージ名と namespace を設定してレジストリーにカスタムイメージを指定します。Set KIE Server image をクリックして、Kind の値を DockerImage に変更してから、バージョンタグがないレジストリー名など、イメージ名を指定します。以下に例を示します。
registry.example.com/custom/rhpam-kieserver-rhel8
Operator を使用した KIE Server のデプロイに関する詳細は、「環境のカスタム KIE Server 設定の設定」 を参照してください。
3.6.3. カスタムルーティングを実装する追加の JAR ファイルを使用したカスタム Smart Router イメージの作成
デフォルトでは、Smart Router はコンテナーエイリアスに基づいて要求をルーティングします。複数の KIE Server が同じコンテナーエイリアスを持つサービスを提供している場合、Smart Router はそのエイリアス間の負荷を分散します。
場合によっては、カスタムのルーティング機能が必要になる場合があります。カスタムクラスを作成してカスタムルーティングを実装してから、クラスでカスタムの Smart Router イメージを作成できます。このイメージをカスタムレジストリーにプッシュして、Smart Router のデプロイに使用できます。
前提条件
- JDK および Apache Maven がインストールされている。
- Red Hat Process Automation Manager をデプロイするプロジェクトが Red Hat OpenShift Container Platform 環境に作成されている。
- Red Hat OpenShift Container Platform イメージレジストリーのルートを把握しており、イメージをレジストリーにプッシュするパーミッションがある。レジストリーの設定手順は、Red Hat OpenShift Container Platform の製品ドキュメントの Registry を参照してください。
手順
- GitHub リポジトリー から、ルーター拡張のサンプルソースをダウンロードします。
- 必要に応じて、ルーター拡張のサンプルソースを変更します。既存のコードは、コンテナーのバージョンに基づいて単純なルーティングを実装します。
Maven を使用してソースコードをビルドします。
mvn clean package
ビルドプロセスにより JAR ファイル
target/router-ext-0.0.1-SNAPSHOT.jar
が生成されます。カスタムイメージを作成する作業ディレクトリーを作成し、生成された JAR ファイルをディレクトリーにコピーしてから、以下のようにディレクトリーに移動します。
mkdir /tmp/smartrouter cp target/router-ext-0.0.1-SNAPSHOT.jar /tmp/smartrouter cd /tmp/smartrouter
-
podman login
コマンドを使用してregistry.redhat.io
レジストリーの認証を行います。レジストリーの認証に関する詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。 サポートされている Smart Router のベースイメージをダウンロードするには、次のコマンドを入力します。
podman pull registry.redhat.io/rhpam-7/rhpam-smartrouter-rhel8:7.12.0
公式の Smart Router イメージから
openshift-launch.sh
ファイルを展開します。podman run --rm registry.redhat.io/rhpam-7/rhpam-smartrouter-rhel8:7.12.0 \ cat /opt/rhpam-smartrouter/openshift-launch.sh > openshift-launch.sh
openshift-launch.sh
ファイルを編集します。ファイルの最後の行で、以下のようなexec
命令を探します。exec ${JAVA_HOME}/bin/java ${SHOW_JVM_SETTINGS} ${JAVA_OPTS} ${JAVA_OPTS_APPEND} ${JAVA_PROXY_OPTIONS} "${D_ARR[@]}" -jar /opt/${JBOSS_PRODUCT}/${KIE_ROUTER_DISTRIBUTION_JAR}
命令を以下のテキストに変更します。
exec ${JAVA_HOME}/bin/java ${SHOW_JVM_SETTINGS} "${D_ARR[@]}" \ -cp /opt/${JBOSS_PRODUCT}/router-ext-0.0.1-SNAPSHOT.jar:/opt/${JBOSS_PRODUCT}/${KIE_ROUTER_DISTRIBUTION_JAR} \ org.kie.server.router.KieServerRouter
この変更により、エクステンション JAR ファイルが Java クラスパスに追加されます。
ベースイメージをもとにカスタムイメージを定義する
Dockerfile
ファイルを作成します。以下の例では、Dockerfile
ファイルの内容を示します。FROM registry.redhat.io/rhpam-7/rhpam-smartrouter-rhel8:7.12.0 RUN rm -rfv /opt/rhpam-smartrouter/openshift-launch.sh COPY openshift-launch.sh /opt/rhpam-smartrouter/openshift-launch.sh COPY router-ext-0.0.1-SNAPSHOT.jar /opt/rhpam-smartrouter/router-ext-0.0.1-SNAPSHOT.jar USER root RUN chown jboss. /opt/rhpam-smartrouter/router-ext-0.0.1-SNAPSHOT.jar /opt/rhpam-smartrouter/openshift-launch.sh RUN chmod +x /opt/rhpam-smartrouter/openshift-launch.sh USER 185
このファイルには、以下のアクションが含まれます。
-
JAR ファイルおよび新規の
openshift-launch.sh
ファイルを追加します。 -
現在のユーザーを
root
に変更します。 -
openshift-launch.sh
ファイルに必要なパーミッションを設定します。 -
Red Hat JBoss EAP ユーザーである
USER 185
に戻ります。
-
JAR ファイルおよび新規の
-
oc
コマンドを使用して、Red Hat OpenShift Container Platform クラスターにログインします。 -
podman login
コマンドを使用して、Red Hat OpenShift Container Platform クラスターレジストリーにログインします。 Dockerfile
を使用してカスタムイメージをビルドします。Red Hat OpenShift Container Platform クラスターレジストリーおよびプロジェクト名前空間のイメージにタグを付けます。イメージのカスタム名と、ベースイメージのバージョンと同じバージョンタグを使用します。イメージをビルドするには、以下のコマンドを入力します。podman build . --tag registry-route/project-name_/image-name:7.12.0
以下に例を示します。
podman build . --tag route-openshift-image-registry.openshift.example.com/rhpam-project/rhpam-smartrouter-rhel8-custom:7.12.0
ビルドが完了したら、イメージを実行して、カスタマイズが成功したことを確認します。以下のコマンドを入力します。
podman run registry-route/project-name/image-name:7.12.0
以下に例を示します。
podman run route-openshift-image-registry.openshift.example.com/rhpam-project/rhpam-smartrouter-rhel8-custom:7.12.0
以下の例のように、出力にカスタムサービスが記載されていることを確認します。
INFO: Using 'LatestVersionContainerResolver' container resolver and restriction policy 'ByPassUserNotAllowedRestrictionPolicy'
カスタムイメージをレジストリーにプッシュします。
podman push registry-route/project-name/image-name:7.12.0
以下に例を示します。
podman push route-openshift-image-registry.openshift.example.com/rhpam-project/rhpam-smartrouter-rhel8-custom:7.12.0
次のステップ
Red Hat Process Automation Manager をデプロイする場合は、Smart Router タブに以下の値を設定します。
-
イメージコンテキスト: プロジェクト名 (例:
rhpam-project
) -
イメージ: カスタムイメージ名 (例:
rhpam-smartrouter-rhel8-custom
)
Operator を使用した Smart Router のデプロイメント方法は、「環境の Smart Router 設定の設定」 を参照してください。
現在のバージョンタグの代わりにカスタムタグを使用することもできます。ただし、現行バージョンタグを使用する場合は、バージョンタグを使用して、新しいバージョンのイメージを作成できます。Red Hat Process Automation Manager のバージョンをアップグレードすると、新しいイメージが自動的に含まれます。Red Hat Process Automation Manager のバージョンをアップグレードする手順は、「Operator を使用してデプロイした環境の変更」 を参照してください。
カスタムタグを使用する場合は、Red Hat Process Automation Manager のデプロイ時に Smart Router タブで Image Tag の値をカスタムタグに設定します。