第3章 AMQ Broker Operator を使用した OpenShift Container Platform での AMQ Broker のデプロイ

3.1. CLI を使用した Operator のインストール

本セクションの手順では、OpenShift コマンドラインインターフェイス (CLI) を使用して、指定の OpenShift プロジェクトで AMQ Broker 7.7 の Operator の最新バージョンをインストールし、デプロイする方法を説明します。後続の手順で、この Operator を使用して一部のブローカーインスタンスをデプロイします。

OperatorHub グラフィカルインターフェイスを使用する AMQ Broker Operator の代替方法については、「Operator Lifecycle Manager を使用した Operator のインストール」 を参照してください。

重要
  • AMQ Broker Operator に付随するカスタムリソース定義 (CRD) をデプロイするには、OpenShift クラスターのクラスター管理者権限が必要です。Operator がデプロイされると、管理者以外のユーザーは対応するカスタムリソース (CR) を使用してブローカーインスタンスを作成できます。通常ユーザーが CR をデプロイできるようにするには、クラスター管理者はまずロールおよびパーミッションを CRD に割り当てる必要があります。詳細は、OpenShift Container Platform ドキュメントの カスタムリソース定義のクラスターロールの作成 を参照してください。
  • 以前にデプロイしている場合:

    • Operator のバージョン 0.15 (つまり、AMQ Broker 7.7 で利用可能な最初のバージョン) では、新規インストールを実行するのではなく、Operator の最新バージョンを使用するようにプロジェクトを アップグレード できます。アップグレードする場合、OpenShift クラスター内の既存の CRD を削除する必要はありません。ただし、アップグレードの一環として、メインブローカーのカスタムリソース (CR) インスタンスをプロジェクトから削除する必要があります。その後、Operator をアップグレードしたら、新しい CR をデプロイしてブローカーデプロイメントを再作成する必要があります。詳細は、proc_br-upgrading-operator-version-0.15-cli_broker-ocp を参照してください。
    • Operator のバージョン 0.13 (つまり、AMQ Broker 7.6 で利用可能なバージョン) では、プロジェクトを アップグレード して、新規インストールするのではなく、Operator の最新バージョンを使用できます。アップグレードする場合、OpenShift クラスター内の既存の CRD を削除する必要はありません。ただし、アップグレードの一環として、メインブローカーのカスタムリソース (CR) インスタンスをプロジェクトから削除する必要があります。その後、Operator をアップグレードしたら、新しい CR をデプロイしてブローカーデプロイメントを再作成する必要があります。詳細は、proc_br-upgrading-operator-version-0.13-cli_broker-ocp を参照してください。
    • Operator のバージョン 0.9 (つまり、AMQ Broker 7.5 で利用可能なバージョン または AMQ Broker 7.4 で提供されている長期サポート (LTS) バージョン) では、プロジェクトを アップグレード して、新規インストールするのではなく、Operator の最新バージョンを使用できます。アップグレードする場合、OpenShift クラスター内の既存の CRD を削除する必要はありません。ただし、アップグレードの一環として、メインブローカーのカスタムリソース (CR) インスタンスをプロジェクトから削除する必要があります。その後、Operator をアップグレードしたら、新しい CR をデプロイしてブローカーデプロイメントを再作成する必要があります。詳細は、proc_br-upgrading-operator-version-0.9-cli_broker-ocp を参照してください。
  • 最新の Operator バージョンの CRD を使用してクラスターを更新する場合、今回の更新はクラスターのすべてのプロジェクトに影響を与えます。以前のバージョンの Operator からデプロイされたブローカー Pod は、それらのステータスを更新できなくなる可能性があります。OpenShift Container Platform Web コンソールで実行中のブローカー Pod の Logs タブをクリックすると、UpdatePodStatus が失敗したことを示すメッセージが表示されます。ただし、そのプロジェクトのブローカー Pod および Operator は予想通りに機能し続けます。影響を受けるプロジェクトに対してこの問題を解決するには、Operator の最新バージョンを使用するようプロジェクトをアップグレードする必要もあります。

3.1.1. Operator コードの取得

この手順では、最新バージョンの AMQ Broker 7.7 用 Operator をインストールするのに必要なコードにアクセスし、準備する方法を説明します。

手順

  1. Web ブラウザーで、AMQ Broker 7.7.0 patchesSoftware Downloads ページに移動します。
  2. Version ドロップダウンリストの値が 7.7.0 に設定され、Patches タブが選択されていることを確認します。
  3. AMQ Broker 7.7.0 Operator Installation and Example Files の横にある Download をクリックします。

    amq-broker-operator-7.7.0-ocp-install-examples.zip 圧縮アーカイブのダウンロードが自動的に開始します。

  4. ダウンロードが完了したら、アーカイブを選択したインストールディレクトリーに移動します。以下の例では、アーカイブを ~/broker/operator という名前のディレクトリーに移動します。

    mkdir ~/broker/operator
    mv amq-broker-operator-7.7.0-ocp-install-examples.zip ~/broker/operator
  5. 選択したインストールディレクトリーで、アーカイブの内容を展開します。以下に例を示します。

    cd ~/broker/operator
    unzip amq-broker-operator-7.7.0-ocp-install-examples.zip
  6. クラスター管理者として OpenShift Container Platform にログインします。以下に例を示します。

    $ oc login -u system:admin
  7. Operator をインストールするプロジェクトを指定します。新規プロジェクトを作成するか、または既存プロジェクトに切り替えることができます。

    1. 新しいプロジェクトを作成します。

      $ oc new-project <project_name>
    2. または、既存のプロジェクトに切り替えます。

      $ oc project <project_name>
  8. Operator で使用するサービスアカウントを指定します。

    1. 展開した Operator アーカイブの deploy ディレクトリーで、service_account.yaml ファイルを開きます。
    2. kind 要素が ServiceAccount に設定されていることを確認します。
    3. metadata セクションで、カスタム名をサービスアカウントに割り当てるか、デフォルト名を使用します。デフォルトの名前は amq-broker-operator です。
    4. プロジェクトにサービスアカウントを作成します。

      $ oc create -f deploy/service_account.yaml
  9. Operator のロール名を指定します。

    1. role.yaml ファイルを開きます。このファイルは、Operator が使用できるリソースを指定し、変更します。
    2. kind 要素が Role に設定されていることを確認します。
    3. metadata セクションで、カスタム名をロールに割り当てるか、デフォルト名を使用します。デフォルトの名前は amq-broker-operator です。
    4. プロジェクトにロールを作成します。

      $ oc create -f deploy/role.yaml
  10. Operator のロールバインディングを指定します。ロールバインディングは、指定した名前に基づいて、事前に作成されたサービスアカウントを Operator ロールにバインドします。

    1. role_binding.yaml ファイルを開きます。ServiceAccountRolename の値が service_account.yaml および role.yaml ファイルで指定された値と一致していることを確認します。以下に例を示します。

      metadata:
          name: amq-broker-operator
      subjects:
          kind: ServiceAccount
          name: amq-broker-operator
      roleRef:
          kind: Role
          name: amq-broker-operator
    2. プロジェクトでロールバインディングを作成します。

      $ oc create -f deploy/role_binding.yaml

3.1.2. CLI を使用した Operator のデプロイ

本セクションの手順では、OpenShift コマンドラインインターフェイス (CLI) を使用して、OpenShift プロジェクトに最新バージョンの AMQ Broker 7.7 の Operator をデプロイする方法を説明します。

重要

以前にデプロイしている場合:

  • Operator のバージョン 0.15 (つまり、AMQ Broker 7.7 で利用可能な最初のバージョン) では、新規インストールを実行するのではなく、Operator の最新バージョンを使用するようにプロジェクトを アップグレード できます。アップグレードする場合、OpenShift クラスター内の既存の CRD を削除する必要はありません。ただし、アップグレードの一環として、メインブローカーのカスタムリソース (CR) インスタンスをプロジェクトから削除する必要があります。その後、Operator をアップグレードしたら、新しい CR をデプロイしてブローカーデプロイメントを再作成する必要があります。詳細は、proc_br-upgrading-operator-version-0.15-cli_broker-ocp を参照してください。
  • Operator のバージョン 0.13 (つまり、AMQ Broker 7.6 で利用可能なバージョン) では、プロジェクトを アップグレード して、新規インストールするのではなく、Operator の最新バージョンを使用できます。アップグレードする場合、OpenShift クラスター内の既存の CRD を削除する必要はありません。ただし、アップグレードの一環として、メインブローカーのカスタムリソース (CR) インスタンスをプロジェクトから削除する必要があります。その後、Operator をアップグレードしたら、新しい CR をデプロイしてブローカーデプロイメントを再作成する必要があります。詳細は、proc_br-upgrading-operator-version-0.13-cli_broker-ocp を参照してください。
  • Operator のバージョン 0.9 (つまり、AMQ Broker 7.5 で利用可能なバージョン または AMQ Broker 7.4 で提供されている長期サポート (LTS) バージョン) では、プロジェクトを アップグレード して、新規インストールするのではなく、Operator の最新バージョンを使用できます。アップグレードする場合、OpenShift クラスター内の既存の CRD を削除する必要はありません。ただし、アップグレードの一環として、メインブローカーのカスタムリソース (CR) インスタンスをプロジェクトから削除する必要があります。その後、Operator をアップグレードしたら、新しい CR をデプロイしてブローカーデプロイメントを再作成する必要があります。詳細は、proc_br-upgrading-operator-version-0.9-cli_broker-ocp を参照してください。
  • Operator のバージョン 0.6 (つまり、AMQ Broker 7.4.0 の Technical Preview バージョン) では、この Operator をそれ以降のバージョン (AMQ Broker 7.7 で利用可能な最新バージョンを含む) に直接アップグレード できません。バージョン 0.6 で使用されるカスタムリソース定義 (CRD) は、それ以降のバージョンの Operator と互換性がありません。代わりに、Operator を新規インストールする必要があります。これには、OpenShift クラスターにインストールされている既存のカスタムリソース定義 (CRD) を削除することが含まれます。これらの手順については、以下のセクションの手順で説明します。

前提条件

  • Operator デプロイメントのために OpenShift プロジェクトを準備している。「Operator コードの取得」 を参照してください。
  • AMQ Broker 7.3 以降では、新しいバージョンの Red Hat Container Registry を使用してコンテナーイメージにアクセスします。この新しいバージョンのレジストリーでは、イメージにアクセスする前に認証されたユーザーである必要がある。本セクションの手順を実行する前に、Red Hat Container Registry Authentication で説明されている手順を完了する必要がある。
  • 永続ストレージでブローカーをデプロイし、OpenShift クラスターに Container-native ストレージがない場合、永続ボリューム (PV) を手動でプロビジョニングし、これらが Operator で要求できるようにする必要がある。たとえば、永続ストレージ (Custom Resource に persistenceEnabled=true を設定して) とともに 2 つのブローカーで設定されるクラスターを作成する場合は、2 つの PV が利用可能である必要がある。デフォルトでは、各ブローカーインスタンスには 2 GiB のストレージが必要です。

    カスタムリソースで persistenceEnabled=false を指定した場合、デプロイされたブローカーは一時ストレージを使用する。一時ストレージは、ブローカー Pod を再起動するたびに、既存のデータが失われることを意味します。

    永続ストレージのプロビジョニングの詳細は、以下を参照すること。

  • デプロイメント内の各ブローカーが永続的なメッセージストレージに必要な Persistent Volume Claim (PVC) のサイズを指定する方法については、「ブローカーのストレージサイズの設定」 を参照してください。

手順

  1. OpenShift Container Platform Web コンソールで、ブローカーをデプロイするプロジェクトを開きます。

    新しいプロジェクトを作成した場合、現在は空です。Deployment、StatefulSet、Pod、Service、または Route がないことを確認します。

  2. プロジェクトに以前のバージョンの AMQ Broker Operator をデプロイした場合は、ブローカーのデプロイ作成に使用したメインブローカーのカスタムリソース (CR) を削除します。メイン CR を削除すると、プロジェクト内の既存のブローカーデプロイメントが削除されます。以下に例を示します。

    oc delete -f deploy/crs/broker_v1alpha1_activemqartemis_cr.yaml.
  3. プロジェクトに以前のバージョンの AMQ Broker Operator をデプロイした場合は、この Operator インスタンスを削除します。以下に例を示します。

    $ oc delete -f deploy/operator.yaml
  4. 以前のバージョンの AMQ Broker Operator 用に OpenShift クラスターにカスタムリソース定義 (CRD) をデプロイした場合は、これらの CRD をクラスターから削除します。以下に例を示します。

    oc delete -f deploy/crds/broker_v1alpha1_activemqartemis_crd.yaml
    oc delete -f deploy/crds/broker_v1alpha1_activemqartemisaddress_crd.yaml
    oc delete -f deploy/crds/broker_v1alpha1_activemqartemisscaledown_crd.yaml
  5. ダウンロードして展開した Operator アーカイブの deploy/crds ディレクトリーに含まれる CRD をデプロイします。Operator をデプロイし、起動する前に最新の CRD を OpenShift クラスターにインストールする必要があります。

    1. メインブローカー CRD をデプロイします。

      $ oc create -f deploy/crds/broker_activemqartemis_crd.yaml
    2. アドレス CRD をデプロイします。

      $ oc create -f deploy/crds/broker_activemqartemisaddress_crd.yaml
    3. スケールダウンコントローラー CRD をデプロイします。

      $ oc create -f deploy/crds/broker_activemqartemisscaledown_crd.yaml
  6. Red Hat Container Registry での認証に使用されるアカウントに関連付けられたプルシークレットを、OpenShift プロジェクトの defaultdeployer、および builder サービスアカウントにリンクします。

    $ oc secrets link --for=pull default <secret-name>
    $ oc secrets link --for=pull deployer <secret-name>
    $ oc secrets link --for=pull builder <secret-name>
    注記

    OpenShift Container Platform 4.1 以降では、Web コンソールを使用して、プルシークレットを AMQ Broker Operator などのコンテナーイメージをデプロイするプロジェクトに関連付けることもできます。そのためには、AdministrationService Accounts をクリックします。Red Hat コンテナーレジストリーでの認証に使用するアカウントに関連付けられたプルシークレットを指定します。

  7. ダウンロードした Operator アーカイブの deploy ディレクトリーで、operator.yaml ファイルを開きます。以下に示すように、spec.containers.image プロパティーの値が AMQ Broker 7.7 の最新の Operator イメージに設定されていることを確認します。

    spec:
        template:
            spec:
                containers:
                    image: registry.redhat.io/amq7/amq-broker-rhel7-operator:0.17
  8. Operator をデプロイします。

    $ oc create -f deploy/operator.yaml

    OpenShift プロジェクトでは、デプロイした amq-broker-operator イメージが新しい Pod で起動します。

    新しい Pod の Events タブの情報は、OpenShift が指定した Operator イメージをデプロイし、OpenShift クラスター内のノードに新しいコンテナーを割り当て、新しいコンテナーを開始したことを確認します。

    さらに、Pod 内の Logs タブをクリックしても、出力には、以下のような行が含まれるはずです。

    ...
    {"level":"info","ts":1553619035.8302743,"logger":"kubebuilder.controller","msg":"Starting Controller","controller":"activemqartemisaddress-controller"}
    {"level":"info","ts":1553619035.830541,"logger":"kubebuilder.controller","msg":"Starting Controller","controller":"activemqartemis-controller"}
    {"level":"info","ts":1553619035.9306898,"logger":"kubebuilder.controller","msg":"Starting workers","controller":"activemqartemisaddress-controller","worker count":1}
    {"level":"info","ts":1553619035.9311671,"logger":"kubebuilder.controller","msg":"Starting workers","controller":"activemqartemis-controller","worker count":1}

    上記の出力では、新たにデプロイされた Operator が Kubernetes と通信していること、ブローカーおよびアドレス指定のコントローラーが実行されていることと、これらのコントローラーが一部のワーカーを起動していることを確認します。

注記

所定の OpenShift プロジェクトに AMQ Interconnect Operator の 単一のインスタンス のみをデプロイすることが推奨されます。具体的には、Operator デプロイメントの replicas 要素を 1 より大きい値に設定したり、同じプロジェクトで Operator を 複数回デプロイしたりすることは推奨されません。

関連情報