Configuration Migrator による移行(専用クラウド環境・セルフマネージド環境)
Configuration Migrator のダウンロード
以下の手順 1〜4 は、移行先環境ではなく Authlete の共有クラウド環境(console.authlete.com)で行います。ここで作成する組織とトークンはイメージの取得にのみ使用し、後述の「準備」セクションで用意する移行先環境の認証情報とは別のものです。
1. 組織の作成
- Authlete 管理コンソールにログインします。
- 自社用の組織を作成します。
- 「組織ID」を控えておきます。
組織の作成画面
2. アクセスの申請
- 「組織ID」と「組織名」を Authlete サポートに伝えます。
- Authlete が、その組織にレジストリへのアクセスを許可します。
3. レジストリ用トークンの作成
- Authlete 管理コンソールで、「読み取り専用」の権限プリセットを選択して組織のトークンを作成します。
- このトークンは
docker loginにのみ使用します。Configuration Migrator のV3_ORG_ACCESS_TOKEN環境変数には使用しないでください。 - 認証に使用するため、「組織ID」とトークンを手元に控えておきます。


4. 認証とイメージの取得
「組織ID」とレジストリ用トークンを使用して Authlete のレジストリにログインし、イメージを取得します。準備
サービスとクライアントの設定の移行を始めるには、稼働中の 2.2/2.3 移行元環境と、別に稼働している Authlete 3.0 移行先環境が必要です。以下の各値は、項目ごとに示す環境変数として Configuration Migrator に設定します(「移行の設定」を参照してください)。 2.2/2.3 移行元環境から、次の情報を用意します。- 環境の API URL(例:
https://api.source-environment):V2_API_URL環境変数で使用します - サービスオーナーの「API キー」(サービスオーナーコンソールの「アカウント情報」ページに表示されます):
V2_SO_API_KEY環境変数で使用します - サービスオーナーの「API シークレット」(サービスオーナーコンソールの「アカウント情報」ページに表示されます):
V2_SO_API_SECRET環境変数で使用します

-
環境の API URL(例:
https://api.destination-environment):V3_API_URL環境変数で使用します -
サービスとクライアントのインポート先となる API サーバーの ID と、作成先となる組織の ID: それぞれ
V3_API_SERVER_ID,V3_ORG_ID環境変数で使用します- コンソールのナビゲーションバーにあるクラスターのドロップダウンでクラスターを選択します。表示されたページの「クラスター情報」にある「クラスターID」が API サーバーの ID、「組織概要」にある「組織ID」が組織の ID です
API サーバーの ID(「クラスターID」)と組織の ID(「組織ID」)
-
IdP の URL(例:
https://login.destination-environment):V3_IDP_URL環境変数で使用します -
サービスとクライアントの作成先となる組織の組織アクセストークン:
V3_ORG_ACCESS_TOKEN環境変数で使用します- 3.0 移行先環境のコンソールの「組織設定」ページの「一般」タブで発行できます。
create_serviceとmodify_serviceの権限を付与して作成する必要があります - イメージの取得に使用するレジストリ用トークンとは別のトークンです
移行先環境の組織アクセストークン
- 3.0 移行先環境のコンソールの「組織設定」ページの「一般」タブで発行できます。
動的に登録されたクライアントを移行するための前提条件
- 2.2 の移行元環境: バージョン
2.2.65+をデプロイし、機能フラグDCR_RAT_ENDPOINTを有効にする必要があります - 2.3 の移行元環境: LTS バージョン
2.3.51+をデプロイし、機能フラグDCR_RAT_ENDPOINTを有効にする必要があります - 3.0 の移行先環境: バージョン
3.0.36+をデプロイし、機能フラグMIGRATE_CLIENT_DCR_ENDPOINTを有効にする必要があります
Configuration Migrator の動作
configuration-migrator は、実行時に次の処理を行います。
- 2.2/2.3 移行元環境からサービスとクライアントを取得します
- 各サービスについて、そのサービスがすでに存在するかを確認し、存在しない場合は IdP を介して 3.0 環境にサービスを作成します
- サービス内の各クライアントについて、そのクライアントがすでに存在するかを確認し、存在しない場合は 3.0 環境にクライアントを作成します
- (クライアントシークレットの移行が有効な場合)クライアントを新規作成したかどうかにかかわらず、クライアントシークレットを確認して揃え、3.0 環境を 2.2/2.3 移行元環境のクライアントシークレットの値で更新します
- (動的に登録されたクライアントの移行が有効で、移行元のクライアントが動的に登録されたクライアントである場合)対応する移行先のクライアントがまだ動的に登録されたクライアントとして設定されていなければ、そのクライアントの設定を確定し、2.2/2.3 移行元のクライアントの登録アクセストークン(
registration_access_token)を設定します - (クライアントの削除が有効な場合)2.2/2.3 移行元環境に存在しなくなった移行先のクライアントを削除します
configuration-migrator は 1 回実行して終了します。移行先環境にすでに存在するサービスとクライアントは再作成しませんが、既存のクライアントについてもクライアントシークレットと動的クライアント登録の設定は揃えます(手順 4・5)。既存のサービスとクライアントのその他の設定は更新しません。
移行の設定
3.0 移行先環境が稼働したら、configuration-migrator を使用して、サービスとクライアントの設定を 2.2/2.3 移行元環境から 3.0 移行先環境へ移せます。動的に登録されたクライアントを移行する場合は、事前に「動的に登録されたクライアントを移行するための前提条件」に示すバージョンの Authlete をデプロイし、機能フラグを有効にしておきます。
configuration-migrator はこの移行をすべて Authlete の API を通じて行います。そのため、サービスとクライアントの設定を移行するには、各環境のエンドポイントと API 認証情報が必要です。
設定項目
必須の設定
任意の設定
CONTINUOUS_SYNC を有効にすると、configuration-migrator は「Configuration Migrator の動作」の手順 1〜6 をループで繰り返し、サイクル間に SYNC_INTERVAL_SECONDS 秒待機します。各サイクルで作成するのは移行元環境に新たに追加されたサービスとクライアントのみで、既存のクライアントについては、シークレットと動的クライアント登録の設定が正しく構成されているかを確認します(対応する設定が有効な場合)。SYNC_CLIENT_DELETION が有効な場合は、移行元環境に存在しなくなった移行先のクライアントも各サイクルで削除します。コンテナーを停止するまで動作し続けます(「移行の実行」を参照してください)。CONTINUOUS_SYNC, SYNC_CLIENT_DELETION, SYNC_INTERVAL_SECONDS, CLIENT_LIST_REQUEST_COUNT は configuration-migrator 1.1 以降で利用できます。移行手順
まずドライランモードで移行を実行して想定どおりの変更内容であることを確認し、その後ドライランモードを無効にして再度実行し、移行を行うことを推奨します。1. 環境の構築と稼働の確認
2.2/2.3 移行元環境と 3.0 移行先環境の API に、configuration-migrator の実行環境からアクセスできることを確認します。
2. Configuration Migrator の設定
前述の表を参照し、正しいエンドポイント、認証情報、サービス ID・組織 ID などの適切なプロパティをconfiguration-migrator に設定します。
ドライランを有効にした(DRY_RUN=true)Docker Compose 設定のサンプルを次に示します。ドライランモードでは、configuration-migrator は両方の環境から読み取りを行い、実行予定の処理をログに出力しますが、作成や書き込みの処理は行いません。
サンプルでは、各設定を同じ名前の環境変数(V2_API_URL, V3_ORG_ACCESS_TOKEN など)から読み取ります。実行前に、シェルまたは Compose ファイルと同じディレクトリーの .env ファイルでこれらを設定してください。
マウントした
volumes のディレクトリーには、サマリーファイルが出力されます。コンテナーは UID 1000 で動作するため、ホスト側のディレクトリーにはこのユーザーが書き込める権限が必要です。3. ドライランモードでの実行
DRY_RUN=true で configuration-migrator を実行し、ログ出力を保存します。
configuration-migrator が 1 回実行して終了するように、CONTINUOUS_SYNC を無効のままにします。実行が完了したら、ログ出力を確認します。この時点ではサービスとクライアントはまだ移行されていませんが、ドライランを無効にして実行したときに作成・更新・削除される内容がログに出力されています。SYNC_CLIENT_DELETION を有効にする予定の場合は、ドライランでも有効にし、ログの [DRY RUN] Removed destination client … の行を確認してください。この行に、削除される予定のクライアントが列挙されます。
4. 移行の実行
実際の移行を行う準備ができたら、Docker Compose ファイルでDRY_RUN=false を設定し、ログ出力を保存しながら configuration-migrator を再度実行します。
configuration-migrator は移行先環境にサービスとクライアントを作成し、クライアントシークレットを更新します。SYNC_CLIENT_DELETION が有効な場合は、移行元環境に存在しない移行先のクライアントも削除します。
CONTINUOUS_SYNC が有効な場合、configuration-migrator は最初のサイクルの後も終了しません。移行元環境でこれ以上クライアントが登録されないことが確実になった時点で、コンテナーを停止してください(例: docker compose stop)。SYNC_CLIENT_DELETION もあわせて有効にしている場合は、移行先環境でクライアントが登録される前(アプリケーションを 3.0 環境へ切り替える前など)に停止してください。停止しないと、それらのクライアントがサイクルごとに削除されます。停止時に完全なサマリーが出力されます。
5. 結果の確認
移行が正常に完了したことを示す主な指標は、Errors の件数が 0 であることです。
configuration-migrator は実行中に各処理をログに出力し、最後にサービスごとのサマリー、続いて全体のサマリーを出力します。サマリーには、各サービスの状態(serviceStatus)、処理されたサービス数、作成されたクライアント数、更新された動的に登録されたクライアント数、更新されたクライアントシークレット数、および削除されたクライアント数(クライアントの削除が有効な場合)が表示されます。個々のサービスやクライアントのエラーは、サマリーより前のログに出力されます。
ネットワークの問題などで configuration-migrator が予期せず停止した場合も、安全に再実行できます。移行先にすでに存在するサービスとクライアントは再作成されず、クライアントシークレットは再度揃えられます。SYNC_CLIENT_DELETION が有効な場合は、再実行時にも、移行元環境に存在しない移行先のクライアントが削除されます。また、移行の成功後に configuration-migrator を再実行して、すべてが正しく移行されたことを確認することもできます。
次の出力サンプルは、2 つのサービスについてのサービスごとのサマリーと全体の移行サマリーの例です。
- My Service(
apiKey=309958490093)- 新たに作成されたサービス(
serviceStatus=createdで示されます) - 合計
1241件のクライアントが作成・移行された 1241件のうち612件は動的に登録されたクライアントであり、動的に登録されたクライアントの移行処理によって追加の更新も正常に行われた- すべてのクライアントが新規のため、すべてのクライアントシークレットが更新された(
Client secrets synced: 1241) - サービスが新規のため、削除対象となる移行先のクライアントはない(
Clients deleted: 0)
- 新たに作成されたサービス(
- Another Service(
apiKey=309958490091)- 既存のサービス(
serviceStatus=already_exists) - このサービスで
121件の新しいクライアントが検出され、移行先環境へ移行された 121件のうち5件は動的に登録されたクライアントであり、動的に登録されたクライアントの移行処理によって追加の更新も正常に行われた- すべてのクライアントが新規のため、すべてのシークレットが更新された(
Client secrets synced: 121) 3件のクライアントは移行先環境に存在するものの移行元環境には存在しないため、削除された(Clients deleted: 3)
- 既存のサービス(
CONTINUOUS_SYNC が有効な場合は、各サイクルの終わりに、サービスごとの 1 行のイテレーションサマリーも出力します。コンテナーを停止すると、それまでに実行したすべてのサイクルを対象とする完全なサマリーを出力します。このモードでは、全体の移行サマリーに Iteration count も表示されます。また、各イベントは合計のみが表示され、上記のサンプルにある attempted, skipped, failed の件数は表示されません。
イテレーションログの出力サンプルを次に示します。直前のイテレーションで行われた処理のイベント指標が含まれています。
- 10 件のクライアントを作成し、そのすべてのシークレットを更新。そのうち 5 件は DCR クライアント
- 同じイテレーション内で 3 件のクライアントを削除
トークン移行(専用クラウド環境・セルフマネージド環境)
トークンはトークン移行ツールによって別途移行します。「Authlete 3.0 へのトークンの移行」を参照してください。Authlete 管理コンソールによる移行(共有クラウド環境のみ)
Authlete の共有クラウド環境にあるアカウントを移行する場合は、Authlete 管理コンソールの UI から移行します。 一般的なアップグレードの流れは次のとおりです。- 新しい Authlete 3.0 環境の Authlete 管理コンソールにログインします
- 移行に必要な数の組織を作成し、設定します
- サービスとクライアントの移行(下記のセクションを参照): 「データインポート/移行」機能を使用して、該当するサービスとクライアントをこの組織にインポートします
- トークン移行: 既存のトークンを新しい 3.0 環境で利用できるようにする必要がある場合のみ実施します
- OAuth サーバー / アプリケーションを更新します
無停止(並行切り替え)の方式を使用する場合は、手順 3 の前に認可サーバーの変更をデプロイしてください。
トークン移行ツールは移行元のデータベースに対する読み取りアクセス権のみを持つため、いかなるデータも変更できません。
サービスとクライアントの移行
- Authlete 管理コンソールにログインし、「組織設定」>「基本設定」>「データインポート/移行」を開きます
- Authlete 2.x のサービスオーナーコンソールにログインし、アカウントのサービスオーナー「API キー」と「API シークレット」をコピーして貼り付けます(「アカウント情報」ページに表示されます)
Authlete 2.x のアカウント情報
- 利用中のクラスターの Authlete API URL を入力します
- 次のいずれかの URL を入力します。
- 「続行」をクリックします
サービスの移行フォーム
- API から、そのアカウントに紐づくサービスの一覧が返されます
- 移行するサービスの横にあるチェックボックスを選択します
- トークン移行ツールを使用する場合は、「Synchronize Client Tokens」と「Migrate Client Secrets」のチェックボックスを選択します。これにより、サービスに属するクライアントが検出され、そのトークンやシークレットが 3.0 環境へ移行されます。この設定は、インポート後にクライアントごとに「クライアント設定」>「基本設定」>「詳細設定」>「Migration Settings」で更新することもできます。
- 「クラスターを選択」のドロップダウンをクリックし、サービスの移行先となるクラスターを選択します
サービスの選択
- 「続行」をクリックします
- 確認画面で「インポート」をクリックします
- Authlete 管理コンソールのナビゲーションに、サービス(と紐づくクライアント)が表示されます
移行の確認