chocott-backstageをちょこっと試す
Backstageとは
社内の開発者向けポータル(IDP: Internal Developer Prtal)を構築できるツール。
Spotifyが自社プロダクトの管理用に作成し、OSSとなった。
現在開発しているサービスの構成情報・担当チームのカタログ表示や技術ドキュメントの集約が可能。また、コンポーネントテンプレートを作成することでArgoCDやGIthubなどと連携しアプリ基盤の共通化、ゴールデンパスの利用ができる。
昨今のPlatform Engineringの需要拡大と共に再注目されている。
chocott-backstage
Backstageはカスタマイズ性の高さ故に、初期セットアップがやや手間である。
そこで、AP CommunicationさんがBackstageを試すために準備してくれたリポジトリテンプレートがあるためこちらを元にBackstageを試してみる。
上記のテンプレートを元に以下のリポジトリを作成した。
Github連携の準備
Backstage用のGithub Appsを作る。
なんとGithub Appsの作り方まで丁寧に書いてくれている!
GithubのAppsページから作成。
Private keyも使用するため作成。
一通り必要な環境変数を展開する。
export AUTH_GITHUB_CLIENT_ID="<Client IDの文字列>"
export AUTH_GITHUB_CLIENT_SECRET="<Secretの文字列>"
export GITHUB_CREDENTIAL_FILE="/<put your folder name>/github-credentials.yaml"
また、パーソナルアカウントを利用しているため以下コメントアウト。
$ diff app-config.local.yaml.sample app-config.local.yaml
31,34c31,34
< githubOrg:
< id: 'github-local'
< orgs:
< - ${GITHUB_ORG}
---
> #githubOrg:
> # id: 'github-local'
> # orgs:
> # - ${GITHUB_ORG}
Backstage用Credentialファイルの作成
appId: app id
clientId: client id
clientSecret: client secret
webhookSecret: webhook-secret
privateKey: |
-----BEGIN RSA PRIVATE KEY-----
...Key content...
-----END RSA PRIVATE KEY-----
先ほど作成したGithub Appsの値で埋める。
webhookSecret
はWebhookを使用しない場合は仮文字列としてwebhook-secret
で設定しておく。
Backstageの起動準備
chocott-backstageはdocker-composeで起動できるようになってます。
しかし、compose.yaml
で指定しているイメージはM1 MacのCPUアーキテクチャに対応しておらず起動できませんでした。
そこで、M1 Mac上でイメージビルドして使えるようにします。
M1 Macで使えるようにする
こちらのコミットのようにcompose.yaml
のディレクトリをトップに移動し、Dockerfileでビルドできるようにしました。
--- a/chocott-contents/deploy/docker-compose/compose.yaml
+++ b/compose.yaml
@@ -2,11 +2,15 @@ version: '3'
services:
backstage:
- image: ghcr.io/ap-communications/chocott-backstage:1.5.0
+ #image: ghcr.io/ap-communications/chocott-backstage:1.5.0
+ image: backstage:latest
+ build:
+ context: .
+ dockerfile: ./packages/backend/Dockerfile
volumes:
- - "../app-config.chocott.yaml:/app/config/app-config.yaml"
+ - "./app-config.local.yaml:/app/config/app-config.yaml"
- "${GITHUB_CREDENTIAL_FILE}:/app/config/github-credentials.yaml"
- command:
+ command:
- "--config"
- "/app/config/app-config.yaml"
ports:
Backstageサーバーの起動
$ export GITHUB_CREDENTIAL_FILE="./github-credentials.yaml"
$ dc up -d
WARN[0000] The "GITHUB_ORG" variable is not set. Defaulting to a blank string.
[+] Building 0.0s (0/0) docker:desktop-linux
[+] Running 3/3
✔ Network chocott-backstage-example_backend Created 0.0s
✔ Container chocott-backstage-example-db-1 Started 0.0s
✔ Container chocott-backstage-example-backstage-1 Started 0.0s
$ dc ps
WARN[0000] The "GITHUB_ORG" variable is not set. Defaulting to a blank string.
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
chocott-backstage-example-backstage-1 backstage:latest "node packages/backend --config app-config.yaml --config app-config.production.yaml --config /app/config/app-config.yaml" backstage 3 seconds ago Up 2 seconds 0.0.0.0:7007->7007/tcp
chocott-backstage-example-db-1 postgres:14 "docker-entrypoint.sh postgres" db 3 seconds ago Up 2 seconds 0.0.0.0:5432->5432/tcp
http://localhost:7007 にアクセスしログイン。表示確認ができた。
新規カタログの作成
カタログの情報を更新して再import。
管理できてる。