Backstage の勉強をするにあたって Google Cloud 上で起動してみることにしました。
https://backstage.io/docs/getting-started/
料金をなるべく抑えつつ、サーバーに入ってファイル覗いたりもしたいので、GKE (Google Kubernetes Engine) や Cloud Run ではなく GCE (Google Compute Engine) を使い、ローカル端末から IAP (Identity-Aware Proxy) を使ってアクセスします。
忘れそうなので、最初の接続までだけですが、ざっくりメモしておきます。
※ 当初は IAP の TCP 転送(gcloud compute start-iap-tunnel)で接続しようとしましたが、うまく動作しなかったため SSH ポートフォワードに変更しました。
Backstage を GCE で起動して IAP 経由でアクセスするまで
1. ローカル端末準備
最後に Backstage にアクセスするための、gcloud CLI を実行できてブラウザを利用できる環境を用意。
※ 最初 Cloud Shell でできないかと思ったが上手くいかず。
2. Google Cloud Project 用意
後で掃除しやすいように新しいプロジェクトを用意。
Compute Engine API, IAP API あたりを有効化した気がする。
3. Google Cloud 作業ユーザー権限付与
- Editor
- 各種設定作業用
- Compute インスタンス管理者(v1)(roles/compute.instanceAdmin.v1)
- IAP で SSH アクセスするのに必要
- IAP で保護されたトンネル ユーザー(roles/iap.tunnelResourceAccessor)
- 同上
4. VPC 作成
適当に VPC とサブネットを作成。
5. Google Compute Engine インスタンス作成
- Debian
- ネットワークタグ設定
- 後でファイアウォールルールで使用するため適当に設定
- 外部 IP あり
- 外部公開用ではなく、NAT を使わずに外部からパッケージやソースを取得するため。予約は不要
- 内部 IP アドレスを予約
- Backstage 設定ファイルに記載するため、変わらないように予約
- サービスアカウントなし
- 起動するだけなら無くて OK。必要なら後で割り当て可
6. ファイアウォールルール設定
以下の設定で Inbound 許可ルールを作成
- ネットワーク:4. で作成した VPC、サブネット
- ターゲットタグ:5. で設定したネットワークタグ
- ソースフィルタ:IP範囲
35.235.240.0/20
- IAP の IP アドレス範囲)
- プロトコルとポート:
TCP 22
7. Backstage インストール
- のインスタンスに IAP 経由で SSH ログインして、下記の Prerequisites, 1. Create your Backstage App を実施。
https://backstage.io/docs/getting-started/
Debian だと Prerequisites に書いてあるパッケージは一通りインストールが必要。
この記事記載時点での Node.js の最新バージョン 23 では起動しない (※) ため、22 を使用
※ https://github.com/laverdet/isolated-vm/issues/515 など参照
8. app-config.yaml 確認
app.baseUrl, backend.baseUrl, cors.origin いずれも localhost のままで OK。
9. Backstage アプリ起動
getting-started の 2. Run the Backstage app に従い yarn start
で起動
10. IAP で接続
ローカル端末のターミナルを開き、以下コマンド実行
gcloud compute ssh {5. のインスタンス名} --zone {5. のインスタンスの Zone} --tunnel-through-iap -- -L 3000:localhost:3000 -L 7007:localhost:7007
ローカル端末が Windows の場合
gcloud compute ssh {5. のインスタンス名} --zone {5. のインスタンスの Zone} --tunnel-through-iap -- --ssh-flag="-L 3000:localhost:3000" --ssh-flag "-L 7007:localhost:7007"
ターミナルは開いたままで次へ。
11. ブラウザで Backstage にアクセス
http://localhost:3000