6.4. AMQ Broker バージョンの指定によるブローカーコンテナーイメージのアップグレード
以下の手順では、AMQ Broker バージョンを指定して、Operator ベースのブローカーデプロイメントのブローカーコンテナーイメージをアップグレードする方法を説明します。これは、たとえば Operator を AMQ Broker 7.10.0 にアップグレードする際に、CR の spec.upgrades.enabled プロパティーがすでに true に設定され、spec.version プロパティーが 7.9.0 を指定している場合に実行します。ブローカーコンテナーイメージをアップグレードするには、新しい AMQ Broker バージョン (例: 7.10.0) を手動で指定する必要があります。新しいバージョンの AMQ Broker を指定する場合、Operator はこのバージョンに対応するブローカーコンテナーイメージを自動的に選択します。
前提条件
- 「Operator によるコンテナーイメージの選択方法」 で説明されているように、CR をデプロイし、ブローカーコンテナーイメージを明示的に指定しない場合、Operator は使用する適切なコンテナーイメージを自動的に選択します。このセクションで説明されているアップグレードプロセスを使用するには、このデフォルトの動作を使用する必要があります。CR でブローカーコンテナーイメージを直接指定し、デフォルト動作を上書きする場合、Operator は以下で説明されているように、ブローカーコンテナーイメージを自動的に AMQ Broker バージョンに対応するようにアップグレードすることはできません。
手順
ブローカーデプロイメントのメインブローカー CR インスタンスを編集します。
OpenShift コマンドラインインターフェイスの使用:
ブローカーデプロイメントのプロジェクトで CR を編集およびデプロイする権限を持つユーザーとして OpenShift にログインします。
$ oc login -u <user> -p <password> --server=<host:port>-
テキストエディターで、ブローカーデプロイメントに使用した CR ファイルを開きます。たとえば、これは以前にダウンロードおよび抽出した Operator インストールアーカイブの
deploy/crsディレクトリーにあるbroker_activemqartemis_cr.yamlファイルである可能性があります。
OpenShift Container Platform Web コンソールの使用
- ブローカーデプロイメントのプロジェクトに CR を編集およびデプロイする権限を持つユーザーとしてコンソールにログインします。
-
左側のペインで、
をクリックします。 - ActiveMQArtemis CRD をクリックします。
- Instances タブをクリックします。
- プロジェクトの namespace に対応する CR インスタンスを見つけます。
CR インスタンスの場合は、右側の More Options アイコン (3 つの点) をクリックします。Edit ActiveMQArtemis を選択します。
コンソールで、YAML エディターが開き、CR インスタンスを編集できるようになります。
ブローカーコンテナーイメージをアップグレードする AMQ Broker のバージョンを指定するには、CR の
spec.versionプロパティーの値を設定します。以下に例を示します。spec: version: 7.10.0 ...CR の
specセクションで、upgradesセクションを見つけます。このセクションが CR に含まれていない場合は、これを追加します。spec: version: 7.10.0 ... upgrades:upgradesセクションに、enabledおよびminorプロパティーが含まれていることを確認します。spec: version: 7.10.0 ... upgrades: enabled: minor:指定されたバージョンの AMQ Broker に基づくブローカーコンテナーイメージのアップグレードを有効にするには、
enabledプロパティーの値をtrueに設定します。spec: version: 7.10.0 ... upgrades: enabled: true minor:ブローカーのアップグレード動作を定義するには、
minorプロパティーの値を設定します。AMQ Broker のマイナーバージョン間のアップグレードを許可するには 、
minorの値をtrueに設定します。spec: version: 7.10.0 ... upgrades: enabled: true minor: trueたとえば、現在のブローカーコンテナーイメージが
7.9.0に対応し、spec.versionに指定された7.10.0バージョンに対応する新しいイメージが利用できるとします。この場合、Operator は7.9.0および7.10.0のマイナーバージョン間で利用可能なアップグレードがあることを判別します。マイナーバージョン間のアップグレードを可能にする前述の設定に基づいて、Operator によってブローカーのコンテナーイメージがアップグレードされます。反対に、現在のブローカーコンテナーイメージが
7.10.0に対応し、spec.versionに7.10.1という新しい 値を指定するとします。7.10.1に対応するイメージが存在する場合、Operator は、7.10.0と7.10.1のマイクロバージョンの間で、利用可能なアップグレードがあると判断します。マイナーバージョン間のアップグレードのみを許可する前述の設定に基づいて、Operator はブローカーのコンテナーイメージをアップグレードしません。マイクロ AMQ Broker バージョン間のアップグレードを許可するには、
minorの値をfalseに設定します。spec: version: 7.10.0 ... upgrades: enabled: true minor: falseたとえば、現在のブローカーコンテナーイメージが
7.9.0に対応し、spec.versionに指定された7.10.0バージョンに対応する新しいイメージが利用できるとします。この場合、Operator は7.9.0および7.10.0のマイナーバージョン間で利用可能なアップグレードがあることを判別します。前述の設定に基づいて、マイナーバージョン間のアップグレードを許可しない (マイクロバージョン間のアップグレードのみ)、Operator はブローカーのコンテナーイメージをアップグレードしません。反対に、現在のブローカーコンテナーイメージが
7.10.0に対応し、spec.versionに7.10.1という新しい 値を指定するとします。7.10.1に対応するイメージが存在する場合、Operator は、7.10.0と7.10.1のマイクロバージョンの間で、利用可能なアップグレードがあると判断します。マイクロバージョン間のアップグレードを可能にする前述の設定に基づいて、Operator によってブローカーのコンテナーイメージがアップグレードされます。
変更を CR に適用します。
OpenShift コマンドラインインターフェイスの使用:
- CR ファイルを保存します。
ブローカーデプロイメントのプロジェクトに切り替えます。
$ oc project <project_name>CR を適用します。
$ oc apply -f <path/to/broker_custom_resource_instance>.yaml
OpenShift Web コンソールの使用
- CR の編集が完了したら、Save をクリックします。
CR の変更を適用する際に、Operator はまず
spec.versionに指定された AMQ Broker バージョンへのアップグレードが利用可能であることを検証します。アップグレードする無効なバージョンの AMQ Broker を指定している場合 (たとえば、まだ利用できないバージョンなど)、Operator は警告メッセージをログに記録し、それ以上のアクションを取ることができません。ただし、指定されたバージョンにアップグレードでき、
upgrade.enabledおよびupgrades.minorに指定される値を指定すると、デプロイメントの各ブローカーが、新しい AMQ Broker バージョンに対応するブローカーコンテナーイメージを使用するようになります。Operator が使用するブローカーコンテナーイメージは、Operator デプロイメントの
operator.yaml設定ファイルの環境変数で定義されます。環境変数名には、AMQ Broker バージョンの ID が含まれます。たとえば、環境変数RELATED_IMAGE_ActiveMQ_Artemis_Broker_Kubernetes_7100 は AMQ Broker7.10.7 に対応しています。Operator が CR の変更を適用すると、デプロイメントで各ブローカー Pod が再起動し、各 Pod が指定されたイメージバージョンを使用するようにします。デプロイメントに複数のブローカーがある場合、1 つのブローカー Pod のみがシャットダウンし、一度に再起動します。
関連情報
- Operator が環境変数を使用してブローカーコンテナーイメージを選択する方法の詳細は、「Operator によるコンテナーイメージの選択方法」 を参照してください。