4.5. Fuse Online のアップグレード
時々、パッチとセキュリティー修正が組み込まれた新しいアプリケーションイメージが Fuse Online に対してリリースされます。これらの更新は、Red Hat のエラータ更新チャネルを介して通知されます。その後、Fuse Online イメージをアップグレードできます。
Fuse Online を 7.8 にアップグレードする前に、アップグレード前の Docker イメージへのアクセス の説明にしたがって、Fuse Online バックアップおよびリストアデータベースの Docker イメージへのアクセスを設定する必要があります。
Fuse Online のアップグレード手順は、Fuse Online をインストールした方法によって異なります。
- OperatorHub を使用して Fuse Online をインストールした場合は、OperatorHub を使用した Fuse Online のアップグレード を参照してください。
- インストールスクリプトを使用して Fuse Online をインストールした場合は、インストールスクリプトを使用した Fuse Online のアップグレード を参照してください。
4.5.1. アップグレード前の Docker イメージへのアクセス
デフォルトでは、Fuse Online のアップグレードプロセスは、Fuse Online のバックアップおよび復元データベースの Docker イメージを、registry.redhat.io
からプルするのではなく、docker.io
レジストリーからプルします (既知の問題 https://issues.redhat.com/browse/ENTESB-15364 で説明されているように)。docker.io は
無料ダウンロードにサービス制限を課しているため、Fuse Online のアップグレードプロセスでバックアップのダウンロードとデータベースイメージの復元を試行すると、次のエラーが発生する可能性があります。
error: code = Unknown desc = toomanyrequests: You have reached your pull rate limit
Docker Hub のプルレート制限に関する詳細は、Docker のドキュメント (https://www.docker.com/increase-rate-limits) を参照してください。
Docker の制限によるエラーが発生しないようにするには、Fuse Online のアップグレードを開始する前に Docker イメージにアクセスできることを確認してください。Docker イメージにアクセスする方法は、お使いの OpenShift Container Platform (OCP) バージョンによって異なります。
- OCP 4.6 の場合は、OCP 4.6 での Docker イメージへのアクセス の説明にしたがって、Docker Hub クレデンシャルを既存の syndesis pull secret に追加します。Docker クレデンシャルを syndesis pull secret に追加すると、Docker Hub のアカウントタイプに応じて、API に対する Docker Hub の制限が引き上げられます。
-
OCP 3.11 の場合、OCP 3.11 での Docker イメージへのアクセス の説明に従って、Fuse Online バックアップをプルし、
docker.io
からデータベースイメージをローカルキャッシュに復元します。
4.5.1.1. OCP 4.6 での Docker イメージへのアクセス
Docker の制限エラーが発生しないようにするため、Fuse Online のアップグレードを開始する前に、Docker クレデンシャルを syndesis pull secret に追加します。
前提条件
OpenShift クラスターの管理者権限を持っている必要があります。
手順
Docker Hub クレデンシャルを既存の syndesis pull secret に追加するには、以下を行います。
管理者のクレデンシャルで OpenShift にログインします。
oc login -u system:admin
以下のコマンドを実行して、syndesis pull secret を取得します。
oc get secrets syndesis-pull-secret -o=custom-columns=SECRET:.data.* --no-headers | base64 -d | jq
このコマンドを実行すると、以下のような出力が返されます。ここで <AUTH> は base64 でエンコードされたユーザー名とパスワードに置き換えられます。
{ "auths":{ "registry.redhat.io":{ "username":"<AUTH>", "password":"<AUTH>", "auth":"<AUTH>" }, <You can have more auths elements here> } }
Docker Hub レジストリークレデンシャルを追加するには、pull secret を編集し、PULL_SECRET 変数に保存します。
PULL_SECRET=$(base64 -w 0 <<EOF { "auths":{ "registry.redhat.io":{ "username":"<AUTH>", "password":"<AUTH>", "auth":"<AUTH>" }, <You can have more auths elements here> }, "https://index.docker.io/v1/": { "auth": "<AUTH>" } } } EOF )
syndesis pull secret にパッチを適用するには、以下のコマンドを実行します。
oc apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: syndesis-pull-secret data: .dockerconfigjson: $PULL_SECRET type: kubernetes.io/dockerconfigjson EOF
次のステップ
- OperatorHub を使用して Fuse Online をインストールした場合は、OperatorHub を使用した Fuse Online のアップグレード を参照してください。
- インストールスクリプトを使用して Fuse Online をインストールした場合は、インストールスクリプトを使用した Fuse Online のアップグレード を参照してください。
4.5.1.2. OCP 3.11 での Docker イメージへのアクセス
Docker 制限エラーが発生するのを回避するには、OCP 3.11 で Fuse Online アップグレードプロセスを開始する前に、必要なイメージを docker.io
からローカルキャッシュにプルする必要があります。
前提条件
OpenShift クラスターの管理者権限を持っている必要があります。
手順
OpenShift ユーザー名と OpenShift クラスター URL を使用して OpenShift ノードにログインします。
ssh login <user>@node1.<clusterUrl>
ユーザー名とパスワードを使用して docker にログインします。
sudo docker login -u <username> -p <password> docker.io
PostgreSQL をプルする以下のコマンドを実行します。
sudo docker pull crunchydata/crunchy-pgdump:centos7-10.11-4.2.1 sudo docker pull crunchydata/crunchy-pgrestore:centos7-10.11-4.2.1 sudo docker pull centos:7
PostgreSQL イメージは、OpenShift ノードの内部 docker レジストリーにプルされます。
- 各 OpenShift ノードに、前述の 3 つのステップを実行します。
次のステップ
インストールスクリプトを使用した Fuse Online のアップグレード の手順にしたがって、Fuse Online をアップグレードします。
4.5.2. OperatorHub を使用した Fuse Online のアップグレード
Fuse Online 7.8 は OCP 4.6 より OperatorHub で利用できます。OCP 4.5 を使用している場合は、OCP 4.6 にアップグレードしてから Fuse Online 7.8 をインストールする必要があります。
注記: インストールスクリプトを使用して Fuse Online 7.7 をインストールした場合、インストールスクリプトを使用した Fuse Online のアップグレード の説明にしたがって、インストールスクリプトを使用して Fuse Online 7.8 にアップグレードする必要があります。
Fuse Online をインストールするときは、fuse-online-v7.n
形式でチャネルを指定します。ここで、n
は現在のリリース番号です。たとえば、Fuse Online 7.8 の場合、チャネルは fuse-online-v7.8
になります。
Fuse Online 7.8 の古いバージョンから Fuse Online 7.8 の新しいバージョンへのアップグレードは、Fuse Online のインストール時に選択した Approval Strategy によって異なります。
- Automatic (自動) 更新の場合、新しいバージョンの Fuse Online Operator が使用できるようになると、人的な介入なしで OpenShift Operator Lifecycle Manager (OLM) によって、Fuse Online の稼働中のインスタンスが自動的にアップグレードされます。
- Manual (手動) 更新の場合、Operator の新しいバージョンが使用できるようになると、OLM によって更新リクエストが作成されます。クラスター管理者は、OpenShift ドキュメントの Manually approving a pending Operator upgrade セクションで説明されているように、更新リクエストを手動で承認して Fuse Online Operator を新しいバージョンに更新する必要があります。
インフラストラクチャーのアップグレード中およびアップグレード後も、既存のインテグレーションは引き続き Fuse Online ライブラリーおよび依存関係の古いバージョンで実行されます。更新されたバージョンで実行するには、再パブリッシュする必要があります。
OCP 4.6 以降で、Fuse Online 7.7 を 7.8 にアップグレードする場合は、以下の手順にしたがいます。
手順
- Docker の制限エラーが発生しないようにするには、Fuse Online のアップグレードを開始する前に、アップグレード前の Docker イメージへのアクセス の説明にしたがって docker クレデンシャルを syndesis pull secret に追加します。
Fuse Online Operator をアップグレードするには、以下を行います。
- OpenShift Web コンソールで、Operators > Installed Operators とクリックします。
- Fuse Online Operator をクリックしてから、Subscription をクリックします。
- Channel の横にある Edit アイコンをクリックします。
- fuse-online-v7.8 チャンネルをクリックし、Save をクリックします。
Fuse Online のインストール時に 手動 更新を指定した場合、OpenShift ドキュメントの Manually approving a pending Operator upgrade セクションの手順にしたがって Operator の更新リクエストを承認します。
4.5.3. インストールスクリプトを使用した Fuse Online のアップグレード
OperatorHub ではなく、インストールスクリプトを使用して Fuse Online をインストールした場合、Fuse Online をアップグレードする一般的な手順は次のとおりです。
クラスター管理者は、Fuse Online バックアップおよびリストアデータベースの Docker イメージへのアクセスを設定します。
- OCP 3.11 の場合は、Fuse Online バックアップおよびリストアデータベースイメージを docker.io からローカルキャッシュにプルします。
- OCP 4.6 の場合は、Docker Hub クレデンシャルを既存の syndesis pull secret に追加します。
- 最新の Fuse Online リリースをダウンロードします。
- クラスター管理者から Fuse Online をアップグレードする権限を取得します。
- 更新スクリプトを実行します。
下記条件のアップグレード手順は同じです。
- Fuse Online 7.7 から Fuse Online 7.8
- Fuse Online 7.8 の古いバージョンから Fuse Online 7.8 の新しいバージョン
前提条件
オンサイトで OCP に Fuse Online バージョン 7.7 がインストールされ、稼働している必要があります。または、OCP 3.11 に Fuse Online のバージョン 7.8 がインストールされ、稼働しており、新しいアプリケーションイメージへのアップグレードを検討中です。
以前のバージョンの場合は以下が必要になります。
- OCP で Fuse Online バージョン 7.6 を実行している場合は、7.7 にアップグレード してから 7.8 にアップグレードする必要があります。
- OCP で Fuse Online バージョン 7.5 を実行している場合は、7.6 にアップグレード してから 7.7 にアップグレードする必要があります。
- OCP で Fuse Online バージョン 7.4 を実行している場合は、7.5 にアップグレード してから 7.6 にアップグレードする必要があります。
- OCP で Fuse Online バージョン 7.3 を実行している場合は、7.4 にアップグレード してから 7.5 にアップグレードする必要があります。
- OCP で Fuse Online バージョン 7.2 を実行している場合は、7.3 にアップグレード する必要があります。
- OCP で Fuse Online バージョン 7.1 を実行している場合は、7.2 にアップグレード する必要があります。
-
oc
クライアントツールをインストール済みであり、Fuse Online がインストールされている OCP クラスターに接続されている。 - クラスター管理者権限が必要です。この手順の最初の 2 つのステップで必要になります。
手順
- Docker の制限エラーが発生しないようにするため、クラスター管理者は アップグレード前の Docker イメージへのアクセス の説明にしたがって、Docker イメージへのアクセスを設定します。
クラスター管理者は、Fuse Online パッケージをダウンロードしてして、特定のプロジェクトでユーザーに対して Fuse Online のアップグレード権限を割り当てる必要があります。
以下の場所から Fuse Online インストールスクリプトが含まれるパッケージをダウンロードします。
https://github.com/syndesisio/fuse-online-install/releases/tag/1.11
ファイルシステムの任意の場所で、ダウンロードしたアーカイブをデプロイメントします。
Fuse-online-install-1.11
ディレクトリーには、Fuse Online をアップグレードするためのスクリプトとサポートファイルが含まれています。デプロイメントしたアーカイブが含まれるディレクトリーに移動します。以下に例を示します。
cd fuse-online-install-1.11
以下のように、クラスター管理者アカウントで OpenShift にログインします。
oc login -u admin -p admin
Fuse Online をアップグレードする必要のある OpenShift プロジェクトに切り替えます。
oc project fuse-online-project
Fuse Online のカスタムリソース定義を更新します。
bash install_ocp.sh --setup
そのプロジェクト内だけで、Fuse Online のアップグレード権限を割り当てます。たとえば、以下のコマンドは、
developer
ユーザーに、Fuse Online のアップグレード権限を割り当てます。クラスター管理者がこのコマンドを実行した後に、developer
ユーザーは対象のプロジェクトでのみ (fuse-online-project
) Fuse Online をアップグレードできます。bash install_ocp.sh --grant developer
Fuse Online のアップグレード権限を割り当てられたユーザーは、アプリケーションを実行できます。
以下のように、OpenShift にログインします。
oc login -u developer
以下のように、Fuse Online をアップグレードするプロジェクトに切り替えます。
oc project fuse-online-project
アップグレードするバージョンを確認するには、以下のように
--version
オプションを指定して更新スクリプトを実行します。bash update_ocp.sh --version
以下のような更新スクリプトを実行します。
bash update_ocp.sh
このスクリプトの詳細を確認するには、
$ bash update_ocp.sh --help
を実行します。インフラストラクチャーのアップグレード中およびアップグレード後も、既存のインテグレーションは引き続き Fuse Online ライブラリーおよび依存関係の古いバージョンで実行されます。
次のように稼働中の Fuse Online インテグレーションをアップグレードします。
- Fuse Online で、アップグレードするインテグレーションを選択します。
- Edit を選択します。
- Publish を選択してインテグレーションを再パブリッシュします。
インテグレーションの再パブリッシュを行うと、最新の Fuse Online 依存関係を使用して再ビルドが強制されます。