GitHub でデータ アプリを自動デプロイ
TiDB Cloud は、 JSON 構文を使用してデータ アプリの構成全体をコードとして表現する、 コンフィグレーション as Code (CaC) アプローチを提供します。
データ アプリを GitHub に接続することで、 TiDB Cloud はCaC アプローチを使用して、データ アプリの構成を設定ファイルとして優先 GitHub リポジトリおよびブランチにプッシュできます。
GitHub接続で自動同期とデプロイが有効になっている場合は、GitHub上の設定ファイルを更新することでデータアプリを変更することもできます。設定ファイルの変更をGitHubにプッシュすると、新しい設定がTiDB Cloudに自動的にデプロイされます。
このドキュメントでは、GitHub を使用してデータ アプリを自動的にデプロイする方法と、GitHub 接続を管理する方法について説明します。
始める前に
データ アプリを GitHub に接続する前に、次のものを用意してください。
- GitHub アカウント。
- ターゲット ブランチを含む GitHub リポジトリ。
注記:
GitHubリポジトリは、データアプリを接続した後にデータアプリの構成ファイル保存するために使用されます。設定ファイル内の情報(クラスタIDやエンドポイントURLなど)が機密情報である場合は、パブリックリポジトリではなくプライベートリポジトリを使用してください。
ステップ1. データアプリをGitHubに接続する
データアプリを作成する際に、GitHub に接続できます。詳細については、 データアプリを作成するご覧ください。
アプリの作成中に GitHub 接続を有効にしなかった場合でも、次のように有効にすることができます。
プロジェクトのデータサービスページに移動します。
左側のペインで、対象のデータ アプリの名前をクリックして詳細を表示します。
「設定」タブの「GitHubに接続」エリアで「接続」をクリックします。接続設定用のダイアログボックスが表示されます。
ダイアログ ボックスで、次の手順を実行します。
「GitHub にインストール」をクリックし、画面の指示に従って、 TiDB Cloud Data Service をアプリケーションとしてターゲット リポジトリにインストールします。
「承認」をクリックして、GitHub 上のアプリケーションへのアクセスを承認します。
データ アプリの構成ファイルを保存するターゲット リポジトリ、ブランチ、ディレクトリを指定します。
注記:
- ディレクトリはスラッシュ(
/
)で始まる必要があります。例えば、/mydata
。指定したディレクトリがターゲットリポジトリとブランチに存在しない場合は、自動的に作成されます。 - リポジトリ、ブランチ、ディレクトリの組み合わせは、設定ファイルのパスを識別します。このパスはデータアプリ間で一意である必要があります。指定したパスが既に別のデータアプリで使用されている場合は、新しいパスを指定する必要があります。そうしないと、 TiDB Cloudコンソールで現在のデータアプリ用に設定されたエンドポイントによって、指定したパス内のファイルが上書きされます。
- 指定したパスに別のデータ アプリからコピーされた構成ファイルが含まれており、これらのファイルを現在のデータ アプリにインポートする場合は、 既存のデータアプリの構成をインポートする参照してください。
- ディレクトリはスラッシュ(
TiDB Cloudコンソールまたは GitHub のいずれかで行われたデータ アプリの変更が相互に同期されるようにするには、自動同期とデプロイメントの構成を有効にします。
- 有効にすると、指定したGitHubディレクトリに加えられた変更がTiDB Cloudに自動的にデプロイされ、 TiDB Cloudコンソールに加えられた変更もGitHubにプッシュされます。対応するデプロイ情報とコミット情報は、データアプリのデプロイ履歴で確認できます。
- 無効にすると、指定した GitHub ディレクトリで行われた変更はTiDB Cloudにデプロイされず、 TiDB Cloudコンソールで行われた変更も GitHub にプッシュされません。
[接続の確認]をクリックします。
ステップ2. データアプリの構成をGitHubと同期する
データアプリを作成するときに GitHub 接続が有効になっている場合、 TiDB Cloud は、アプリの作成直後にこのデータ アプリの構成ファイルを GitHub にプッシュします。
アプリ作成後にGitHub接続が有効になっている場合は、データアプリの設定をGitHubと同期するためのデプロイメント操作を実行する必要があります。例えば、 「デプロイメント」タブをクリックし、このデータアプリのデプロイメントを再デプロイします。
デプロイ操作が完了したら、指定したGitHubディレクトリを確認してください。データアプリの設定ファイルがtidb-cloud-data-service
までにディレクトリにコミットされているはずです。これは、データアプリがGitHubに正常に接続していることを意味します。ディレクトリ構造は次のとおりです。
├── <Your Data App directory on GitHub>
│ ├── data_sources
│ │ └── cluster.json # specifies the linked clusters.
│ ├── dataapp_config.json # specifies the Data APP ID, name, type, version, and description.
│ ├── http_endpoints
│ │ ├── config.json # specifies the endpoints.
│ │ └── sql # contains SQL files of the endpoints.
│ │ ├── <method>-<endpoint-path1>.sql
│ │ ├── <method>-<endpoint-path2>.sql
│ │ └── <method>-<endpoint-path3>.sql
ステップ3. データアプリを変更する
自動同期とデプロイメントが有効になっている場合は、GitHub またはTiDB Cloudコンソールを使用してデータ アプリを変更できます。
注記:
GitHub とTiDB Cloudコンソールで同時にデータ アプリを変更した場合、競合を解決するには、コンソールで行った変更を破棄するか、コンソールの変更で GitHub の変更を上書きするかを選択できます。
オプション1: GitHub上のファイルを更新してデータアプリを変更する
設定ファイルを更新するときは、次の点に注意してください。
ファイルディレクトリ | 注記 |
---|---|
data_source/cluster.json | このファイルを更新する際は、リンクされたクラスターにアクセスできることを確認してください。クラスターIDはクラスターURLから取得できます。例えば、クラスターURLがhttps://tidbcloud.com/clusters/1234567891234567890/overview の場合、クラスターIDは1234567891234567890 です。 |
http_endpoints/config.json | エンドポイントを変更するときは、 HTTPエンドポイント構成で説明されているルールに従ってください。 |
http_endpoints/sql/method-<endpoint-path>.sql | http_endpoints/sql ディレクトリ内の SQL ファイルを追加または削除するには、対応するエンドポイント構成も更新する必要があります。 |
datapp_config.json | このファイルのapp_id フィールドは変更しないでください。ただし、 dataapp_config.json ファイルが別のデータアプリからコピーされたもので、現在のデータアプリの ID に更新する必要がある場合は除きます。変更しないと、この変更によってトリガーされるデプロイが失敗します。 |
これらのファイル内のフィールド構成の詳細については、 データアプリの構成ファイル参照してください。
ファイルの変更がコミットされプッシュされると、 TiDB Cloud は最新の変更内容を含むデータアプリを GitHub に自動的にデプロイします。デプロイのステータスとコミット情報は、デプロイ履歴で確認できます。
オプション2: TiDB Cloudコンソールでデータアプリを変更する
TiDB Cloudコンソールでデータアプリのエンドポイントを変更する実行した後 (エンドポイントの変更など)、次のように変更を確認して GitHub にデプロイできます。
右上隅の「デプロイ」をクリックします。変更内容を確認するためのダイアログが表示されます。
レビューに応じて、次のいずれかを実行します。
- 現在の下書きに基づいてさらに変更を加えたい場合は、このダイアログを閉じて変更を加えてください。
- 現在の変更を最後のデプロイメントに戻す場合は、 「下書きを破棄」をクリックします。
- 現在の変更に問題がなければ、変更の説明(オプション)を記入し、 「デプロイてGitHubにプッシュ」をクリックします。デプロイのステータスは上部のバナーに表示されます。
デプロイメントが成功すると、 TiDB Cloudコンソールで行われた変更が自動的に GitHub にプッシュされます。
既存のデータアプリの構成をインポートする
既存のデータ アプリの構成を新しいデータ アプリにインポートするには、次の手順を実行します。
既存のデータ アプリの構成ファイルを GitHub 上の新しいブランチまたはディレクトリにコピーします。
プロジェクトのデータサービスページ目、GitHub に接続せずに新しいデータアプリを作成する 。
自動同期とデプロイメントが有効になっている場合、 新しいデータアプリをGitHubに接続する 。新しいデータアプリのターゲットリポジトリ、ブランチ、ディレクトリを指定する際は、コピーした設定ファイルを含む新しいパスを使用してください。
新しいデータアプリのIDと名前を取得します。左側のペインで新しいデータアプリの名前をクリックすると、右側のペインの「データアプリのプロパティ」領域でアプリIDと名前を取得できます。
GitHub の新しいパスで、
datapp_config.json
ファイルのapp_id
とapp_name
取得した ID と名前に更新し、変更をプッシュします。ファイルの変更が GitHub にプッシュされると、 TiDB Cloud は最新の変更を反映した新しいデータ アプリを自動的にデプロイします。
GitHub からインポートされた構成を表示するには、 TiDB Cloudコンソールの Web ページを更新します。
デプロイメント履歴でデプロイメントのステータスとコミット情報を表示することもできます。
GitHub接続を編集する
データ アプリの GitHub 接続を編集する場合 (リポジトリ、ブランチ、ディレクトリの切り替えなど)、次の手順を実行します。
プロジェクトのデータサービスページに移動します。
左側のペインで、対象のデータ アプリの名前をクリックして詳細を表示します。
GitHubに接続エリアで、 接続設定のダイアログボックスが表示されます。
ダイアログ ボックスで、データ アプリのリポジトリ、ブランチ、ディレクトリを変更します。
注記:
- ディレクトリはスラッシュ(
/
)で始まる必要があります。例えば、/mydata
。指定したディレクトリがターゲットリポジトリとブランチに存在しない場合は、自動的に作成されます。 - リポジトリ、ブランチ、ディレクトリの組み合わせは、設定ファイルのパスを識別します。このパスはデータアプリ間で一意である必要があります。指定したパスが既に別のデータアプリで使用されている場合は、新しいパスを指定する必要があります。そうしないと、 TiDB Cloudコンソールで現在のデータアプリ用に設定されたエンドポイントによって、指定したパス内のファイルが上書きされます。
- 指定したパスに別のデータ アプリからコピーされた構成ファイルが含まれており、これらのファイルを現在のデータ アプリにインポートする場合は、 既存のデータアプリの構成をインポートする参照してください。
- ディレクトリはスラッシュ(
TiDB Cloudコンソールまたは GitHub のいずれかで行われたデータ アプリの変更が相互に同期されるようにするには、自動同期とデプロイメントの構成を有効にします。
- 有効にすると、指定したGitHubディレクトリに加えられた変更がTiDB Cloudに自動的にデプロイされ、 TiDB Cloudコンソールに加えられた変更もGitHubにプッシュされます。対応するデプロイ情報とコミット情報は、データアプリのデプロイ履歴で確認できます。
- 無効にすると、指定した GitHub ディレクトリで行われた変更はTiDB Cloudにデプロイされず、 TiDB Cloudコンソールで行われた変更も GitHub にプッシュされません。
[接続の確認]をクリックします。
GitHub接続を削除する
データ アプリを GitHub に接続したくなくなった場合は、次の手順を実行します。
- プロジェクトのデータサービスページに移動します。
- 左側のペインで、対象のデータ アプリの名前をクリックして詳細を表示します。
- [設定]タブの[GitHub に接続]領域で[切断]をクリックします。
- 切断を確認するには、 [切断] をクリックします。
切断操作後、データ アプリ構成ファイルは GitHub ディレクトリに残りますが、 tidb-cloud-data-service
によって同期されなくなります。