2.x バージョン間のアップグレード
- データベースをバックアップします(
plugins/、configure/も一緒に)。 - サービスを停止します:
bin/shutdown.sh。 - 新しいバージョンのリリースパッケージの
lib/とbin/で、古いものを置き換えます。 - 起動します:
bin/startup.sh。Liquibase が新しいバージョンのデータベース移行を自動的に実行し、レディネスプローブは移行の完了後に 200 を返します。
クラスターをアップグレードするときは、古いバージョンと新しいバージョンが同時に読み書きしないように、新しいバージョンを起動する前にすべてのインスタンスを停止します。公開済みの移行は変更されず、すべてのバージョンはサポートするすべてのデータベースで「前のバージョンからのアップグレード」を検証しています。
1.x からの移行
1.x はデータを別のテーブル構造に保存しており、2.x はそれを読みません。移行の方法は、新しいデータベース に 2.x をインストールして初期化を完了し、サービスを停止してから、古いデータベースのアカウント、ロール、メニューを任意のテナントにインポートするというものです。
# まず予行演習:レポートのみを生成し、書き込みはしません
bin/import-legacy.sh --source-url jdbc:mysql://old-db:3306/authx --source-user authx --tenant default
# レポートを確認したうえで正式にインポートします
bin/import-legacy.sh --source-url jdbc:mysql://old-db:3306/authx --source-user authx --tenant default --applyどちらのコマンドも logs/legacy-import-report.json を作成します。レポートには、すでに(またはこれから)作成される内容、スキップされた内容とその理由、古い各オブジェクトに対応する新しい ID が列挙されます。古いデータベースの JDBC ドライバーは drivers/ に置き、パスワードは GRANTFORGE_LEGACY_SOURCE_PASSWORD で提供します(提供しない場合、スクリプトが尋ねます)。インポートを繰り返し実行しても、欠けている内容が補われるだけです。
インポートのルール:
- アカウント:既存のパスワードは保持され、初回ログイン時に新しいハッシュアルゴリズムへ自動的に置き換えられます。2.x のユーザー名ルール(アルファベット、数字、または
._@-で 3〜64 文字)に合致しないアカウント、パスワードがないアカウント、ユーザー名がすでに別のテナントで使われているアカウントはスキップされます。 - ロール:名前は保持され、コードは小文字に変換されます(
GLY→gly)。 - メニューは
legacyアプリケーションのリソースになります。#アドレスのメニューはグループになり、それ以外のアドレスはページになり、ページ配下のメニューはボタンになります。メニューのアドレスとその HTTP メソッドは API リソースapi:<メソッド>:<パス>になり、*で終わるアドレスは<パス>/**となり、文字の接頭辞ではなくパスのセグメント単位でマッチします。レポートに 1 件ずつ列挙されるため、確認できます。 - 移行されるのは明示的な権限付与だけです。1.x ではメニューとして登録されたアドレスを誰でもアクセスできましたが、2.x ではそうなりません。
