7. アップグレード
アプリケーションの新しいバージョンが利用可能になった場合、必要に応じてアプリケーションのアップグレードを行ってください。
各アプリケーションのバージョン番号はセマンティックバージョンニングに準拠しており、以下の方針に従って付与されています。
バージョン |
1.0.0の次のバージョンの例 |
互換 |
DBマイグレーション |
説明 |
---|---|---|---|---|
メジャーアップデート |
2.0.0 |
X |
必要 |
アプリケーションの後方互換が崩れる更新。バージョンごとのアップグレードガイドに従って更新する。 |
マイナーアップデート |
1.1.0 |
O |
場合により必要 |
機能追加が伴う更新。 基本アップグレード手順 にしたがって更新を行う。設定ファイルやDBスキーマの変更の可能性があり、データのマイグレーションが発生する可能性がある。 |
パッチアップデート |
1.0.1 |
O |
不要 |
不具合修正の更新。 基本アップグレード手順 にしたがって更新を行う。通常はアプリケーションのみの修正。 |
7.1. 基本アップグレード手順
使用するイメージのバージョンを上げます。( deployment.zip を使用している場合は、環境変数の
IMAGE_REPOSITORY_BASE
や各サービスのイメージタグの指定を変更します。)イメージをPullし起動します。
注釈
マイナーアップデートの場合はリポジトリが変わる可能性があります。必要に応じてイメージのURLも変更してください。
次のコマンドでRPMを更新します。
yum update \ intdash-api-auth \ intdash-api-broker \ intdash-api-gateway \ intdash-api-measurement \ intdash-api-media \ intdash-api-tenant \ intdash-api-webhook \ intdash-ffmpeg \ intdash-nginx \ intdash-web-admin-console \ intdash-web-authentication \ intdash-web-client-auth \ intdash-web-client-auth-redirector \ intdash-web-edge-finder \ intdash-web-meas-hub \ intdash-web-media-explorer \ intdash-web-my-page \ intdash-web-project-console \ intdash-web-shared-assets \ intdash-web-tenants \ vm2m-data-viz \ vm2m-data-viz-backend \ vm2m-data-viz-plugins-core注釈
メジャーアップデートまたはマイナーアップデートの場合はリポジトリが変わる可能性があります。必要に応じて
/etc/yum.repos.d/intdash.repo
の更新も行ってください。
DBのマイグレーションを行います。
sudo -u intdash intdashd db migrate -c /etc/intdash/intdashd.conf sudo -u intdash authd db migrate -c /etc/intdash/authd.conf sudo -u intdash brokerd db migrate -c /etc/intdash/brokerd.conf sudo -u intdash measurementd db migrate -c /etc/intdash/measurementd.conf sudo -u intdash mediad db migrate -c /etc/intdash/mediad.toml sudo -u intdash webhookd db migrate -c /etc/webhook/webhookd.conf sudo -u intdash datavizd db migrate -c /etc/vm2m-data-viz-backend/datavizd.confエラーが発生した場合は DBマイグレーションに失敗した場合 を参照してください。
最新版のHelmチャートの values.yaml
を確認し、必要に応じて変更します。Helmチャートの values.yaml
の出力方法については Kubernetes(Helm チャート) を参照してください。
次のコマンドを実行してHelmチャートを最新にします。
helm upgrade intdash oci://"<Helmチャートのレジストリ:例 000000000000.dkr.ecr.us-east-1.amazonaws.com>"/charts/intdash \
--version "<チャートのバージョン:例 v1.0.0>" \
-f <values.yamlのパス>
注釈
特定のイメージをパッチバージョンに変更したい場合などには、イメージの指定のみを変更することが可能です。
使用するイメージを変更する場合は values.yaml
で、各サービスやアプリケーションの tag を変更します。
...
intdashApiGateway:
image:
tag: "" <---- 任意のタグ:例 v2.5.0
Helmチャートによる更新の場合は、データベースのマイグレーションは、Pod起動時のinitContainerにより実行されます。 データベースのマイグレーションが成功しているかPodのログで確認してください。 もしエラーが出ている場合は DBマイグレーションに失敗した場合 を参照してください。
注釈
initContainerによるデータベースのマイグレーションは設定により変更が可能です。 詳細は Kubernetes環境でのデータベースマイグレーション設定 を確認してください。
7.2. 特定バージョンへのアップグレード手順
7.2.1. 2023R1から2023R2へのアップグレード(RPM)
2023R2では推奨OSがAmazon Linux 2からRocky Linux 9へ変更されました。2023R1から2023R2への環境の移行は次のような手順で行います。
移行先の環境を準備します。移行先では2023R2の推奨構成に従い環境を構築します(RPMによるインストール手順 参照)。移行先のintdashやWebアプリケーションサービスはすべて止めておきます。
移行元の環境を停止します。
ミドルウェアのデータの移行を行います。移行元のミドルウェアのバックアップを取ります。(特定ミドルウェアの論理バックアップとリストア 参照)
移行先のミドルウェアでリストアを行います。(特定ミドルウェアの論理バックアップとリストア 参照)
APIのデータ移行を行います。移行元の各種サーバーの設定ファイルを移行先にコピーします (ファイルについては 設定リファレンス 参照)。2023R2向けに設定ファイルも修正します。
移行元のサーバー証明書を移行先へコピーします。
(任意)ログをコピーします。ログの出力先は ログの確認 を参照してください。
その他環境独自の設定などがあれば必要に応じて移行先へコピーします。
移行先のintdashやWebアプリケーションを起動します。
DNSの設定を変更します。ドメインの向き先を移行先へ切り替えます。
注釈
ファイルの移動時には所有権にご注意ください。
移行後は移行先の環境において動作確認を行い、想定通りの挙動か、ログでエラーは出ていないかなどを確認します。
7.3. アップグレードTips
7.3.1. Kubernetes環境でのデータベースマイグレーション設定
Helmチャートによりインストールされた環境の場合、データベースのマイグレーションはデフォルトではPodの起動時のinitContainerにより実行されます。
この動作は values.yaml
により変更が可能です。必要に応じて変更します。
バックエンドサービス全体の設定
intdashService:
migration:
job: false <---- trueの場合、Job でマイグレーションを実行する
initContainer: true <---- trueの場合、Container でマイグレーションを実行する
個別のサービスの設定(Measurement Serviceの例)
intdashApiMeasurement:
migration:
job: false <---- trueの場合、Job でマイグレーションを実行する
initContainer: true <---- trueの場合、Container でマイグレーションを実行する
7.3.2. DBマイグレーションに失敗した場合
マイグレーションが失敗しているサービスのログを確認し、失敗した理由を調査します。 失敗した原因を解消できたら、以下の手順でマイグレーションを再実行してください。
マイグレーションの再実行には、対象のサービスの実行ファイル名が必要です。実行ファイル名の一覧は次の通りです。
サービス名 |
実行ファイル名 |
Kubernetes環境のPod内のパス |
RPM/AMI環境でのパス |
---|---|---|---|
intdash APIサービス |
intdashd |
/srv/intdash-api |
/usr/bin |
Measurement Service |
measurementd |
/srv/measurement |
/usr/bin |
Authentication Service |
authd |
/srv/auth |
/usr/bin |
Broker Service |
brokerd |
/srv/broker |
/usr/bin |
Media Service |
mediad |
/srv/media |
/usr/bin |
Webhook Service |
webhookd |
/srv/webhook |
/usr/bin |
Data Visualizer Backend Service |
datavizd |
/srv/dataviz |
/usr/bin |
また、実行には正しい設定ファイルを指定する必要があります。設定ファイルの場所については 設定リファレンス を参照してください。
警告
Kubernetes環境で本手順を実施する場合は、最初に データベースのマイグレーションを無効化してください。
values.yaml
を次のように設定し、helm upgrade
を実施します。
intdashService:
migration:
job: false <----
initContainer: false <----
アプリケーションが使用している現在のスキーマのバージョンを確認します。
# 現在のDBのスキーマバージョンを確認 <アプリケーションの実行ファイル> db -c <設定ファイルのパス> version
注釈
Kubernetesの場合は kubectl を使うことでコンテナ内でコマンドを実行することができます。 以下は、
measurementd
コマンドを実行している例です。kubectl exec -it <サービスのPod> -- /srv/measurement/measurementd db -c <設定ファイルのパス> version
以下のような結果が出力されます。
# スキーマバージョンを23から24に変更するときの出力例 ## 正常時 {"level":"info","ts":"2023-04-24T23:37:01.122529969Z","caller":"db/version.go:23","msg":"current[24] latest[24]"} ## マイグレーション未実施 {"level":"info","ts":"2023-04-24T23:39:08.566724316Z","caller":"db/version.go:23","msg":"current[23] latest[24]"} {"level":"error","ts":"2023-04-24T23:39:08.566756113Z","caller":"authd/main.go:40","msg":"unmatch latest version and current version ...省略 ## マイグレーションが失敗 {"level":"info","ts":"2023-04-24T23:40:36.388985155Z","caller":"db/version.go:23","msg":"current[24] latest[24]"} {"level":"error","ts":"2023-04-24T23:40:36.389022751Z","caller":"authd/main.go:40","msg":"unmatch latest version and current version:...省略
マイグレーションに失敗している場合は、スキーマをマイグレーション実施前のバージョンに戻します。通常は1つ前のバージョンで問題ありません。
# スキーマバージョンを23に強制的に戻す <アプリケーションの実行ファイル> db -c <設定ファイルのパス> set 23
注釈
set サブコマンドはバージョン管理テーブルのバージョンを更新します。アプリケーションデータの変更は実施されません。
マイグレーションを再実行します。
# 最新のバージョンまでマイグレート <アプリケーションの実行ファイル> db -c <設定ファイルのパス> migrate
成功すれば完了です。
7.3.3. アプリケーションが起動しない場合
アプリケーションが起動しない理由はいくつか考えられますが、意図した設定になっていないケースがほとんどです。
どの設定に原因があるのか特定するために起動ログを確認してください。 起動ログから原因を調査し、設定を変更します。
設定変更後、アプリケーションを再起動してください。