6.2. CLI を使用した Operator のアップグレード
本セクションの手順では、OpenShift コマンドラインインターフェイス (CLI) を使用して、異なるバージョンの Operator を AMQ Broker 7.10 で利用可能な最新バージョンに更新する方法を説明します。
6.2.1. 前提条件
-
CLI を使用して最初に CLI を使用して Operator をインストールした場合のみ Operator をアップグレードする必要があります。OperatorHub を使用して Operator をインストールします (つまり、Operator は OpenShift Container Platform Web コンソールのプロジェクトの
に表示されます)、OperatorHub を使用して Operator をアップグレードする必要があります。OperatorHub を使用して Operator をアップグレードする方法については、「OperatorHub を使用した Operator のアップグレード」 を参照してください。
6.2.2. CLI を使用した Operator のアップグレード
OpenShift コマンドラインインターフェイス (CLI) を使用して、Operator を AMQ Broker 7.10 の最新バージョンにアップグレードできます。
手順
- Web ブラウザーで、AMQ Broker 7.10.7 patches の Software Downloads ページに移動します。
-
Version ドロップダウンリストの値が
7.10.7
に設定され、Releases タブが選択されていることを確認します。 AMQ Broker 7.10.7 Operator Installation and Example Files の横にある Download をクリックします。
amq-broker-operator-7.10.7-ocp-install-examples.zip
圧縮アーカイブのダウンロードが自動的に開始されます。ダウンロードが完了したら、アーカイブを選択したインストールディレクトリーに移動します。以下の例では、アーカイブを
~/broker/operator
という名前のディレクトリーに移動します。$ mkdir ~/broker/operator $ mv amq-broker-operator-7.10.7-ocp-install-examples.zip ~/broker/operator
選択したインストールディレクトリーで、アーカイブの内容をデプロイメントします。以下に例を示します。
$ cd ~/broker/operator $ unzip amq-broker-operator-operator-7.10.7-ocp-install-examples.zip
既存の Operator デプロイメントが含まれるプロジェクトの管理者として OpenShift Container Platform にログインします。
$ oc login -u <user>
Operator バージョンをアップグレードする OpenShift プロジェクトに切り替えます。
$ oc project <project-name>
ダウンロードした最新の Operator アーカイブの
deploy
ディレクトリーで、operator.yaml
ファイルを開きます。注記operator.yaml
ファイルでは、Operator は Secure Hash Algorithm (SHA) 値で表されるイメージを使用します。数字記号 (#
) 記号で始まるコメント行は、SHA 値が特定のコンテナーイメージタグに対応していることを示します。-
以前
の Operator デプロイメントの operator.yaml ファイルを開きます。以前の設定で指定したデフォルト以外の値が新しいoperator.yaml
設定ファイルに複製されていることを確認します。 新しい
operator.yaml
ファイルでは、Operator はデフォルトでcontroller-manager
という名前になっています。controller-manager
のすべてのインスタンスをamq-broker-operator
(以前のバージョンの Operator の名前) に置き換えて、ファイルを保存します。以下に例を示します。spec: ... selector matchLabels name: amq-broker-operator ...
Operator に含まれる CRD を更新します。Operator をデプロイする前に、CRD を更新する必要があります。
メインブローカー CRD を更新します。
$ oc apply -f deploy/crds/broker_activemqartemis_crd.yaml
アドレス CRD を更新します。
$ oc apply -f deploy/crds/broker_activemqartemisaddress_crd.yaml
スケールダウンコントローラー CRD を更新します。
$ oc apply -f deploy/crds/broker_activemqartemisscaledown_crd.yaml
セキュリティー CRD を更新します。
$ oc apply -f deploy/crds/broker_activemqartemissecurity_crd.yaml
AMQ Broker Operator 7.10.0 からのアップグレードのみの場合は、Operator と StatefulSet を削除します。
デフォルトでは、新しい Operator は StatefulSet を削除して、7.10.0 で Operator により StatefulSet セレクターに誤って追加されたカスタムと Operator メータリングラベルを削除します。Operator が StatefulSet を削除すると、既存のブローカー Pod も削除されるため、一時的なブローカーの停止が発生します。停止を回避するには、以下の手順を実行して、ブローカー Pod を削除せずに Operator と StatefulSet を削除します。
Operator を削除します。
$ oc delete -f deploy/operator.yaml
--cascade=orphan
オプションを指定して StatefulSet を削除し、ブローカー Pod を孤立させます。孤立したブローカー Pod は、StatefulSet が削除された後も引き続き実行されます。$ oc delete statefulset <statefulset-name> --cascade=orphan
AMQ Broker Operator 7.10.0 または 7.10.1 からアップグレードする場合は、メインブローカー CR に
application
またはActiveMQArtemis
というラベルがdeploymentPlan.labels
属性で設定されているか確認します。これらのラベルは、Operator が Pod にラベルを割り当てるために予約されており、7.10.1 以降ではカスタムラベルとして許可されていません。これらのカスタムラベルがメインブローカー CR で設定されていた場合、Operator が割り当てた Pod のラベルはカスタムラベルによって上書きされました。これらのカスタムラベルのいずれかがメインブローカー CR で設定されている場合は、次の手順を実行して Pod で正しいラベルを復元し、CR からラベルを削除します。
7.10.0 からアップグレードする場合は、前の手順で Operator を削除しています。7.10.1 からアップグレードする場合は、Operator を削除します。
$ oc delete -f deploy/operator.yaml
次のコマンドを実行して、正しい Pod ラベルを復元します。次の例では、ex-aao はデプロイされた StatefulSet の名前です。
$ for pod in $(oc get pods | grep -o '^ex-aao[^ ]*') do; oc label --overwrite pods $pod ActiveMQArtemis=ex-aao application=ex-aao-app; done
CR の
deploymentPlan.labels
属性から、application
ラベルとActiveMQArtemis
ラベルを削除します。ブローカーデプロイメントのプロジェクトに CR をデプロイする権限を持つユーザーとして OpenShift にログインします。
oc login -u <user> -p <password> --server=<host:port>
-
ダウンロードした Operator インストールアーカイブの
deploy/crs
ディレクトリーに含まれるbroker_activemqartemis_cr.yaml
というサンプル CR ファイルを開きます。 -
CR の
deploymentPlan.labels
属性で、application
またはActiveMQArtemis
というカスタムラベルをすべて削除します。 - CR ファイルを保存します。
CR インスタンスをデプロイします。
ブローカーデプロイメントのプロジェクトに切り替えます。
$ oc project <project_name>
CR を適用します。
$ oc apply -f <path/to/broker_custom_resource_instance>.yaml
以前の Operator を削除した場合は、新しい Operator をデプロイします。
$ oc create -f deploy/operator.yaml
更新された Operator 設定を適用します。
$ oc apply -f deploy/operator.yaml
新しい Operator は、以前のブローカーのデプロイメントを認識して管理できます。デプロイメントの CR で自動更新が有効になっている場合、Operator の調整プロセスは各ブローカー Pod をアップグレードします。自動更新が有効になっていない場合は、CR で次の属性を設定することで有効にできます。
spec: ... upgrades: enabled: true minor: true
自動更新を有効にする方法の詳細は、「AMQ Broker バージョンの指定によるブローカーコンテナーイメージのアップグレード」 を参照してください。
注記調整プロセスが開始されない場合は、デプロイをスケーリングすることでプロセスを開始できます。詳細は、「基本的なブローカーインスタンスのデプロイ」 を参照してください。
- 必要に応じて、アップグレードされたブローカーで利用可能な新機能の CR に属性を追加します。