7. アップグレード

アプリケーションの新しいバージョンが利用可能になった場合、必要に応じてアプリケーションのアップグレードを行ってください。

各アプリケーションのバージョン番号はセマンティックバージョンニングに準拠しており、以下の方針に従って付与されています。

バージョン

1.0.0の次のバージョンの例

互換

DBマイグレーション

説明

メジャーアップデート

2.0.0

X

必要

アプリケーションの後方互換が崩れる更新。バージョンごとのアップグレードガイドに従って更新する。

マイナーアップデート

1.1.0

O

場合により必要

機能追加が伴う更新。 基本アップグレード手順 にしたがって更新を行う。設定ファイルやDBスキーマの変更の可能性があり、データのマイグレーションが発生する可能性がある。

パッチアップデート

1.0.1

O

不要

不具合修正の更新。 基本アップグレード手順 にしたがって更新を行う。通常はアプリケーションのみの修正。

7.1. 基本アップグレード手順

  1. 使用するイメージのバージョンを上げます。( deployment.zip を使用している場合は、環境変数の IMAGE_REPOSITORY_BASE や各サービスのイメージタグの指定を変更します。)

  2. イメージをPullし起動します。

注釈

マイナーアップデートの場合はリポジトリが変わる可能性があります。必要に応じてイメージのURLも変更してください。

7.2. 特定バージョンへのアップグレード手順

7.2.1. 2023R1から2023R2へのアップグレード(RPM)

2023R2では推奨OSがAmazon Linux 2からRocky Linux 9へ変更されました。2023R1から2023R2への環境の移行は次のような手順で行います。

  1. 移行先の環境を準備します。移行先では2023R2の推奨構成に従い環境を構築します(RPMによるインストール手順 参照)。移行先のintdashやWebアプリケーションサービスはすべて止めておきます。

  2. 移行元の環境を停止します。

  3. ミドルウェアのデータの移行を行います。移行元のミドルウェアのバックアップを取ります。(特定ミドルウェアの論理バックアップとリストア 参照)

  4. 移行先のミドルウェアでリストアを行います。(特定ミドルウェアの論理バックアップとリストア 参照)

  5. APIのデータ移行を行います。移行元の各種サーバーの設定ファイルを移行先にコピーします (ファイルについては 設定リファレンス 参照)。2023R2向けに設定ファイルも修正します。

  6. 移行元のサーバー証明書を移行先へコピーします。

  7. (任意)ログをコピーします。ログの出力先は ログの確認 を参照してください。

  8. その他環境独自の設定などがあれば必要に応じて移行先へコピーします。

  9. 移行先のintdashやWebアプリケーションを起動します。

  10. 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 <----
  1. アプリケーションが使用している現在のスキーマのバージョンを確認します。

    # 現在の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:...省略
    
  2. マイグレーションに失敗している場合は、スキーマをマイグレーション実施前のバージョンに戻します。通常は1つ前のバージョンで問題ありません。

    # スキーマバージョンを23に強制的に戻す
    <アプリケーションの実行ファイル> db -c <設定ファイルのパス> set 23
    

    注釈

    set サブコマンドはバージョン管理テーブルのバージョンを更新します。アプリケーションデータの変更は実施されません。

  3. マイグレーションを再実行します。

    # 最新のバージョンまでマイグレート
    <アプリケーションの実行ファイル> db -c <設定ファイルのパス> migrate
    

成功すれば完了です。

7.3.3. アプリケーションが起動しない場合

アプリケーションが起動しない理由はいくつか考えられますが、意図した設定になっていないケースがほとんどです。

どの設定に原因があるのか特定するために起動ログを確認してください。 起動ログから原因を調査し、設定を変更します。

設定変更後、アプリケーションを再起動してください。