DEV Community

Pallat Anchaleechamaikorn
Pallat Anchaleechamaikorn

Posted on

ทดลอง backstage

วันนี้จะพามาลองติดตั้ง backstage.io ตามคู่มือที่เขาให้ไว้ดูว่ามีติดขัดตรงในเมื่อลองทำจริงบ้าง

เริ่มตั้งแต่หน้านี้เลย https://backstage.io/docs/getting-started/
ที่นี่เขาให้รันคำสั่งเดียวครับ npx @backstage/create-app ซึ่งมีคำแนะนำว่า ก่อนอื่นเราควรมี node version manager สักตัว โดยผมใช้ n ติดตั้งง่ายๆดังนี้

npm install -g n
Enter fullscreen mode Exit fullscreen mode

ผมเลือกใช้ node เวอร์ชันล่าสุด ก็สั่งว่า

sudo n latest
Enter fullscreen mode Exit fullscreen mode

จากนั้นผมก็ up คำสั่ง yarn ด้วย

npm install -g yarn
Enter fullscreen mode Exit fullscreen mode

จากนั้นผมจึงค่อยมาเริ่มตามคู่มือ

npx @backstage/create-app
Enter fullscreen mode Exit fullscreen mode

ตอนที่รันคำสั่งนี้ก็นั่งทำสมาธินิดนึง จนกว่ามันจะให้เราตั้งชื่อ project เราก็ตั้งอะไรไปก็ได้ มันจะสร้าง directory ให้เราตามชื่อนั้น เช่น mybackstage

Alt Text

และให้เลือก database ที่ต้องการใช้ ซึ่ง default มีแค่ sqlite กับ prostgres
เมื่อเสร็จแล้วมันจะขึ้นข้อความแบบนี้

All set! Now you might want to:
Run the app: cd mybackstage && yarn dev
Set up the software catalog: https://backstage.io/docs/features/software-catalog/configuration
Add authentication: https://backstage.io/docs/auth/

เราลองรันดูก็ได้ครับ คำสั่งนี้

cd mybackstage && yarn dev
Enter fullscreen mode Exit fullscreen mode

มันจะเริ่มต้นรัน backstage ในโหมด dev ซึ่งถ้าเราเลือก sqlite มา มันจะลบทิ้งแล้วสร้างใหม่ให้เสมอ ข้อมูลจะถูก reset เป็น default ทุกครั้งที่รันใหม่

ถ้าต้องการหยุดมันก็ ctrl+c หรือ command+c ธรรมดาได้เลย

ตอนนี้เราจะอยู่ใน directory ของโปรเจคเรานะครับคือใน mybackstage

ทีนี้ เวลาที่เราจะ deploy เจ้า backstage มันอาจจะต้องมีพวกค่า config ต่างๆ ผมเลยใช้วิธีสร้างไฟล์ .env ไว้ในเครื่อง แล้วเอา .env ไปใส่ใน .gitignore อีกที เพื่อที่มันจะได้ไม่เข้าไปอยู่ใน repo

โดยเนื้อไฟล์จะมีหน้าตาประมาณนี้

POSTGRES_NAME=some-postgres
GITHUB_TOKEN=xxx
AUTH_GITHUB_CLIENT_SECRET=xxx
POSTGRES_HOST=db
POSTGRES_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASSWORD=mysecretpassword
Enter fullscreen mode Exit fullscreen mode

ค่า GITHUB_TOKEN คือ personal access token ไปสร้างที่เมนูตามรูป เอาไว้เวลาที่เราสร้าง project ใน backstage มันจะไปสร้าง repo ไว้ใน account นี้

Alt Text

ค่า AUTH_GITHUB_CLIENT_SECRET คือค่า Oauth ใน github เช่นกัน เอาไว้ให้มันเข้ามาส่องดู Github Actions ของเราได้ในหน้า CI/CD

Alt Text

เมื่อเรารันมันได้แล้ว เราก็จะมาลอง deploy ด้วย Docker กันตามคู่มือหน้านี้

https://backstage.io/docs/deployment/docker

คู่มือบอกให้รัน 3 คำสั่งเพื่อ build

yarn install --frozen-lockfile
yarn tsc
yarn build
Enter fullscreen mode Exit fullscreen mode

และเราไม่ต้องสร้าง Dockerfile เอง เพราะมันสร้างให้เราไว้แล้ว เราแค่รับคำสั่ง

docker image build . -f packages/backend/Dockerfile --tag backstage

เพื่อสร้าง image แล้วตั้งชื่อว่า backstage ไว้

ตอนที่รัน ผมใช้ postgres จาก docker ง่ายด้วยคำสั่งนี้เลย

docker run --name some-postgres -p 5432:5432 -e POSTGRES_PASSWORD=mysecretpassword -d postgres
Enter fullscreen mode Exit fullscreen mode

เพราะฉะนั้นตอนที่รัน docker ของ backstage จึงต้องมี link ไปเชื่อม network กันด้วย ตามนี้

docker run -it -p 7000:7000 --env-file ./.env --link some-postgres:db --name backstage backstage
Enter fullscreen mode Exit fullscreen mode

สั่งเกตุว่าชื่อ some-postgres มันจะสร้าง alias ชื่อ db ให้ใน network ซึ่งจะเชื่อมโยงกับค่า env ค่า POSTGRES_HOST=db เพื่อให้มันเห็นกันได้ด้วยชื่อ db

เพียงแค่นี้ ก็สามารถ deploy backstage ง่ายๆได้แล้วครับ

Discussion (0)