4.6. カスタム Init コンテナーイメージの指定
「Operator によるブローカー設定の生成方法」 で説明されているように、AMQ Broker Operator はデフォルトの組み込み Init コンテナーを使用してブローカー設定を生成します。設定を生成するために、Init コンテナーはデプロイメント用にメインのカスタムリソース (CR) インスタンスを使用します。CR に指定できる唯一の項目は、メインのブローカーカスタムリソース定義 (CRD) で公開される項目です。
ただし、CRD で公開されない設定を含める必要があるかもしれません。この場合、メイン CR インスタンスでカスタム Init コンテナーを指定できます。カスタム Init コンテナーは Operator によってすでに作成された設定を修正したり、追加したりできます。たとえば、カスタムの Init コンテナーを使用して、ブローカーのロギング設定を変更することができます。または、カスタムの Init コンテナーを使用して、ブローカーのインストールディレクトリーに追加のランタイム依存関係 (.jar
ファイル) を含めることができます。
カスタムの Init コンテナーイメージを構築する場合は、以下の重要なガイドラインに従う必要があります。
カスタムイメージ用に作成するビルドスクリプト (Docker Dockerfile または Podman Containerfile など) では、
FROM
命令は最新バージョンの AMQ Broker Operator ビルトインの Init コンテナーイメージをベースイメージとして指定する必要があります。スクリプトに以下の行を追加します。FROM registry.redhat.io/amq7/amq-broker-init-rhel8@sha256:b74d03ed852a3731467ffda95266ce49f2065972f1c37bf254f3d52b34c11991
-
カスタムイメージには、
/amq/scripts
というディレクトリーに追加するpost-config.sh
というスクリプトが含まれている必要があります。post-config.sh
スクリプトは、Operator が生成する初期設定を変更または追加できます。カスタム Init コンテナーを指定する場合、Operator はpost-config.sh
スクリプトを実行します。これは、CR インスタンスを使用して設定を生成した後ですが、ブローカーアプリケーションコンテナーを起動する前に実行します。 -
「ブローカー Pod のディレクトリー構造」 で説明されているように、Init コンテナーによって使用されるインストールディレクトリーへのパスは、
CONFIG_INSTANCE_DIR
という環境変数で定義されます。post-config.sh
スクリプトは、インストールディレクトリーを参照する際に、この環境変数名 (例:${CONFIG_INSTANCE_DIR}/lib
) を使用し、この変数の値 (例:/amq/init/config/lib
) ではなく、この環境変数名を使用する必要があります。 -
カスタムブローカー設定に追加のリソース (
.xml
または.jar
ファイルなど) を含める場合は、これらがカスタムイメージに含まれ、post-config.sh
スクリプトからアクセスできることを確認する必要があります。
以下の手順では、カスタムの Init コンテナーイメージを指定する方法を説明します。
前提条件
- Operator のバージョン 7.9.3-opr-3 以上 を使用する必要があります。最新の Operator バージョンにアップグレードする方法は、6章Operator ベースのブローカーデプロイメントのアップグレード を参照してください。
- 上記のガイドラインを満たす、カスタムの Init コンテナーイメージを構築する必要があります。ArtemisCloud Operator のカスタム Init コンテナーイメージをビルドし、指定する完全な例については、「JDBC ベースの永続性のカスタム Init コンテナーイメージ」を参照してください。
- AMQ Broker Operator のカスタム Init コンテナーイメージを提供するには、Quay コンテナーレジストリーなどのコンテナーレジストリーのリポジトリーにイメージを追加できる必要があります。
- Operator による Init コンテナーの使用方法を理解し、ブローカー設定を生成する必要があります。詳細は、「Operator によるブローカー設定の生成方法」 を参照してください。
- CR を使用してブローカーデプロイメントを作成する方法を理解している。詳細は、「Operator ベースのブローカーデプロイメントの作成」 を参照してください。
手順
ブローカーデプロイメントのカスタムリソース (CR) インスタンスの設定を開始します。
OpenShift コマンドラインインターフェースの使用:
デプロイメントを作成するプロジェクトに CR をデプロイする権限を持つユーザーとして OpenShift にログインします。
oc login -u <user> -p <password> --server=<host:port>
-
ダウンロードした Operator インストールアーカイブの
deploy/crs
ディレクトリーに含まれるbroker_activemqartemis_cr.yaml
というサンプル CR ファイルを開きます。
OpenShift Container Platform Web コンソールの使用
- デプロイメントを作成するプロジェクトに CR をデプロイする権限を持つユーザーとしてコンソールにログインします。
-
メインブローカー CRD に基づいて新規 CR インスタンスを起動します。左側のペインで、
をクリックします。 - ActiveMQArtemis CRD をクリックします。
- Instances タブをクリックします。
Create ActiveMQArtemis をクリックします。
コンソールで、YAML エディターが開き、CR インスタンスを設定できます。
基本的なブローカーデプロイメントの場合、設定が以下のように表示される可能性があります。この設定は、
broker_activemqartemis_cr.yaml
サンプル CR ファイルのデフォルトコンテンツです。apiVersion: broker.amq.io/v2alpha4 kind: ActiveMQArtemis metadata: name: ex-aao application: ex-aao-app spec: version: 7.9.3 deploymentPlan: size: 1 image: placeholder requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true
broker_activemqartemis_cr.yaml
サンプル CR ファイルで、image
プロパティーがplaceholder
のデフォルト値に設定されていることを確認します。この値はデフォルトで、image
プロパティーによってデプロイメントに使用するブローカーコンテナーイメージが指定されていないことを示します。Operator が使用する適切なブローカーコンテナーイメージを判別する方法については、「Operator によるコンテナーイメージの選択方法」 を参照してください。CR の
deploymentPlan
セクションで、initImage
プロパティーを追加します。apiVersion: broker.amq.io/v2alpha4 kind: ActiveMQArtemis metadata: name: ex-aao application: ex-aao-app spec: version: 7.9.3 deploymentPlan: size: 1 image: placeholder initImage: requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true
initImage
プロパティーの値をカスタム Init コンテナーイメージの URL に設定します。apiVersion: broker.amq.io/v2alpha4 kind: ActiveMQArtemis metadata: name: ex-aao application: ex-aao-app spec: version: 7.9.3 deploymentPlan: size: 1 image: placeholder initImage: <custom_init_container_image_url> requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true
initImage
- カスタムの Init コンテナーイメージの完全な URL を指定します。この URL をコンテナーレジストリーのリポジトリーに追加しておく必要があります。
CR インスタンスをデプロイします。
OpenShift コマンドラインインターフェースの使用:
- CR ファイルを保存します。
ブローカーデプロイメントを作成するプロジェクトに切り替えます。
$ oc project <project_name>
CR インスタンスを作成します。
$ oc create -f <path/to/custom_resource_instance>.yaml
OpenShift Web コンソールの使用
- CR の設定が完了したら、Create をクリックします。
関連情報
- ArtemisCloud Operator のカスタム Init コンテナーイメージをビルドし、指定する完全な例については、「JDBC ベースの永続性のカスタム Init コンテナーイメージ」を参照してください。